예제 #1
0
	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 )
예제 #2
0
    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)
예제 #3
0
    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)