37 #ifndef Alembic_AbcGeom_OCurves_h
38 #define Alembic_AbcGeom_OCurves_h
108 const OFloatGeomParam::Sample &iWidths = \
109 OFloatGeomParam::Sample(),
110 const OV2fGeomParam::Sample &iUVs = OV2fGeomParam::Sample(),
111 const ON3fGeomParam::Sample &iNormals = ON3fGeomParam::Sample(),
117 ): m_positions( iPos ),
118 m_nVertices( iNVertices ),
123 m_normals( iNormals ),
125 m_positionWeights( iPosWeight ),
130 const OFloatGeomParam::Sample &
getWidths()
const {
return m_widths; }
131 void setWidths(
const OFloatGeomParam::Sample &iWidths )
132 { m_widths = iWidths; }
137 { m_positions = iSmp; }
141 {
return m_positionWeights; }
143 { m_positionWeights = iSmp; }
160 { m_nVertices = iNVertices; }
162 {
return m_nVertices; }
165 const OV2fGeomParam::Sample &
getUVs()
const {
return m_uvs; }
166 void setUVs(
const OV2fGeomParam::Sample &iUVs )
172 { m_selfBounds = iBnds; }
177 { m_velocities = iVelocities; }
180 const ON3fGeomParam::Sample &
getNormals()
const {
return m_normals; }
182 { m_normals = iNormals; }
187 { m_basis = iBasis; }
192 { m_orders = iOrders; }
197 { m_knots = iKnots; }
202 m_positionWeights.reset();
203 m_velocities.reset();
213 m_selfBounds.makeEmpty();
222 if( !m_positions.getData() )
224 if( m_uvs.getVals() || m_normals.getVals() || m_velocities.getData() )
278 m_selectiveExport =
false;
280 m_timeSamplingIndex = 0;
295 iArg0, iArg1, iArg2, iArg3)
308 )->getArchive()->addTimeSampling( *tsPtr );
311 init( tsIndex,
Abc::IsSparse( iArg0, iArg1, iArg2, iArg3 ) );
330 if( m_positionsProperty.valid() )
332 return m_positionsProperty.getTimeSampling();
336 return getObject().getArchive().getTimeSampling( 0 );
340 void setTimeSampling( uint32_t iIndex );
353 void set(
const sample_type &iSamp );
357 void setFromPrevious();
369 m_positionsProperty.reset();
370 m_positionWeightsProperty.reset();
372 m_normalsParam.reset();
373 m_widthsParam.reset();
374 m_nVerticesProperty.reset();
375 m_ordersProperty.reset();
376 m_knotsProperty.reset();
378 m_basisAndTypeProperty.reset();
388 m_positionsProperty.
valid() )
389 || m_selectiveExport );
402 void selectiveSet(
const Sample &iSamp );
410 bool m_selectiveExport;
415 uint32_t m_timeSamplingIndex;
417 void createPositionProperty();
418 void createVertexProperties();
419 void createVelocityProperty();
420 void createUVsProperty(
const Sample &iSamp );
421 void createNormalsProperty(
const Sample &iSamp );
422 void createWidthProperty(
const Sample &iSamp );
423 void createPositionWeightsProperty();
424 void createOrdersProperty();
425 void createKnotsProperty();
426 void calcBasisAndType(Alembic::Util::uint8_t (&basisAndType)[4],
const Sample &iSamp);
OCurvesSchema::Sample sample_type
virtual bool valid() const
void setKnots(const Abc::FloatArraySample &iKnots)
const OV2fGeomParam::Sample & getUVs() const
ON3fGeomParam::Sample m_normals
Abc::OSchemaObject< OCurvesSchema > OCurves
GLsizei const GLchar *const * string
Util::shared_ptr< OCurves > OCurvesPtr
void setOrders(const Abc::UcharArraySample &iOrders)
const Abc::V3fArraySample & getVelocities() const
void setWidths(const OFloatGeomParam::Sample &iWidths)
bool isPartialSample() const
const Abc::Int32ArraySample & getCurvesNumVertices() const
void setBasis(const BasisType &iBasis)
const ON3fGeomParam::Sample & getNormals() const
void setType(const CurveType &iType)
const Abc::P3fArraySample & getPositions() const
void setVelocities(const Abc::V3fArraySample &iVelocities)
void setPositionWeights(const Abc::FloatArraySample &iSmp)
OCurvesSchema(const OCurvesSchema &iCopy)
Sample(const Abc::P3fArraySample &iPos)
Alembic::Util::shared_ptr< TimeSampling > TimeSamplingPtr
OV2fGeomParam::Sample m_uvs
size_t getNumSamples() const
Abc::UcharArraySample m_orders
Abc::V3fArraySample m_velocities
Abc::FloatArraySample m_positionWeights
OFloatGeomParam::Sample m_widths
void setUVs(const OV2fGeomParam::Sample &iUVs)
const Abc::FloatArraySample & getKnots() const
void setWrap(const CurvePeriodicity &iWrap)
#define ALEMBIC_OVERRIDE_OPERATOR_BOOL(PASS_COND)
bool IsSparse(const Argument &iArg0, const Argument &iArg1=Argument(), const Argument &iArg2=Argument(), const Argument &iArg3=Argument())
void setSelfBounds(const Abc::Box3d &iBnds)
const Abc::Box3d & getSelfBounds() const
AbcA::TimeSamplingPtr GetTimeSampling(const Argument &iArg0, const Argument &iArg1=Argument(), const Argument &iArg2=Argument(), const Argument &iArg3=Argument())
Box< V3d > Box3d
3D box of base type double.
AbcA::TimeSamplingPtr getTimeSampling() const
Default assignment operator used.
const Abc::FloatArraySample & getPositionWeights() const
CurvePeriodicity getWrap() const
void setCurvesNumVertices(const Abc::Int32ArraySample &iNVertices)
Abc::Int32ArraySample m_nVertices
void setPositions(const Abc::P3fArraySample &iSmp)
const OFloatGeomParam::Sample & getWidths() const
void setNormals(const ON3fGeomParam::Sample &iNormals)
OCurvesSchema(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())
uint32_t GetTimeSamplingIndex(const Argument &iArg0, const Argument &iArg1=Argument(), const Argument &iArg2=Argument(), const Argument &iArg3=Argument())
AbcA::CompoundPropertyWriterPtr GetCompoundPropertyWriterPtr(AbcA::CompoundPropertyWriterPtr iPtr)
CurveType getType() const
Abc::P3fArraySample m_positions
BasisType getBasis() const
std::size_t getNumCurves() const
Abc::FloatArraySample m_knots
const Abc::UcharArraySample & getOrders() const
Sample(const Abc::P3fArraySample &iPos, const Abc::Int32ArraySample &iNVertices, const CurveType &iType=kCubic, const CurvePeriodicity iWrap=kNonPeriodic, const OFloatGeomParam::Sample &iWidths=OFloatGeomParam::Sample(), const OV2fGeomParam::Sample &iUVs=OV2fGeomParam::Sample(), const ON3fGeomParam::Sample &iNormals=ON3fGeomParam::Sample(), const BasisType &iBasis=kBezierBasis, const Abc::FloatArraySample &iPosWeight=Abc::FloatArraySample(), const Abc::UcharArraySample &iOrders=Abc::UcharArraySample(), const Abc::FloatArraySample &iKnots=Abc::FloatArraySample())
#define ALEMBIC_VERSION_NS
Alembic::Util::shared_ptr< CompoundPropertyWriter > CompoundPropertyWriterPtr