67 Abc::P3fArraySamplePtr getPositions()
const {
return m_positions; }
68 Abc::Int32ArraySamplePtr getFaceIndices()
const {
return m_faceIndices; }
69 Abc::Int32ArraySamplePtr getFaceCounts()
const {
return m_faceCounts; }
72 int32_t getFaceVaryingInterpolateBoundary()
const
73 {
return m_faceVaryingInterpolateBoundary; }
75 int32_t getFaceVaryingPropagateCorners()
const
76 {
return m_faceVaryingPropagateCorners; }
78 int32_t getInterpolateBoundary()
const
79 {
return m_interpolateBoundary; }
82 Abc::Int32ArraySamplePtr getCreaseIndices()
const
83 {
return m_creaseIndices; }
85 Abc::Int32ArraySamplePtr getCreaseLengths()
const
86 {
return m_creaseLengths; }
88 Abc::FloatArraySamplePtr getCreaseSharpnesses()
const
89 {
return m_creaseSharpnesses; }
92 Abc::Int32ArraySamplePtr getCornerIndices()
const
93 {
return m_cornerIndices; }
95 Abc::FloatArraySamplePtr getCornerSharpnesses()
const
96 {
return m_cornerSharpnesses; }
99 Abc::Int32ArraySamplePtr getHoles()
const {
return m_holes; }
102 std::string getSubdivisionScheme()
const
103 {
return m_subdScheme; }
105 Abc::V3fArraySamplePtr getVelocities()
const {
return m_velocities; }
108 Abc::Box3d getSelfBounds()
const {
return m_selfBounds; }
112 return m_positions && m_faceIndices && m_faceCounts;
118 m_velocities.reset();
119 m_faceIndices.reset();
120 m_faceCounts.reset();
122 m_faceVaryingInterpolateBoundary = 0;
123 m_faceVaryingPropagateCorners = 0;
124 m_interpolateBoundary = 0;
126 m_creaseIndices.reset();
127 m_creaseLengths.reset();
128 m_creaseSharpnesses.reset();
130 m_cornerIndices.reset();
131 m_cornerSharpnesses.reset();
135 m_subdScheme =
"catmull-clark";
137 m_selfBounds.makeEmpty();
140 ALEMBIC_OPERATOR_BOOL( valid() );
143 friend class ISubDSchema;
145 Abc::P3fArraySamplePtr m_positions;
146 Abc::V3fArraySamplePtr m_velocities;
147 Abc::Int32ArraySamplePtr m_faceIndices;
148 Abc::Int32ArraySamplePtr m_faceCounts;
150 int32_t m_faceVaryingInterpolateBoundary;
151 int32_t m_faceVaryingPropagateCorners;
152 int32_t m_interpolateBoundary;
155 Abc::Int32ArraySamplePtr m_creaseIndices;
156 Abc::Int32ArraySamplePtr m_creaseLengths;
157 Abc::FloatArraySamplePtr m_creaseSharpnesses;
160 Abc::Int32ArraySamplePtr m_cornerIndices;
161 Abc::FloatArraySamplePtr m_cornerSharpnesses;
164 Abc::Int32ArraySamplePtr m_holes;
167 std::string m_subdScheme;
170 Abc::Box3d m_selfBounds;
190 m_faceSetsLoaded =
false;
200 const std::string &iName,
206 init( iArg0, iArg1 );
218 init( iArg0, iArg1 );
228 MeshTopologyVariance getTopologyVariance()
const;
239 size_t getNumSamples()
const;
244 if ( m_positionsProperty.valid() )
246 return m_positionsProperty.getTimeSampling();
250 return getObject().getArchive().getTimeSampling( 0 );
254 void get( Sample &iSamp,
264 Abc::IInt32ArrayProperty getFaceCountsProperty()
const
265 {
return m_faceCountsProperty; }
266 Abc::IInt32ArrayProperty getFaceIndicesProperty()
const
267 {
return m_faceIndicesProperty; }
268 Abc::IP3fArrayProperty getPositionsProperty()
const
269 {
return m_positionsProperty; }
271 Abc::IInt32Property getFaceVaryingInterpolateBoundaryProperty()
const
272 {
return m_faceVaryingInterpolateBoundaryProperty; }
274 Abc::IInt32Property getFaceVaryingPropagateCornersProperty()
const
275 {
return m_faceVaryingPropagateCornersProperty; }
277 Abc::IInt32Property getInterpolateBoundaryProperty()
const
278 {
return m_interpolateBoundaryProperty; }
280 Abc::IInt32ArrayProperty getCreaseIndicesProperty()
const
281 {
return m_creaseIndicesProperty; }
282 Abc::IInt32ArrayProperty getCreaseLengthsProperty()
const
283 {
return m_creaseLengthsProperty; }
284 Abc::IFloatArrayProperty getCreaseSharpnessesProperty()
const
285 {
return m_creaseSharpnessesProperty; }
287 Abc::IInt32ArrayProperty getCornerIndicesProperty()
const
288 {
return m_cornerIndicesProperty; }
289 Abc::IFloatArrayProperty getCornerSharpnessesProperty()
const
290 {
return m_cornerSharpnessesProperty; }
292 Abc::IInt32ArrayProperty getHolesProperty()
const {
return m_holesProperty; }
294 Abc::IStringProperty getSubdivisionSchemeProperty()
const
295 {
return m_subdSchemeProperty; }
297 Abc::IV3fArrayProperty getVelocitiesProperty()
const
298 {
return m_velocitiesProperty; }
300 IV2fGeomParam getUVsParam()
const
315 m_positionsProperty.reset();
316 m_velocitiesProperty.reset();
317 m_faceIndicesProperty.reset();
318 m_faceCountsProperty.reset();
320 m_faceVaryingInterpolateBoundaryProperty.reset();
321 m_faceVaryingPropagateCornersProperty.reset();
322 m_interpolateBoundaryProperty.reset();
324 m_creaseIndicesProperty.reset();
325 m_creaseLengthsProperty.reset();
326 m_creaseSharpnessesProperty.reset();
328 m_cornerIndicesProperty.reset();
329 m_cornerSharpnessesProperty.reset();
331 m_holesProperty.reset();
333 m_subdSchemeProperty.reset();
337 IGeomBaseSchema<SubDSchemaInfo>::reset();
344 return ( IGeomBaseSchema<SubDSchemaInfo>::valid() &&
345 m_positionsProperty.valid() &&
346 m_faceIndicesProperty.valid() &&
347 m_faceCountsProperty.valid() );
352 void getFaceSetNames( std::vector <std::string> &oFaceSetNames );
353 IFaceSet getFaceSet(
const std::string &iFaceSetName );
354 bool hasFaceSet(
const std::string &iFaceSetName );
371 Abc::IP3fArrayProperty m_positionsProperty;
372 Abc::IInt32ArrayProperty m_faceIndicesProperty;
373 Abc::IInt32ArrayProperty m_faceCountsProperty;
376 Abc::IInt32Property m_faceVaryingInterpolateBoundaryProperty;
377 Abc::IInt32Property m_faceVaryingPropagateCornersProperty;
378 Abc::IInt32Property m_interpolateBoundaryProperty;
381 Abc::IInt32ArrayProperty m_creaseIndicesProperty;
382 Abc::IInt32ArrayProperty m_creaseLengthsProperty;
383 Abc::IFloatArrayProperty m_creaseSharpnessesProperty;
386 Abc::IInt32ArrayProperty m_cornerIndicesProperty;
387 Abc::IFloatArrayProperty m_cornerSharpnessesProperty;
390 Abc::IInt32ArrayProperty m_holesProperty;
393 Abc::IStringProperty m_subdSchemeProperty;
396 IV2fGeomParam m_uvsParam;
398 IV3fArrayProperty m_velocitiesProperty;
402 bool m_faceSetsLoaded;
403 std::map <std::string, IFaceSet> m_faceSets;
405 void loadFaceSetNames();