Alembic Version 1.1

Loading...
Searching...
No Matches
OSubD.h
Go to the documentation of this file.
1//-*****************************************************************************
2//
3// Copyright (c) 2009-2014,
4// Sony Pictures Imageworks, Inc. and
5// Industrial Light & Magic, a division of Lucasfilm Entertainment Company Ltd.
6//
7// All rights reserved.
8//
9// Redistribution and use in source and binary forms, with or without
10// modification, are permitted provided that the following conditions are
11// met:
12// * Redistributions of source code must retain the above copyright
13// notice, this list of conditions and the following disclaimer.
14// * Redistributions in binary form must reproduce the above
15// copyright notice, this list of conditions and the following disclaimer
16// in the documentation and/or other materials provided with the
17// distribution.
18// * Neither the name of Sony Pictures Imageworks, nor
19// Industrial Light & Magic nor the names of their contributors may be used
20// to endorse or promote products derived from this software without specific
21// prior written permission.
22//
23// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34//
35//-*****************************************************************************
36
37#ifndef Alembic_AbcGeom_OSubD_h
38#define Alembic_AbcGeom_OSubD_h
39
40#include <map>
41#include <Alembic/Util/Export.h>
42#include <Alembic/AbcGeom/Foundation.h>
43#include <Alembic/AbcGeom/SchemaInfoDeclarations.h>
44#include <Alembic/AbcGeom/OGeomBase.h>
45#include <Alembic/AbcGeom/OFaceSet.h>
46#include <Alembic/AbcGeom/OGeomParam.h>
47
48 namespace Alembic {
49 namespace AbcGeom {
50 namespace ALEMBIC_VERSION_NS {
51
52//-*****************************************************************************
53// for default values for int scalar properties here
54 static ALEMBIC_EXPORT_CONST
55int32_t ABC_GEOM_SUBD_NULL_INT_VALUE( INT_MIN / 2 );
56
57//-*****************************************************************************
58 class ALEMBIC_EXPORT OSubDSchema : public OGeomBaseSchema<SubDSchemaInfo>
59{
60 public:
61 //-*************************************************************************
62 // SUBD SCHEMA SAMPLE TYPE
63 //-*************************************************************************
64 class Sample
65 {
66 public:
69 Sample() { reset(); }
70
75 Sample( const Abc::P3fArraySample &iPositions,
76 const Abc::Int32ArraySample &iFaceIndices,
77 const Abc::Int32ArraySample &iFaceCounts,
78
79 const Abc::Int32ArraySample &iCreaseIndices =
80 Abc::Int32ArraySample(),
81 const Abc::Int32ArraySample &iCreaseLengths =
82 Abc::Int32ArraySample(),
83 const Abc::FloatArraySample &iCreaseSharpnesses =
84 Abc::FloatArraySample(),
85
86 const Abc::Int32ArraySample &iCornerIndices =
87 Abc::Int32ArraySample(),
88 const Abc::FloatArraySample &iCornerSharpnesses =
89 Abc::FloatArraySample(),
90
91 const Abc::Int32ArraySample &iHoles = Abc::Int32ArraySample()
92 )
93
94 : m_positions( iPositions )
95 , m_faceIndices( iFaceIndices )
96 , m_faceCounts( iFaceCounts )
97 , m_faceVaryingInterpolateBoundary( ABC_GEOM_SUBD_NULL_INT_VALUE )
98 , m_faceVaryingPropagateCorners( ABC_GEOM_SUBD_NULL_INT_VALUE )
99 , m_interpolateBoundary( ABC_GEOM_SUBD_NULL_INT_VALUE )
100 , m_creaseIndices ( iCreaseIndices )
101 , m_creaseLengths ( iCreaseLengths )
102 , m_creaseSharpnesses ( iCreaseSharpnesses )
103 , m_cornerIndices ( iCornerIndices )
104 , m_cornerSharpnesses ( iCornerSharpnesses )
105 , m_holes ( iHoles )
106 , m_subdScheme ( "catmull-clark" )
107 {}
108
109 // main stuff
110 const Abc::P3fArraySample &getPositions() const { return m_positions; }
111 void setPositions( const Abc::P3fArraySample &iSmp )
112 { m_positions = iSmp; }
113
114 const Abc::Int32ArraySample &getFaceIndices() const { return m_faceIndices; }
115 void setFaceIndices( const Abc::Int32ArraySample &iSmp )
116 { m_faceIndices = iSmp; }
117
118 const Abc::Int32ArraySample &getFaceCounts() const { return m_faceCounts; }
119 void setFaceCounts( const Abc::Int32ArraySample &iCnt )
120 { m_faceCounts = iCnt; }
121
122
123 // misc subd stuff
124 int32_t getFaceVaryingInterpolateBoundary() const
125 { return m_faceVaryingInterpolateBoundary; }
126 void setFaceVaryingInterpolateBoundary( int32_t i )
127 { m_faceVaryingInterpolateBoundary = i; }
128
129 int32_t getFaceVaryingPropagateCorners() const
130 { return m_faceVaryingPropagateCorners; }
131 void setFaceVaryingPropagateCorners( int32_t i )
132 { m_faceVaryingPropagateCorners = i; }
133
134 int32_t getInterpolateBoundary() const
135 { return m_interpolateBoundary; }
136 void setInterpolateBoundary( int32_t i )
137 { m_interpolateBoundary = i; }
138
139 // creases
140 const Abc::Int32ArraySample &getCreaseIndices() const
141 { return m_creaseIndices; }
142 void setCreaseIndices( const Abc::Int32ArraySample &iCreaseIndices )
143 { m_creaseIndices = iCreaseIndices; }
144
145 const Abc::Int32ArraySample &getCreaseLengths() const
146 { return m_creaseLengths; }
147 void setCreaseLengths( const Abc::Int32ArraySample &iCreaseLengths )
148 { m_creaseLengths = iCreaseLengths; }
149
150 const Abc::FloatArraySample &getCreaseSharpnesses() const
151 { return m_creaseSharpnesses; }
152 void setCreaseSharpnesses( const Abc::FloatArraySample
153 &iCreaseSharpnesses )
154 { m_creaseSharpnesses = iCreaseSharpnesses; }
155
156 void setCreases( const Abc::Int32ArraySample &iCreaseIndices,
157 const Abc::Int32ArraySample &iCreaseLengths )
158 {
159 m_creaseIndices = iCreaseIndices;
160 m_creaseLengths = iCreaseLengths;
161 }
162
163 void setCreases( const Abc::Int32ArraySample &iCreaseIndices,
164 const Abc::Int32ArraySample &iCreaseLengths,
165 const Abc::FloatArraySample &iCreaseSharpnesses )
166 {
167 m_creaseIndices = iCreaseIndices;
168 m_creaseLengths = iCreaseLengths;
169 m_creaseSharpnesses = iCreaseSharpnesses;
170 }
171
172 // corners
173 const Abc::Int32ArraySample &getCornerIndices() const
174 { return m_cornerIndices; }
175 void setCornerIndices( const Abc::Int32ArraySample &iCornerIndices )
176 { m_cornerIndices = iCornerIndices; }
177
178 const Abc::FloatArraySample &getCornerSharpnesses() const
179 { return m_cornerSharpnesses; }
180 void setCornerSharpnesses( const Abc::FloatArraySample
181 &iCornerSharpnesses )
182 { m_cornerSharpnesses = iCornerSharpnesses; }
183
184 void setCorners( const Abc::Int32ArraySample &iCornerIndices,
185 const Abc::FloatArraySample &iCornerSharpnesses )
186 {
187 m_cornerIndices = iCornerIndices;
188 m_cornerSharpnesses = iCornerSharpnesses;
189 }
190
191 // Holes
192 const Abc::Int32ArraySample &getHoles() const
193 { return m_holes; }
194 void setHoles( const Abc::Int32ArraySample &iHoles )
195 { m_holes = iHoles; }
196
197 // subdivision scheme
198 std::string getSubdivisionScheme() const
199 { return m_subdScheme; }
200 void setSubdivisionScheme( const std::string &iScheme )
201 { m_subdScheme = iScheme; }
202
203 // bounding boxes
204 const Abc::Box3d &getSelfBounds() const { return m_selfBounds; }
205 void setSelfBounds( const Abc::Box3d &iBnds )
206 { m_selfBounds = iBnds; }
207
208 // velocities accessor
209 const Abc::V3fArraySample &getVelocities() const { return m_velocities; }
210 void setVelocities( const Abc::V3fArraySample &iVelocities )
211 { m_velocities = iVelocities; }
212
213 // UVs; need to set these outside the Sample constructor
214 const OV2fGeomParam::Sample &getUVs() const { return m_uvs; }
215 void setUVs( const OV2fGeomParam::Sample &iUVs )
216 { m_uvs = iUVs; }
217
218 void reset()
219 {
220 m_positions.reset();
221 m_faceIndices.reset();
222 m_faceCounts.reset();
223
224 m_faceVaryingInterpolateBoundary = ABC_GEOM_SUBD_NULL_INT_VALUE;
225 m_faceVaryingPropagateCorners = ABC_GEOM_SUBD_NULL_INT_VALUE;
226 m_interpolateBoundary = ABC_GEOM_SUBD_NULL_INT_VALUE;
227
228 m_creaseIndices.reset();
229 m_creaseLengths.reset();
230 m_creaseSharpnesses.reset();
231
232 m_cornerIndices.reset();
233 m_cornerSharpnesses.reset();
234
235 m_holes.reset();
236
237 m_subdScheme = "catmull-clark";
238
239 m_velocities.reset();
240
241 m_selfBounds.makeEmpty();
242
243 m_uvs.reset();
244 }
245
246 bool isPartialSample() const
247 {
248 if( !m_positions.getData() && !m_faceIndices.getData() && !m_faceCounts.getData() )
249 {
250 if( m_uvs.getVals() || m_velocities.getData() ||
251 (m_faceVaryingInterpolateBoundary != ABC_GEOM_SUBD_NULL_INT_VALUE) ||
252 (m_faceVaryingPropagateCorners != ABC_GEOM_SUBD_NULL_INT_VALUE) ||
253 (m_interpolateBoundary != ABC_GEOM_SUBD_NULL_INT_VALUE) ||
254 m_creaseIndices.getData() ||
255 m_creaseLengths.getData() || m_creaseSharpnesses.getData() ||
256 m_cornerIndices.getData() || m_cornerSharpnesses.getData() ||
257 m_holes.getData() )
258 {
259 return true;
260 }
261 }
262
263 return false;
264 }
265
266 protected:
267 friend class OSubDSchema;
268
269 Abc::P3fArraySample m_positions;
270 Abc::Int32ArraySample m_faceIndices;
271 Abc::Int32ArraySample m_faceCounts;
272
273 int32_t m_faceVaryingInterpolateBoundary;
274 int32_t m_faceVaryingPropagateCorners;
275 int32_t m_interpolateBoundary;
276
277 // Creases
278 Abc::Int32ArraySample m_creaseIndices;
279 Abc::Int32ArraySample m_creaseLengths;
280 Abc::FloatArraySample m_creaseSharpnesses;
281
282 // Corners
283 Abc::Int32ArraySample m_cornerIndices;
284 Abc::FloatArraySample m_cornerSharpnesses;
285
286 // Holes
287 Abc::Int32ArraySample m_holes;
288
289 // subdivision scheme
290 std::string m_subdScheme;
291
292 // bounds
293 Abc::Box3d m_selfBounds;
294
295 Abc::V3fArraySample m_velocities;
296
297 // UVs
298 OV2fGeomParam::Sample m_uvs;
299
300 }; // end OSubDSchema::Sample
301
302 //-*************************************************************************
303 // SUBD SCHEMA
304 //-*************************************************************************
305 public:
308 typedef OSubDSchema this_type;
309
310 //-*************************************************************************
311 // CONSTRUCTION, DESTRUCTION, ASSIGNMENT
312 //-*************************************************************************
313
316 OSubDSchema()
317 {
318 m_selectiveExport = false;
319 m_numSamples = 0;
320 m_timeSamplingIndex = 0;
321 }
322
329 OSubDSchema( AbcA::CompoundPropertyWriterPtr iParent,
330 const std::string &iName,
331 const Abc::Argument &iArg0 = Abc::Argument(),
332 const Abc::Argument &iArg1 = Abc::Argument(),
333 const Abc::Argument &iArg2 = Abc::Argument(),
334 const Abc::Argument &iArg3 = Abc::Argument() );
335
342 OSubDSchema( Abc::OCompoundProperty iParent,
343 const std::string &iName,
344 const Abc::Argument &iArg0 = Abc::Argument(),
345 const Abc::Argument &iArg1 = Abc::Argument(),
346 const Abc::Argument &iArg2 = Abc::Argument() );
347
349 OSubDSchema(const OSubDSchema& iCopy)
350 : OGeomBaseSchema<SubDSchemaInfo>()
351 {
352 *this = iCopy;
353 }
354
356
357 //-*************************************************************************
358 // SCHEMA STUFF
359 //-*************************************************************************
360
363 AbcA::TimeSamplingPtr getTimeSampling() const
364 {
365 if( m_positionsProperty.valid() )
366 {
367 return m_positionsProperty.getTimeSampling();
368 }
369 else
370 {
371 return getObject().getArchive().getTimeSampling( 0 );
372 }
373 }
374
375 //-*************************************************************************
376 // SAMPLE STUFF
377 //-*************************************************************************
378
381 size_t getNumSamples() const
382 { return m_numSamples; }
383
386 void set( const Sample &iSamp );
387
390 void setFromPrevious( );
391
392 void setTimeSampling( uint32_t iIndex );
393 void setTimeSampling( AbcA::TimeSamplingPtr iTime );
394
395 //-*************************************************************************
396 // ABC BASE MECHANISMS
397 // These functions are used by Abc to deal with errors, validity,
398 // and so on.
399 //-*************************************************************************
400
403 void reset()
404 {
405 m_positionsProperty.reset();
406 m_faceIndicesProperty.reset();
407 m_faceCountsProperty.reset();
408
409 m_faceVaryingInterpolateBoundaryProperty.reset();
410 m_faceVaryingPropagateCornersProperty.reset();
411 m_interpolateBoundaryProperty.reset();
412
413 m_creaseIndicesProperty.reset();
414 m_creaseLengthsProperty.reset();
415 m_creaseSharpnessesProperty.reset();
416
417 m_cornerIndicesProperty.reset();
418 m_cornerSharpnessesProperty.reset();
419
420 m_holesProperty.reset();
421
422 m_subdSchemeProperty.reset();
423
424 m_velocitiesProperty.reset();
425
426 m_uvsParam.reset();
427
428 m_faceSets.clear ();
429
430 OGeomBaseSchema<SubDSchemaInfo>::reset();
431 }
432
435 bool valid() const
436 {
437 return ( OGeomBaseSchema<SubDSchemaInfo>::valid() &&
438 m_positionsProperty.valid() &&
439 m_faceIndicesProperty.valid() &&
440 m_faceCountsProperty.valid() ) ||
441 m_selectiveExport;
442 }
443
444 // FaceSet stuff
445 OFaceSet & createFaceSet( const std::string &iFaceSetName );
447 void getFaceSetNames( std::vector <std::string> & oFaceSetNames );
448 OFaceSet getFaceSet( const std::string &iFaceSetName );
449 bool hasFaceSet( const std::string &iFaceSetName );
450
451
454 void setUVSourceName(const std::string & iName);
455
458 ALEMBIC_OVERRIDE_OPERATOR_BOOL( OSubDSchema::valid() );
459
460 protected:
461 void init( uint32_t iTsIdx, bool isSparse );
462
466 void selectiveSet( const Sample &iSamp );
467
468 Abc::OP3fArrayProperty m_positionsProperty;
469 Abc::OInt32ArrayProperty m_faceIndicesProperty;
470 Abc::OInt32ArrayProperty m_faceCountsProperty;
471
472 // misc
473 Abc::OInt32Property m_faceVaryingInterpolateBoundaryProperty;
474 Abc::OInt32Property m_faceVaryingPropagateCornersProperty;
475 Abc::OInt32Property m_interpolateBoundaryProperty;
476
477 // Creases
478 Abc::OInt32ArrayProperty m_creaseIndicesProperty;
479 Abc::OInt32ArrayProperty m_creaseLengthsProperty;
480 Abc::OFloatArrayProperty m_creaseSharpnessesProperty;
481
482 // Corners
483 Abc::OInt32ArrayProperty m_cornerIndicesProperty;
484 Abc::OFloatArrayProperty m_cornerSharpnessesProperty;
485
486 // Holes
487 Abc::OInt32ArrayProperty m_holesProperty;
488
489 // subdivision scheme
490 Abc::OStringProperty m_subdSchemeProperty;
491
492 Abc::OV3fArrayProperty m_velocitiesProperty;
493
494 // UVs
495 OV2fGeomParam m_uvsParam;
496
497
498 // optional source name for the UVs
499 std::string m_uvSourceName;
500
501 private:
502 void initCreases(uint32_t iNumSamples);
503 void initCorners(uint32_t iNumSamples);
504 void initHoles(uint32_t iNumSamples);
505
506 // FaceSets created on this SubD
507 std::map <std::string, OFaceSet> m_faceSets;
508
509 // Write out only some properties (UVs, normals).
510 // This is to export data to layer into another file later.
511 bool m_selectiveExport;
512
513 // Number of times OSubDSchema::set() has been called
514 size_t m_numSamples;
515
516 uint32_t m_timeSamplingIndex;
517
518 void createSubDSchemeProperty();
519
520 void createFaceVaryingInterpolateBoundaryProperty();
521
522 void createFaceVaryingPropagateCornersProperty();
523
524 void createInterpolateBoundaryProperty();
525
526 void createVelocitiesProperty();
527
528 void createUVsProperty( const Sample &iSamp );
529
530 void createPositionsProperty();
531
532 friend class OFaceSetSchema;;
533};
534
535//-*****************************************************************************
536// SCHEMA OBJECT
537//-*****************************************************************************
538 typedef Abc::OSchemaObject<OSubDSchema> OSubD;
539
540 typedef Util::shared_ptr< OSubD > OSubDPtr;
541
542} // End namespace ALEMBIC_VERSION_NS
543
544 using namespace ALEMBIC_VERSION_NS;
545
546} // End namespace AbcGeom
547} // End namespace Alembic
548
549#endif
Foundation.h
SchemaInfoDeclarations.h
Export.h
ALEMBIC_EXPORT_CONST
#define ALEMBIC_EXPORT_CONST
Definition Export.h:53
ALEMBIC_EXPORT
#define ALEMBIC_EXPORT
Definition Export.h:51
OFaceSet.h
OGeomBase.h
OGeomParam.h
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OGeomBaseSchema< SubDSchemaInfo >::OGeomBaseSchema
OGeomBaseSchema()
Definition OGeomBase.h:74
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OGeomBaseSchema::reset
virtual void reset()
Definition OGeomBase.h:110
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OGeomBaseSchema::valid
virtual bool valid() const
Definition OGeomBase.h:119
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample
Definition OSubD.h:65
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getFaceVaryingPropagateCorners
int32_t getFaceVaryingPropagateCorners() const
Definition OSubD.h:129
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getVelocities
const Abc::V3fArraySample & getVelocities() const
Definition OSubD.h:209
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_faceIndices
Abc::Int32ArraySample m_faceIndices
Definition OSubD.h:270
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getCornerIndices
const Abc::Int32ArraySample & getCornerIndices() const
Definition OSubD.h:173
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_faceCounts
Abc::Int32ArraySample m_faceCounts
Definition OSubD.h:271
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::Sample
Sample()
Definition OSubD.h:69
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setHoles
void setHoles(const Abc::Int32ArraySample &iHoles)
Definition OSubD.h:194
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getCreaseIndices
const Abc::Int32ArraySample & getCreaseIndices() const
Definition OSubD.h:140
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_faceVaryingPropagateCorners
int32_t m_faceVaryingPropagateCorners
Definition OSubD.h:274
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setInterpolateBoundary
void setInterpolateBoundary(int32_t i)
Definition OSubD.h:136
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setPositions
void setPositions(const Abc::P3fArraySample &iSmp)
Definition OSubD.h:111
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCornerSharpnesses
void setCornerSharpnesses(const Abc::FloatArraySample &iCornerSharpnesses)
Definition OSubD.h:180
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::OSubDSchema
friend class OSubDSchema
Definition OSubD.h:267
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_velocities
Abc::V3fArraySample m_velocities
Definition OSubD.h:295
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_creaseLengths
Abc::Int32ArraySample m_creaseLengths
Definition OSubD.h:279
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_uvs
OV2fGeomParam::Sample m_uvs
Definition OSubD.h:298
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_creaseIndices
Abc::Int32ArraySample m_creaseIndices
Definition OSubD.h:278
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::reset
void reset()
Definition OSubD.h:218
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getUVs
const OV2fGeomParam::Sample & getUVs() const
Definition OSubD.h:214
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getCreaseSharpnesses
const Abc::FloatArraySample & getCreaseSharpnesses() const
Definition OSubD.h:150
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getCreaseLengths
const Abc::Int32ArraySample & getCreaseLengths() const
Definition OSubD.h:145
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setVelocities
void setVelocities(const Abc::V3fArraySample &iVelocities)
Definition OSubD.h:210
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::Sample
Sample(const Abc::P3fArraySample &iPositions, const Abc::Int32ArraySample &iFaceIndices, const Abc::Int32ArraySample &iFaceCounts, const Abc::Int32ArraySample &iCreaseIndices=Abc::Int32ArraySample(), const Abc::Int32ArraySample &iCreaseLengths=Abc::Int32ArraySample(), const Abc::FloatArraySample &iCreaseSharpnesses=Abc::FloatArraySample(), const Abc::Int32ArraySample &iCornerIndices=Abc::Int32ArraySample(), const Abc::FloatArraySample &iCornerSharpnesses=Abc::FloatArraySample(), const Abc::Int32ArraySample &iHoles=Abc::Int32ArraySample())
Definition OSubD.h:75
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getFaceIndices
const Abc::Int32ArraySample & getFaceIndices() const
Definition OSubD.h:114
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setFaceVaryingInterpolateBoundary
void setFaceVaryingInterpolateBoundary(int32_t i)
Definition OSubD.h:126
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getSelfBounds
const Abc::Box3d & getSelfBounds() const
Definition OSubD.h:204
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_faceVaryingInterpolateBoundary
int32_t m_faceVaryingInterpolateBoundary
Definition OSubD.h:273
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getPositions
const Abc::P3fArraySample & getPositions() const
Definition OSubD.h:110
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCreases
void setCreases(const Abc::Int32ArraySample &iCreaseIndices, const Abc::Int32ArraySample &iCreaseLengths)
Definition OSubD.h:156
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getInterpolateBoundary
int32_t getInterpolateBoundary() const
Definition OSubD.h:134
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_subdScheme
std::string m_subdScheme
Definition OSubD.h:290
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_creaseSharpnesses
Abc::FloatArraySample m_creaseSharpnesses
Definition OSubD.h:280
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCornerIndices
void setCornerIndices(const Abc::Int32ArraySample &iCornerIndices)
Definition OSubD.h:175
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setFaceVaryingPropagateCorners
void setFaceVaryingPropagateCorners(int32_t i)
Definition OSubD.h:131
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_cornerIndices
Abc::Int32ArraySample m_cornerIndices
Definition OSubD.h:283
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCreaseIndices
void setCreaseIndices(const Abc::Int32ArraySample &iCreaseIndices)
Definition OSubD.h:142
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getCornerSharpnesses
const Abc::FloatArraySample & getCornerSharpnesses() const
Definition OSubD.h:178
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setFaceCounts
void setFaceCounts(const Abc::Int32ArraySample &iCnt)
Definition OSubD.h:119
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setSelfBounds
void setSelfBounds(const Abc::Box3d &iBnds)
Definition OSubD.h:205
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCreases
void setCreases(const Abc::Int32ArraySample &iCreaseIndices, const Abc::Int32ArraySample &iCreaseLengths, const Abc::FloatArraySample &iCreaseSharpnesses)
Definition OSubD.h:163
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCorners
void setCorners(const Abc::Int32ArraySample &iCornerIndices, const Abc::FloatArraySample &iCornerSharpnesses)
Definition OSubD.h:184
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getSubdivisionScheme
std::string getSubdivisionScheme() const
Definition OSubD.h:198
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_positions
Abc::P3fArraySample m_positions
Definition OSubD.h:269
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getFaceVaryingInterpolateBoundary
int32_t getFaceVaryingInterpolateBoundary() const
Definition OSubD.h:124
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getFaceCounts
const Abc::Int32ArraySample & getFaceCounts() const
Definition OSubD.h:118
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setFaceIndices
void setFaceIndices(const Abc::Int32ArraySample &iSmp)
Definition OSubD.h:115
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_holes
Abc::Int32ArraySample m_holes
Definition OSubD.h:287
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_interpolateBoundary
int32_t m_interpolateBoundary
Definition OSubD.h:275
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setSubdivisionScheme
void setSubdivisionScheme(const std::string &iScheme)
Definition OSubD.h:200
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::getHoles
const Abc::Int32ArraySample & getHoles() const
Definition OSubD.h:192
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_cornerSharpnesses
Abc::FloatArraySample m_cornerSharpnesses
Definition OSubD.h:284
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCreaseSharpnesses
void setCreaseSharpnesses(const Abc::FloatArraySample &iCreaseSharpnesses)
Definition OSubD.h:152
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setCreaseLengths
void setCreaseLengths(const Abc::Int32ArraySample &iCreaseLengths)
Definition OSubD.h:147
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::m_selfBounds
Abc::Box3d m_selfBounds
Definition OSubD.h:293
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::setUVs
void setUVs(const OV2fGeomParam::Sample &iUVs)
Definition OSubD.h:215
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::Sample::isPartialSample
bool isPartialSample() const
Definition OSubD.h:246
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_interpolateBoundaryProperty
Abc::OInt32Property m_interpolateBoundaryProperty
Definition OSubD.h:475
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_faceCountsProperty
Abc::OInt32ArrayProperty m_faceCountsProperty
Definition OSubD.h:470
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_subdSchemeProperty
Abc::OStringProperty m_subdSchemeProperty
Definition OSubD.h:490
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_creaseLengthsProperty
Abc::OInt32ArrayProperty m_creaseLengthsProperty
Definition OSubD.h:479
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_holesProperty
Abc::OInt32ArrayProperty m_holesProperty
Definition OSubD.h:487
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::OSubDSchema
OSubDSchema(Abc::OCompoundProperty iParent, const std::string &iName, const Abc::Argument &iArg0=Abc::Argument(), const Abc::Argument &iArg1=Abc::Argument(), const Abc::Argument &iArg2=Abc::Argument())
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_creaseSharpnessesProperty
Abc::OFloatArrayProperty m_creaseSharpnessesProperty
Definition OSubD.h:480
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::getNumSamples
size_t getNumSamples() const
Definition OSubD.h:381
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_faceVaryingInterpolateBoundaryProperty
Abc::OInt32Property m_faceVaryingInterpolateBoundaryProperty
Definition OSubD.h:473
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_creaseIndicesProperty
Abc::OInt32ArrayProperty m_creaseIndicesProperty
Definition OSubD.h:478
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::setUVSourceName
void setUVSourceName(const std::string &iName)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::selectiveSet
void selectiveSet(const Sample &iSamp)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::init
void init(uint32_t iTsIdx, bool isSparse)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::getFaceSetNames
void getFaceSetNames(std::vector< std::string > &oFaceSetNames)
Appends the names of any FaceSets for this SubD.
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::valid
bool valid() const
Definition OSubD.h:435
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_uvsParam
OV2fGeomParam m_uvsParam
Definition OSubD.h:495
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::reset
void reset()
Definition OSubD.h:403
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::OSubDSchema
OSubDSchema(AbcA::CompoundPropertyWriterPtr iParent, const std::string &iName, const Abc::Argument &iArg0=Abc::Argument(), const Abc::Argument &iArg1=Abc::Argument(), const Abc::Argument &iArg2=Abc::Argument(), const Abc::Argument &iArg3=Abc::Argument())
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::OSubDSchema
OSubDSchema(const OSubDSchema &iCopy)
Copy constructor.
Definition OSubD.h:349
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::setTimeSampling
void setTimeSampling(uint32_t iIndex)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_velocitiesProperty
Abc::OV3fArrayProperty m_velocitiesProperty
Definition OSubD.h:492
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::setTimeSampling
void setTimeSampling(AbcA::TimeSamplingPtr iTime)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::OSubDSchema
OSubDSchema()
Definition OSubD.h:316
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::createFaceSet
OFaceSet & createFaceSet(const std::string &iFaceSetName)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_uvSourceName
std::string m_uvSourceName
Definition OSubD.h:499
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_faceIndicesProperty
Abc::OInt32ArrayProperty m_faceIndicesProperty
Definition OSubD.h:469
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::this_type
OSubDSchema this_type
Definition OSubD.h:308
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_cornerSharpnessesProperty
Abc::OFloatArrayProperty m_cornerSharpnessesProperty
Definition OSubD.h:484
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::setFromPrevious
void setFromPrevious()
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::set
void set(const Sample &iSamp)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_faceVaryingPropagateCornersProperty
Abc::OInt32Property m_faceVaryingPropagateCornersProperty
Definition OSubD.h:474
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_positionsProperty
Abc::OP3fArrayProperty m_positionsProperty
Definition OSubD.h:468
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::getFaceSet
OFaceSet getFaceSet(const std::string &iFaceSetName)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::hasFaceSet
bool hasFaceSet(const std::string &iFaceSetName)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::getTimeSampling
AbcA::TimeSamplingPtr getTimeSampling() const
Default assignment operator used.
Definition OSubD.h:363
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::OFaceSetSchema
friend class OFaceSetSchema
Definition OSubD.h:532
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::ALEMBIC_OVERRIDE_OPERATOR_BOOL
ALEMBIC_OVERRIDE_OPERATOR_BOOL(OSubDSchema::valid())
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDSchema::m_cornerIndicesProperty
Abc::OInt32ArrayProperty m_cornerIndicesProperty
Definition OSubD.h:483
Alembic::Abc::ALEMBIC_VERSION_NS::Argument
Definition Argument.h:120
Alembic::Abc::ALEMBIC_VERSION_NS::OBasePropertyT< AbcA::CompoundPropertyWriterPtr >::getObject
OObject getObject() const
Definition OBaseProperty.h:225
Alembic::Abc::ALEMBIC_VERSION_NS::OCompoundProperty
Definition OCompoundProperty.h:53
Alembic::Abc::ALEMBIC_VERSION_NS::OSchemaObject
Definition OSchemaObject.h:54
Alembic::AbcGeom::ALEMBIC_VERSION_NS
Definition ArchiveBounds.h:45
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OFaceSet
Abc::OSchemaObject< OFaceSetSchema > OFaceSet
Definition OFaceSet.h:220
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OV2fGeomParam
OTypedGeomParam< V2fTPTraits > OV2fGeomParam
Definition OGeomParam.h:396
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubDPtr
Util::shared_ptr< OSubD > OSubDPtr
Definition OSubD.h:540
Alembic::AbcGeom::ALEMBIC_VERSION_NS::ABC_GEOM_SUBD_NULL_INT_VALUE
static ALEMBIC_EXPORT_CONST int32_t ABC_GEOM_SUBD_NULL_INT_VALUE(INT_MIN/2)
Alembic::AbcGeom::ALEMBIC_VERSION_NS::OSubD
Abc::OSchemaObject< OSubDSchema > OSubD
Definition OSubD.h:538
Alembic::AbcGeom
Definition ArchiveBounds.h:44
Alembic::Abc::ALEMBIC_VERSION_NS::OFloatArrayProperty
OTypedArrayProperty< Float32TPTraits > OFloatArrayProperty
Definition OTypedArrayProperty.h:253
Alembic::Abc::ALEMBIC_VERSION_NS::V3fArraySample
TypedArraySample< V3fTPTraits > V3fArraySample
Definition TypedArraySample.h:171
Alembic::Abc::ALEMBIC_VERSION_NS::OInt32ArrayProperty
OTypedArrayProperty< Int32TPTraits > OInt32ArrayProperty
Definition OTypedArrayProperty.h:249
Alembic::Abc::ALEMBIC_VERSION_NS::FloatArraySample
TypedArraySample< Float32TPTraits > FloatArraySample
Definition TypedArraySample.h:159
Alembic::Abc::ALEMBIC_VERSION_NS::P3fArraySample
TypedArraySample< P3fTPTraits > P3fArraySample
Definition TypedArraySample.h:181
Alembic::Abc::ALEMBIC_VERSION_NS::Int32ArraySample
TypedArraySample< Int32TPTraits > Int32ArraySample
Definition TypedArraySample.h:155
Alembic::Abc::ALEMBIC_VERSION_NS::OP3fArrayProperty
OTypedArrayProperty< P3fTPTraits > OP3fArrayProperty
Definition OTypedArrayProperty.h:275
Alembic::Abc::ALEMBIC_VERSION_NS::OInt32Property
OTypedScalarProperty< Int32TPTraits > OInt32Property
Definition OTypedScalarProperty.h:236
Alembic::Abc::ALEMBIC_VERSION_NS::OV3fArrayProperty
OTypedArrayProperty< V3fTPTraits > OV3fArrayProperty
Definition OTypedArrayProperty.h:265
Alembic::Abc::ALEMBIC_VERSION_NS::OStringProperty
OTypedScalarProperty< StringTPTraits > OStringProperty
Definition OTypedScalarProperty.h:242
Alembic
Alembic namespace ...
Definition ArchiveInfo.h:46