70 const Abc::P3fArraySample &iPos,
73 const int32_t &iUOrder,
74 const int32_t &iVOrder,
75 const Abc::FloatArraySample &iUKnot,
76 const Abc::FloatArraySample &iVKnot,
77 const ON3fGeomParam::Sample &iNormals = ON3fGeomParam::Sample(),
78 const OV2fGeomParam::Sample &iUVs = OV2fGeomParam::Sample(),
79 const Abc::FloatArraySample & iPosWeight = Abc::FloatArraySample()
80 ): m_positions( iPos )
87 , m_positionWeights( iPosWeight )
88 , m_normals( iNormals )
90 , m_trimNumLoops( ABC_GEOM_NUPATCH_NULL_INT_VALUE )
91 , m_trimNumVertices( Abc::Int32ArraySample() )
92 , m_trimOrder( Abc::Int32ArraySample() )
93 , m_trimKnot( Abc::FloatArraySample() )
94 , m_trimMin( Abc::FloatArraySample() )
95 , m_trimMax( Abc::FloatArraySample() )
96 , m_trimU( Abc::FloatArraySample() )
97 , m_trimV( Abc::FloatArraySample() )
98 , m_trimW( Abc::FloatArraySample() )
99 , m_hasTrimCurve( false )
103 const Abc::P3fArraySample &getPositions()
const {
return m_positions; }
104 void setPositions(
const Abc::P3fArraySample &iSmp )
105 { m_positions = iSmp; }
108 const Abc::FloatArraySample &getPositionWeights()
const
109 {
return m_positionWeights; }
110 void setPositionWeights(
const Abc::FloatArraySample &iSmp )
111 { m_positionWeights = iSmp; }
114 int32_t getNu()
const {
return m_numU; }
115 void setNu(
const int32_t iNu )
119 int32_t getNv()
const {
return m_numV; }
120 void setNv(
const int32_t iNv )
124 int32_t getUOrder()
const {
return m_uOrder; }
125 void setUOrder(
const int32_t iUOrder )
126 { m_uOrder = iUOrder; }
129 int32_t getVOrder()
const {
return m_vOrder; }
130 void setVOrder(
const int32_t iVOrder )
131 { m_vOrder = iVOrder; }
134 const Abc::FloatArraySample &getUKnot()
const {
return m_uKnot; }
135 void setUKnot(
const Abc::FloatArraySample &iUKnot )
136 { m_uKnot = iUKnot; }
139 const Abc::FloatArraySample &getVKnot()
const {
return m_vKnot; }
140 void setVKnot(
const Abc::FloatArraySample &iVKnot )
141 { m_vKnot = iVKnot; }
144 const OV2fGeomParam::Sample &getUVs()
const {
return m_uvs; }
145 void setUVs(
const OV2fGeomParam::Sample &iUVs )
149 const ON3fGeomParam::Sample &getNormals()
const {
return m_normals; }
150 void setNormals(
const ON3fGeomParam::Sample &iNormals )
151 { m_normals = iNormals; }
154 const Abc::Box3d &getSelfBounds()
const {
return m_selfBounds; }
155 void setSelfBounds(
const Abc::Box3d &iBnds )
156 { m_selfBounds = iBnds; }
159 const Abc::V3fArraySample &getVelocities()
const {
return m_velocities; }
160 void setVelocities(
const Abc::V3fArraySample &iVelocities )
161 { m_velocities = iVelocities; }
164 void setTrimCurve(
const int32_t i_trim_nLoops,
165 const Abc::Int32ArraySample &i_trim_nCurves,
166 const Abc::Int32ArraySample &i_trim_n,
167 const Abc::Int32ArraySample &i_trim_order,
168 const Abc::FloatArraySample &i_trim_knot,
169 const Abc::FloatArraySample &i_trim_min,
170 const Abc::FloatArraySample &i_trim_max,
171 const Abc::FloatArraySample &i_trim_u,
172 const Abc::FloatArraySample &i_trim_v,
173 const Abc::FloatArraySample &i_trim_w )
175 m_trimNumLoops = i_trim_nLoops;
176 m_trimNumCurves = i_trim_nCurves;
177 m_trimNumVertices = i_trim_n;
178 m_trimOrder = i_trim_order;
179 m_trimKnot = i_trim_knot;
180 m_trimMin = i_trim_min;
181 m_trimMax = i_trim_max;
186 m_hasTrimCurve =
true;
189 int32_t getTrimNumLoops()
const {
return m_trimNumLoops; }
190 const Abc::Int32ArraySample &getTrimNumCurves()
const
191 {
return m_trimNumCurves; }
192 const Abc::Int32ArraySample &getTrimNumVertices()
const
193 {
return m_trimNumVertices; }
194 const Abc::Int32ArraySample &getTrimOrder()
const
195 {
return m_trimOrder; }
196 const Abc::FloatArraySample &getTrimKnot()
const {
return m_trimKnot; }
197 const Abc::FloatArraySample &getTrimMin()
const {
return m_trimMin; }
198 const Abc::FloatArraySample &getTrimMax()
const {
return m_trimMax; }
199 const Abc::FloatArraySample &getTrimU()
const {
return m_trimU; }
200 const Abc::FloatArraySample &getTrimV()
const {
return m_trimV; }
201 const Abc::FloatArraySample &getTrimW()
const {
return m_trimW; }
203 bool hasTrimCurve()
const
205 return m_hasTrimCurve;
211 m_velocities.reset();
212 m_numU = ABC_GEOM_NUPATCH_NULL_INT_VALUE;
213 m_numV = ABC_GEOM_NUPATCH_NULL_INT_VALUE;
214 m_uOrder = ABC_GEOM_NUPATCH_NULL_INT_VALUE;
215 m_vOrder = ABC_GEOM_NUPATCH_NULL_INT_VALUE;
218 m_positionWeights.reset();
221 m_selfBounds.makeEmpty();
224 m_trimNumLoops = ABC_GEOM_NUPATCH_NULL_INT_VALUE;
225 m_trimNumCurves.reset();
226 m_trimNumVertices.reset();
234 m_hasTrimCurve =
false;
237 bool isPartialSample()
const
239 if( !m_positions.getData() )
241 if( m_uvs.getVals() || m_normals.getVals() || m_velocities.getData() )
250 bool hasKnotSampleData()
const
252 if( (m_numU != ABC_GEOM_NUPATCH_NULL_INT_VALUE) ||
253 (m_numV != ABC_GEOM_NUPATCH_NULL_INT_VALUE) ||
254 (m_uOrder != ABC_GEOM_NUPATCH_NULL_INT_VALUE) ||
255 (m_vOrder != ABC_GEOM_NUPATCH_NULL_INT_VALUE) ||
265 Abc::P3fArraySample m_positions;
266 Abc::V3fArraySample m_velocities;
271 Abc::FloatArraySample m_uKnot;
272 Abc::FloatArraySample m_vKnot;
275 Abc::FloatArraySample m_positionWeights;
276 ON3fGeomParam::Sample m_normals;
277 OV2fGeomParam::Sample m_uvs;
280 int32_t m_trimNumLoops;
281 Abc::Int32ArraySample m_trimNumCurves;
282 Abc::Int32ArraySample m_trimNumVertices;
283 Abc::Int32ArraySample m_trimOrder;
284 Abc::FloatArraySample m_trimKnot;
285 Abc::FloatArraySample m_trimMin;
286 Abc::FloatArraySample m_trimMax;
287 Abc::FloatArraySample m_trimU;
288 Abc::FloatArraySample m_trimV;
289 Abc::FloatArraySample m_trimW;
293 Abc::Box3d m_selfBounds;