19 #include <UT/UT_Version.h> 26 #if !defined(SESI_OPENVDB) && !defined(SESI_OPENVDB_PRIM) 28 #include <GU/GU_PrimVDB.h> 34 #else // SESI_OPENVDB || SESI_OPENVDB_PRIM 36 #ifndef __HDK_GU_PrimVDB__ 37 #define __HDK_GU_PrimVDB__ 39 #include <GA/GA_PrimitiveDefinition.h> 41 #include <GU/GU_Detail.h> 42 #include <UT/UT_Matrix4.h> 43 #include <UT/UT_VoxelArray.h> 50 class UT_MemoryCounter;
51 class GEO_ConvertParms;
52 typedef GEO_ConvertParms GU_ConvertParms;
60 ~GU_PrimVDB()
override {}
64 GU_PrimVDB(GU_Detail *gdp, GA_Offset offset=GA_INVALID_OFFSET)
65 : GEO_PrimVDB(gdp, offset)
69 int64 getMemoryUsage()
const override;
74 void countMemory(UT_MemoryCounter &counter)
const override;
78 static GA_PrimitiveTypeId theTypeId() {
return theDefinition->getId(); }
82 static void registerMyself(GA_PrimitiveFactory *factory);
85 const GA_PrimitiveDefinition &getTypeDef()
const override 87 UT_ASSERT(theDefinition);
88 return *theDefinition;
93 GEO_Primitive *convert(GU_ConvertParms &parms,
94 GA_PointGroup *usedpts = 0)
override;
95 GEO_Primitive *convertNew(GU_ConvertParms &parms)
override;
100 static void convertVolumesToVDBs(
102 const GU_Detail &src_geo,
103 GU_ConvertParms &parms,
108 bool activate_inside =
true);
114 static void convertVDBs(
116 const GU_Detail &src_geo,
117 GU_ConvertParms &parms,
120 static void convertVDBs(
122 const GU_Detail &src_geo,
123 GU_ConvertParms &parms,
126 bool split_disjoint_volumes);
135 static GU_PrimVDB * build(GU_Detail *gdp,
bool append_points =
true);
144 static SYS_FORCE_INLINE
146 const GEO_PrimVDB* src = NULL,
const char* name = NULL)
148 return GU_PrimVDB::buildFromGridAdapter(gdp, &grid, src, name);
152 static GU_PrimVDB * buildFromPrimVolume(
154 const GEO_PrimVolume &vol,
156 const bool flood_sdf =
false,
157 const bool prune =
false,
158 const float tolerance = 0.0,
159 const bool activate_inside_sdf =
true);
164 static void convertPrimVolumeToPolySoup(
166 const GEO_PrimVolume &src_vol);
168 void normal(NormalComp &output)
const override;
169 void normal(NormalCompD &output)
const override;
173 void syncAttrsFromMetadata();
180 static SYS_FORCE_INLINE
181 void createGridAttrsFromMetadata(
182 const GEO_PrimVDB& prim,
186 GU_PrimVDB::createGridAttrsFromMetadataAdapter(prim, &grid, gdp);
195 static SYS_FORCE_INLINE
196 void createAttrsFromMetadata(
197 GA_AttributeOwner owner,
202 GU_PrimVDB::createAttrsFromMetadataAdapter(owner, element, &meta_map, gdp);
209 static SYS_FORCE_INLINE
210 void createMetadataFromGridAttrs(
212 const GEO_PrimVDB& prim,
213 const GEO_Detail& gdp)
215 GU_PrimVDB::createMetadataFromGridAttrsAdapter(&grid, prim, gdp);
223 static SYS_FORCE_INLINE
224 void createMetadataFromAttrs(
226 GA_AttributeOwner owner,
228 const GEO_Detail& geo)
230 GU_PrimVDB::createMetadataFromAttrsAdapter(&meta_map, owner, element, geo);
240 void expandBorderFromPrimVolume(
241 const GEO_PrimVolume &vol,
244 GEO_Primitive * convertToNewPrim(
246 GU_ConvertParms &parms,
248 bool split_disjoint_volumes,
249 bool &success)
const;
250 GEO_Primitive * convertToPrimVolume(
252 GU_ConvertParms &parms,
253 bool split_disjoint_volumes)
const;
254 GEO_Primitive * convertToPoly(
256 GU_ConvertParms &parms,
259 bool &success)
const;
261 static GU_PrimVDB* buildFromGridAdapter(
266 static void createGridAttrsFromMetadataAdapter(
267 const GEO_PrimVDB& prim,
270 static void createMetadataFromGridAttrsAdapter(
275 static void createAttrsFromMetadataAdapter(
276 GA_AttributeOwner owner,
278 const void* meta_map_ptr,
281 static void createMetadataFromAttrsAdapter(
283 GA_AttributeOwner owner,
285 const GEO_Detail& geo);
289 static GA_PrimitiveDefinition *theDefinition;
290 friend class GU_PrimitiveFactory;
291 SYS_DEPRECATED_PUSH_DISABLE()
293 SYS_DEPRECATED_POP_DISABLE()
302 #endif // __HDK_GU_PrimVDB__ 304 #endif // SESI_OPENVDB || SESI_OPENVDB_PRIM
Definition: AttributeTransferUtil.h:34
SharedPtr< GridBase > Ptr
Definition: Grid.h:80
Abstract base class for typed grids.
Definition: Grid.h:77