74 Sample(
const Abc::P3fArraySample &iPositions,
75 const Abc::Int32ArraySample &iFaceIndices,
76 const Abc::Int32ArraySample &iFaceCounts,
78 const Abc::Int32ArraySample &iCreaseIndices =
79 Abc::Int32ArraySample(),
80 const Abc::Int32ArraySample &iCreaseLengths =
81 Abc::Int32ArraySample(),
82 const Abc::FloatArraySample &iCreaseSharpnesses =
83 Abc::FloatArraySample(),
85 const Abc::Int32ArraySample &iCornerIndices =
86 Abc::Int32ArraySample(),
87 const Abc::FloatArraySample &iCornerSharpnesses =
88 Abc::FloatArraySample(),
90 const Abc::Int32ArraySample &iHoles = Abc::Int32ArraySample()
93 : m_positions( iPositions )
94 , m_faceIndices( iFaceIndices )
95 , m_faceCounts( iFaceCounts )
96 , m_faceVaryingInterpolateBoundary( ABC_GEOM_SUBD_NULL_INT_VALUE )
97 , m_faceVaryingPropagateCorners( ABC_GEOM_SUBD_NULL_INT_VALUE )
98 , m_interpolateBoundary( ABC_GEOM_SUBD_NULL_INT_VALUE )
99 , m_creaseIndices ( iCreaseIndices )
100 , m_creaseLengths ( iCreaseLengths )
101 , m_creaseSharpnesses ( iCreaseSharpnesses )
102 , m_cornerIndices ( iCornerIndices )
103 , m_cornerSharpnesses ( iCornerSharpnesses )
105 , m_subdScheme (
"catmull-clark" )
109 const Abc::P3fArraySample &getPositions()
const {
return m_positions; }
110 void setPositions(
const Abc::P3fArraySample &iSmp )
111 { m_positions = iSmp; }
113 const Abc::Int32ArraySample &getFaceIndices()
const {
return m_faceIndices; }
114 void setFaceIndices(
const Abc::Int32ArraySample &iSmp )
115 { m_faceIndices = iSmp; }
117 const Abc::Int32ArraySample &getFaceCounts()
const {
return m_faceCounts; }
118 void setFaceCounts(
const Abc::Int32ArraySample &iCnt )
119 { m_faceCounts = iCnt; }
123 int32_t getFaceVaryingInterpolateBoundary()
const
124 {
return m_faceVaryingInterpolateBoundary; }
125 void setFaceVaryingInterpolateBoundary( int32_t i )
126 { m_faceVaryingInterpolateBoundary = i; }
128 int32_t getFaceVaryingPropagateCorners()
const
129 {
return m_faceVaryingPropagateCorners; }
130 void setFaceVaryingPropagateCorners( int32_t i )
131 { m_faceVaryingPropagateCorners = i; }
133 int32_t getInterpolateBoundary()
const
134 {
return m_interpolateBoundary; }
135 void setInterpolateBoundary( int32_t i )
136 { m_interpolateBoundary = i; }
139 const Abc::Int32ArraySample &getCreaseIndices()
const
140 {
return m_creaseIndices; }
141 void setCreaseIndices(
const Abc::Int32ArraySample &iCreaseIndices )
142 { m_creaseIndices = iCreaseIndices; }
144 const Abc::Int32ArraySample &getCreaseLengths()
const
145 {
return m_creaseLengths; }
146 void setCreaseLengths(
const Abc::Int32ArraySample &iCreaseLengths )
147 { m_creaseLengths = iCreaseLengths; }
149 const Abc::FloatArraySample &getCreaseSharpnesses()
const
150 {
return m_creaseSharpnesses; }
151 void setCreaseSharpnesses(
const Abc::FloatArraySample
152 &iCreaseSharpnesses )
153 { m_creaseSharpnesses = iCreaseSharpnesses; }
155 void setCreases(
const Abc::Int32ArraySample &iCreaseIndices,
156 const Abc::Int32ArraySample &iCreaseLengths )
158 m_creaseIndices = iCreaseIndices;
159 m_creaseLengths = iCreaseLengths;
162 void setCreases(
const Abc::Int32ArraySample &iCreaseIndices,
163 const Abc::Int32ArraySample &iCreaseLengths,
164 const Abc::FloatArraySample &iCreaseSharpnesses )
166 m_creaseIndices = iCreaseIndices;
167 m_creaseLengths = iCreaseLengths;
168 m_creaseSharpnesses = iCreaseSharpnesses;
172 const Abc::Int32ArraySample &getCornerIndices()
const
173 {
return m_cornerIndices; }
174 void setCornerIndices(
const Abc::Int32ArraySample &iCornerIndices )
175 { m_cornerIndices = iCornerIndices; }
177 const Abc::FloatArraySample &getCornerSharpnesses()
const
178 {
return m_cornerSharpnesses; }
179 void setCornerSharpnesses(
const Abc::FloatArraySample
180 &iCornerSharpnesses )
181 { m_cornerSharpnesses = iCornerSharpnesses; }
183 void setCorners(
const Abc::Int32ArraySample &iCornerIndices,
184 const Abc::FloatArraySample &iCornerSharpnesses )
186 m_cornerIndices = iCornerIndices;
187 m_cornerSharpnesses = iCornerSharpnesses;
191 const Abc::Int32ArraySample &getHoles()
const
193 void setHoles(
const Abc::Int32ArraySample &iHoles )
194 { m_holes = iHoles; }
197 std::string getSubdivisionScheme()
const
198 {
return m_subdScheme; }
199 void setSubdivisionScheme(
const std::string &iScheme )
200 { m_subdScheme = iScheme; }
203 const Abc::Box3d &getSelfBounds()
const {
return m_selfBounds; }
204 void setSelfBounds(
const Abc::Box3d &iBnds )
205 { m_selfBounds = iBnds; }
208 const Abc::V3fArraySample &getVelocities()
const {
return m_velocities; }
209 void setVelocities(
const Abc::V3fArraySample &iVelocities )
210 { m_velocities = iVelocities; }
213 const OV2fGeomParam::Sample &getUVs()
const {
return m_uvs; }
214 void setUVs(
const OV2fGeomParam::Sample &iUVs )
220 m_faceIndices.reset();
221 m_faceCounts.reset();
223 m_faceVaryingInterpolateBoundary = ABC_GEOM_SUBD_NULL_INT_VALUE;
224 m_faceVaryingPropagateCorners = ABC_GEOM_SUBD_NULL_INT_VALUE;
225 m_interpolateBoundary = ABC_GEOM_SUBD_NULL_INT_VALUE;
227 m_creaseIndices.reset();
228 m_creaseLengths.reset();
229 m_creaseSharpnesses.reset();
231 m_cornerIndices.reset();
232 m_cornerSharpnesses.reset();
236 m_subdScheme =
"catmull-clark";
238 m_velocities.reset();
240 m_selfBounds.makeEmpty();
245 bool isPartialSample()
const
247 if( !m_positions.getData() && !m_faceIndices.getData() && !m_faceCounts.getData() )
249 if( m_uvs.getVals() || m_velocities.getData() ||
250 (m_faceVaryingInterpolateBoundary != ABC_GEOM_SUBD_NULL_INT_VALUE) ||
251 (m_faceVaryingPropagateCorners != ABC_GEOM_SUBD_NULL_INT_VALUE) ||
252 (m_interpolateBoundary != ABC_GEOM_SUBD_NULL_INT_VALUE) ||
253 m_creaseIndices.getData() ||
254 m_creaseLengths.getData() || m_creaseSharpnesses.getData() ||
255 m_cornerIndices.getData() || m_cornerSharpnesses.getData() ||
266 friend class OSubDSchema;
268 Abc::P3fArraySample m_positions;
269 Abc::Int32ArraySample m_faceIndices;
270 Abc::Int32ArraySample m_faceCounts;
272 int32_t m_faceVaryingInterpolateBoundary;
273 int32_t m_faceVaryingPropagateCorners;
274 int32_t m_interpolateBoundary;
277 Abc::Int32ArraySample m_creaseIndices;
278 Abc::Int32ArraySample m_creaseLengths;
279 Abc::FloatArraySample m_creaseSharpnesses;
282 Abc::Int32ArraySample m_cornerIndices;
283 Abc::FloatArraySample m_cornerSharpnesses;
286 Abc::Int32ArraySample m_holes;
289 std::string m_subdScheme;
292 Abc::Box3d m_selfBounds;
294 Abc::V3fArraySample m_velocities;
297 OV2fGeomParam::Sample m_uvs;