MCPcopy Create free account
hub / github.com/ImageEngine/cortex / testPlane

Method testPlane

test/IECoreScene/MeshPrimitive.py:270–337  ·  view source on GitHub ↗
( self )

Source from the content-addressed store, hash-verified

268
269 @unittest.skipIf( IECore.TestUtil.inMacCI(), "Incorrect pointAtUV results on virtualized macOS used in CI" )
270 def testPlane( self ) :
271
272 m = IECoreScene.MeshPrimitive.createPlane( imath.Box2f( imath.V2f( 0 ), imath.V2f( 1 ) ) )
273 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Constant ), 1 )
274 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Uniform ), 1 )
275 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Vertex ), 4 )
276 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Varying ), 4 )
277 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.FaceVarying ), 4 )
278 self.assertEqual( m.numFaces(), 1 )
279 self.assertEqual( m.verticesPerFace, IECore.IntVectorData( [ 4 ] ) )
280 self.assertEqual( m.vertexIds, IECore.IntVectorData( [ 0, 1, 3, 2 ] ) )
281 self.assertEqual( m.bound(), imath.Box3f( imath.V3f( 0 ), imath.V3f( 1, 1, 0 ) ) )
282 self.assertTrue( m.arePrimitiveVariablesValid() )
283
284 # verify uvs
285 self.assertEqual( m["uv"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.FaceVarying )
286 self.assertEqual( len( m["uv"].data ), len( m["P"].data ) )
287 self.assertEqual( m["uv"].indices, m.vertexIds )
288
289 # verify uvs
290 self.assertEqual( m["N"].interpolation, IECoreScene.PrimitiveVariable.Interpolation.Vertex )
291 self.assertEqual( len( m["N"].data ), len( m["P"].data ) )
292 self.assertEqual( m["N"].data, IECore.V3fVectorData( [ imath.V3f( 0, 0, 1 ) ] * len( m["P"].data ), IECore.GeometricData.Interpretation.Normal ) )
293
294 e = IECoreScene.MeshPrimitiveEvaluator( IECoreScene.MeshAlgo.triangulate( m ) )
295
296 r = e.createResult()
297 self.assertTrue( e.pointAtUV( imath.V2f( 0, 0 ), r ) )
298 self.assertEqual( r.point(), m["P"].data[0] )
299 self.assertEqual( r.point(), imath.V3f( 0, 0, 0 ) )
300 self.assertTrue( e.pointAtUV( imath.V2f( 1, 0 ), r ) )
301 self.assertEqual( r.point(), m["P"].data[1] )
302 self.assertEqual( r.point(), imath.V3f( 1, 0, 0 ) )
303 self.assertTrue( e.pointAtUV( imath.V2f( 1, 1 ), r ) )
304 self.assertEqual( r.point(), m["P"].data[3] )
305 self.assertEqual( r.point(), imath.V3f( 1, 1, 0 ) )
306 self.assertTrue( e.pointAtUV( imath.V2f( 0, 1 ), r ) )
307 self.assertEqual( r.point(), m["P"].data[2] )
308 self.assertEqual( r.point(), imath.V3f( 0, 1, 0 ) )
309
310 # test divisions
311 m = IECoreScene.MeshPrimitive.createPlane( imath.Box2f( imath.V2f( 0 ), imath.V2f( 1 ) ), divisions = imath.V2i( 2, 3 ) )
312 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Constant ), 1 )
313 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Uniform ), 6 )
314 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Vertex ), 12 )
315 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.Varying ), 12 )
316 self.assertEqual( m.variableSize( IECoreScene.PrimitiveVariable.Interpolation.FaceVarying ), 24 )
317 self.assertEqual( m.numFaces(), 6 )
318 self.assertEqual( m.verticesPerFace, IECore.IntVectorData( [ 4 ] * 6 ) )
319 self.assertEqual( m.vertexIds, IECore.IntVectorData( [ 0, 1, 4, 3, 1, 2, 5, 4, 3, 4, 7, 6, 4, 5, 8, 7, 6, 7, 10, 9, 7, 8, 11, 10 ] ) )
320 self.assertEqual( m.bound(), imath.Box3f( imath.V3f( 0 ), imath.V3f( 1, 1, 0 ) ) )
321 self.assertTrue( m.arePrimitiveVariablesValid() )
322
323 # corners still have correct uvs
324 e = IECoreScene.MeshPrimitiveEvaluator( IECoreScene.MeshAlgo.triangulate( m ) )
325 r = e.createResult()
326 self.assertTrue( e.pointAtUV( imath.V2f( 0, 0 ), r ) )
327 self.assertEqual( r.point(), m["P"].data[0] )

Callers

nothing calls this directly

Calls 11

createResultMethod · 0.95
pointAtUVMethod · 0.95
createPlaneMethod · 0.80
numFacesMethod · 0.80
triangulateMethod · 0.80
lenFunction · 0.50
variableSizeMethod · 0.45
boundMethod · 0.45
pointMethod · 0.45

Tested by

no test coverage detected