7#include <pxr/usdImaging/usdVolImaging/tokens.h>
24 pxr::SdfPath
const &prim_id)
52 "Volume %s is't exported: only OpenVDB file format supported",
61 static const pxr::TfToken grid_tokens[] = {pxr::TfToken(
"density", pxr::TfToken::Immortal),
62 pxr::TfToken(
"flame", pxr::TfToken::Immortal),
63 pxr::TfToken(
"shadow", pxr::TfToken::Immortal),
64 pxr::TfToken(
"temperature", pxr::TfToken::Immortal),
65 pxr::TfToken(
"velocity", pxr::TfToken::Immortal)};
67 for (
const auto &grid_name : grid_tokens) {
69 pxr::UsdVolImagingTokens->openvdbAsset,
70 prim_id.AppendElementString(
"VF_" + grid_name.GetString()));
86 pxr::HdDirtyBits bits = pxr::HdChangeTracker::Clean;
89 bits |= pxr::HdChangeTracker::DirtyMaterialId | pxr::HdChangeTracker::DirtyDoubleSided;
93 bits |= pxr::HdChangeTracker::DirtyTransform;
96 if (bits == pxr::HdChangeTracker::Clean) {
109 transform = pxr::GfMatrix4d().SetScale(
114 transform *= pxr::GfMatrix4d().SetTranslate(pxr::GfVec3d(-1, -1, -1));
117 float texspace_loc[3] = {0.0f, 0.0f, 0.0f}, texspace_scale[3] = {1.0f, 1.0f, 1.0f};
119 transform *= pxr::GfMatrix4d(1.0f).SetScale(pxr::GfVec3d(texspace_scale)) *
120 pxr::GfMatrix4d(1.0f).SetTranslate(pxr::GfVec3d(texspace_loc));
126std::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(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::HdVolumeFieldDescriptorVector field_descriptors_
void write_materials() override
VolumeModifierData(HydraSceneDelegate *scene_delegate, const Object *object, pxr::SdfPath const &prim_id)
static bool is_volume_modifier(const Object *object)
void write_transform() override
#define ID_LOG(level, msg,...)
struct CLG_LogRef * LOG_HYDRA_SCENE
pxr::GfMatrix4d gf_matrix_from_transform(const float m[4][4])
char cache_directory[1024]
struct FluidDomainSettings * domain