5#include <pxr/imaging/hd/bprim.h>
6#include <pxr/imaging/hd/tokens.h>
7#include <pxr/imaging/hd/volumeFieldSchema.h>
8#include <pxr/usd/usdHydra/tokens.h>
9#include <pxr/usd/usdVol/tokens.h>
10#include <pxr/usdImaging/usdVolImaging/tokens.h>
24 pxr::SdfPath
const &prim_id)
40 if (volume->runtime->grids) {
48 pxr::UsdVolImagingTokens->openvdbAsset,
49 prim_id.AppendElementString(
"VF_" + grid_name));
69 ID_LOGN(2,
"Volume field %s", desc.fieldId.GetText());
76 ID_LOG(2,
"%s", desc.fieldId.GetText());
77 scene_delegate_->GetRenderIndex().RemoveBprim(desc.fieldPrimType, desc.fieldId);
86 pxr::HdDirtyBits bits = pxr::HdChangeTracker::Clean;
89 bits = pxr::HdChangeTracker::AllDirty;
93 bits |= pxr::HdChangeTracker::DirtyMaterialId | pxr::HdChangeTracker::DirtyDoubleSided;
97 bits |= pxr::HdChangeTracker::DirtyTransform;
100 if (bits == pxr::HdChangeTracker::Clean) {
110 if (key == pxr::HdVolumeFieldSchemaTokens->filePath) {
113 if (key == pxr::HdVolumeFieldSchemaTokens->fieldIndex) {
114 return pxr::VtValue(0);
116 if (key == pxr::UsdHydraTokens->textureMemory) {
117 return pxr::VtValue(0.0f);
119 return pxr::VtValue();
124 if (key == pxr::HdVolumeFieldSchemaTokens->fieldName) {
125 std::string name =
id.GetName();
126 return pxr::VtValue(pxr::TfToken(name.substr(name.find(
"VF_") + 3)));
135 return pxr::SdfPath();
General operations, lookup, etc. for materials.
int BKE_object_material_count_eval(const struct Object *ob)
struct Material * BKE_object_material_get_eval(struct Object *ob, short act)
int BKE_volume_num_grids(const Volume *volume)
bool BKE_volume_load(const Volume *volume, const Main *bmain)
const char * BKE_volume_grids_frame_filepath(const Volume *volume)
const blender::bke::VolumeGridData * BKE_volume_grid_get(const Volume *volume, int grid_index)
void BKE_volume_unload(Volume *volume)
HydraSceneDelegate * scene_delegate_
MaterialData * get_or_create_material(const Material *mat)
virtual void write_transform()
pxr::SdfPath material_id() const override
pxr::HdVolumeFieldDescriptorVector field_descriptors_
void available_materials(Set< pxr::SdfPath > &paths) const override
pxr::HdVolumeFieldDescriptorVector field_descriptors() const
void write_materials() override
pxr::VtValue get_data(pxr::TfToken const &key) const override
VolumeData(HydraSceneDelegate *scene_delegate, const Object *object, pxr::SdfPath const &prim_id)
#define ID_LOG(level, msg,...)
#define ID_LOGN(level, msg,...)
std::string get_name(const VolumeGridData &grid)