def testMotion( self ) : c1 = IECore.CurvesPrimitive( IECore.IntVectorData( [ 4 ] ) ) c2 = IECore.CurvesPrimitive( IECore.IntVectorData( [ 4 ] ) ) c1["P"] = IECore.PrimitiveVariable( IECore.PrimitiveVariable.Interpolation.Vertex, IECore.V3fVectorData( [ IECore.V3f( 1 ) ] * 4 ), ) c2["P"] = IECore.PrimitiveVariable( IECore.PrimitiveVariable.Interpolation.Vertex, IECore.V3fVectorData( [ IECore.V3f( 2 ) ] * 4 ), ) with IECoreArnold.UniverseBlock() : n = IECoreArnold.NodeAlgo.convert( [ c1, c2 ], [ -0.25, 0.25 ] ) a = arnold.AiNodeGetArray( n, "points" ) self.assertEqual( a.contents.nelements, 4 ) self.assertEqual( a.contents.nkeys, 2 ) for i in range( 0, 4 ) : self.assertEqual( arnold.AiArrayGetPnt( a, i ), arnold.AtPoint( 1 ) ) for i in range( 4, 8 ) : self.assertEqual( arnold.AiArrayGetPnt( a, i ), arnold.AtPoint( 2 ) ) a = arnold.AiNodeGetArray( n, "deform_time_samples" ) self.assertEqual( a.contents.nelements, 2 ) self.assertEqual( a.contents.nkeys, 1 ) self.assertEqual( arnold.AiArrayGetFlt( a, 0 ), -0.25 ) self.assertEqual( arnold.AiArrayGetFlt( a, 1 ), 0.25 )
def testMotion(self): p1 = IECore.PointsPrimitive(IECore.V3fVectorData([IECore.V3f(10)] * 10)) p1["width"] = IECore.PrimitiveVariable( IECore.PrimitiveVariable.Interpolation.Vertex, IECore.FloatVectorData([1] * 10), ) p2 = IECore.PointsPrimitive(IECore.V3fVectorData([IECore.V3f(20)] * 10)) p2["width"] = IECore.PrimitiveVariable( IECore.PrimitiveVariable.Interpolation.Vertex, IECore.FloatVectorData([2] * 10), ) with IECoreArnold.UniverseBlock(writable=True): n = IECoreArnold.NodeAlgo.convert([p1, p2], [-0.25, 0.25]) a = arnold.AiNodeGetArray(n, "points") self.assertEqual(a.contents.nelements, 10) self.assertEqual(a.contents.nkeys, 2) r = arnold.AiNodeGetArray(n, "radius") self.assertEqual(a.contents.nelements, 10) self.assertEqual(a.contents.nkeys, 2) for i in range(0, 10): self.assertEqual(arnold.AiArrayGetPnt(a, i), arnold.AtPoint(10)) self.assertEqual(arnold.AiArrayGetFlt(r, i), 0.5) for i in range(11, 20): self.assertEqual(arnold.AiArrayGetPnt(a, i), arnold.AtPoint(20)) self.assertEqual(arnold.AiArrayGetFlt(r, i), 1) a = arnold.AiNodeGetArray(n, "deform_time_samples") self.assertEqual(a.contents.nelements, 2) self.assertEqual(a.contents.nkeys, 1) self.assertEqual(arnold.AiArrayGetFlt(a, 0), -0.25) self.assertEqual(arnold.AiArrayGetFlt(a, 1), 0.25)
def testMotion(self): m1 = IECore.MeshPrimitive.createPlane( IECore.Box2f(IECore.V2f(-1), IECore.V2f(1))) IECore.MeshNormalsOp()(input=m1, copyInput=False) m2 = m1.copy() m2["P"].data[0] -= IECore.V3f(0, 0, 1) m2["P"].data[1] -= IECore.V3f(0, 0, 1) IECore.MeshNormalsOp()(input=m2, copyInput=False) with IECoreArnold.UniverseBlock(): node = IECoreArnold.NodeAlgo.convert([m1, m2], [-0.25, 0.25]) vList = arnold.AiNodeGetArray(node, "vlist") self.assertEqual(vList.contents.nelements, 4) self.assertEqual(vList.contents.nkeys, 2) nList = arnold.AiNodeGetArray(node, "nlist") self.assertEqual(nList.contents.nelements, 4) self.assertEqual(nList.contents.nkeys, 2) for i in range(0, 4): p = arnold.AiArrayGetPnt(vList, i) self.assertEqual(IECore.V3f(p.x, p.y, p.z), m1["P"].data[i]) n = arnold.AiArrayGetPnt(nList, i) self.assertEqual(IECore.V3f(n.x, n.y, n.z), m1["N"].data[i]) for i in range(4, 8): p = arnold.AiArrayGetPnt(vList, i) self.assertEqual(IECore.V3f(p.x, p.y, p.z), m2["P"].data[i - 4]) n = arnold.AiArrayGetPnt(nList, i) self.assertEqual(IECore.V3f(n.x, n.y, n.z), m2["N"].data[i - 4]) a = arnold.AiNodeGetArray(node, "deform_time_samples") self.assertEqual(a.contents.nelements, 2) self.assertEqual(a.contents.nkeys, 1) self.assertEqual(arnold.AiArrayGetFlt(a, 0), -0.25) self.assertEqual(arnold.AiArrayGetFlt(a, 1), 0.25)