7#include <pxr/usdImaging/usdVolImaging/tokens.h>
51 "Volume %s is't exported: only OpenVDB file format supported",
56 filepath_ = get_cached_file_path(modifier_->domain->cache_directory,
60 static const pxr::TfToken grid_tokens[] = {pxr::TfToken(
"density", pxr::TfToken::Immortal),
61 pxr::TfToken(
"flame", pxr::TfToken::Immortal),
62 pxr::TfToken(
"shadow", pxr::TfToken::Immortal),
63 pxr::TfToken(
"temperature", pxr::TfToken::Immortal),
64 pxr::TfToken(
"velocity", pxr::TfToken::Immortal)};
66 for (
const auto &grid_name : grid_tokens) {
68 pxr::UsdVolImagingTokens->openvdbAsset,
69 prim_id.AppendElementString(
"VF_" + grid_name.GetString()));
85 pxr::HdDirtyBits
bits = pxr::HdChangeTracker::Clean;
88 bits |= pxr::HdChangeTracker::DirtyMaterialId | pxr::HdChangeTracker::DirtyDoubleSided;
92 bits |= pxr::HdChangeTracker::DirtyTransform;
95 if (
bits == pxr::HdChangeTracker::Clean) {
109 pxr::GfVec3d(modifier_->domain->scale / modifier_->domain->global_size[0],
110 modifier_->domain->scale / modifier_->domain->global_size[1],
111 modifier_->domain->scale / modifier_->domain->global_size[2]));
113 transform *= pxr::GfMatrix4d().SetTranslate(pxr::GfVec3d(-1, -1, -1));
116 float texspace_loc[3] = {0.0f, 0.0f, 0.0f}, texspace_scale[3] = {1.0f, 1.0f, 1.0f};
118 transform *= pxr::GfMatrix4d(1.0f).SetScale(pxr::GfVec3d(texspace_scale)) *
119 pxr::GfMatrix4d(1.0f).SetTranslate(pxr::GfVec3d(texspace_loc));
125std::string VolumeModifierData::get_cached_file_path(
const std::string &directory,
int frame)
void BKE_mesh_texspace_get(Mesh *mesh, float r_texspace_location[3], float r_texspace_size[3])
ModifierData * BKE_modifiers_findby_type(const Object *ob, ModifierType type)
ModifierData * BKE_modifier_get_evaluated(Depsgraph *depsgraph, Object *object, ModifierData *md)
#define BLI_path_join(...)
bool BLI_path_frame(char *path, size_t path_maxncpy, int frame, int digits) ATTR_NONNULL(1)
#define SNPRINTF_UTF8(dst, format,...)
#define CLOG_WARN(clg_ref,...)
#define FLUID_DOMAIN_DIR_DATA
#define FLUID_DOMAIN_EXTENSION_OPENVDB
@ FLUID_DOMAIN_FILE_OPENVDB
HydraSceneDelegate * scene_delegate_
pxr::GfMatrix4d transform
pxr::HdVolumeFieldDescriptorVector field_descriptors_
void write_materials() override
VolumeData(HydraSceneDelegate *scene_delegate, const Object *object, pxr::SdfPath const &prim_id)
VolumeModifierData(HydraSceneDelegate *scene_delegate, const Object *object, pxr::SdfPath const &prim_id)
static bool is_volume_modifier(const Object *object)
void write_transform() override
struct CLG_LogRef * LOG_HYDRA_SCENE
pxr::GfMatrix4d gf_matrix_from_transform(const float m[4][4])