( self )
| 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] ) |
nothing calls this directly
no test coverage detected