def testUVConversionFromMayaMesh(self):

        mayaMesh = maya.cmds.ls(maya.cmds.polyPlane(), dag=True,
                                type="mesh")[0]
        coreMesh = IECoreMaya.FromMayaMeshConverter(mayaMesh).convert()

        transform = maya.cmds.createNode("transform")
        self.failUnless(
            IECoreMaya.ToMayaMeshConverter(coreMesh).convert(transform))
        mayaMesh2 = maya.cmds.listRelatives(transform, shapes=True)[0]

        l = OpenMaya.MSelectionList()
        l.add(mayaMesh)
        l.add(mayaMesh2)
        p = OpenMaya.MDagPath()
        p2 = OpenMaya.MDagPath()
        l.getDagPath(0, p)
        l.getDagPath(1, p2)

        uvSets = []
        fnMesh = OpenMaya.MFnMesh(p)
        fnMesh.getUVSetNames(uvSets)

        uvSets2 = []
        fnMesh2 = OpenMaya.MFnMesh(p2)
        fnMesh2.getUVSetNames(uvSets2)

        self.assertEqual(uvSets, uvSets2)

        # Check uvIndices
        coreMesh2 = IECoreMaya.FromMayaMeshConverter(mayaMesh2).convert()
        # self.assertEqual( coreMesh["uv"].data, coreMesh2["uv"].data )
        self.assertEqual(coreMesh["uv"].indices, coreMesh2["uv"].indices)
	def testConstructor( self ) :

		sphere = maya.cmds.polySphere( subdivisionsX=10, subdivisionsY=5, constructionHistory=False )
		sphere = maya.cmds.listRelatives( sphere, shapes=True )[0]

		converter = IECoreMaya.FromMayaMeshConverter( sphere )

		m = converter.convert()

		self.failUnless( isinstance( m, IECore.MeshPrimitive ) )
示例#3
0
    def testManyUVConversionsFromPlug(self):

        # load a mesh with indexed UVs
        scc = IECoreScene.SceneCache(
            "test/IECore/data/sccFiles/animatedSpheres.scc",
            IECore.IndexedIO.OpenMode.Read)
        coreMesh = scc.scene(["A", "a"]).readObject(0)
        self.assertTrue("uv" in coreMesh)
        self.assertEqual(coreMesh["uv"].data.getInterpretation(),
                         IECore.GeometricData.Interpretation.UV)

        for i in range(0, 7):
            coreMesh["testUVSet%d" % i] = IECoreScene.PrimitiveVariable(
                coreMesh["uv"].interpolation, coreMesh["uv"].data.copy(),
                coreMesh["uv"].indices.copy())

        self.assertTrue(coreMesh.arePrimitiveVariablesValid())

        fn = IECoreMaya.FnOpHolder.create("test", "meshMerge")

        mayaMesh = maya.cmds.ls(maya.cmds.polyPlane(), dag=True,
                                type="mesh")[0]
        maya.cmds.connectAttr(fn.name() + ".result",
                              mayaMesh + ".inMesh",
                              force=True)

        op = fn.getOp()
        with fn.parameterModificationContext():
            op["input"].setValue(coreMesh)

        maya.cmds.file(rename="/tmp/test.ma")
        maya.cmds.file(save=True)
        maya.cmds.file(new=True, f=True)
        maya.cmds.file("/tmp/test.ma", open=True)

        result = IECoreMaya.FromMayaMeshConverter(mayaMesh).convert()

        self.assertTrue(result.arePrimitiveVariablesValid())
        self.assertEqual(
            result.variableSize(
                IECoreScene.PrimitiveVariable.Interpolation.Uniform), 400)
        self.assertEqual(
            result.variableSize(
                IECoreScene.PrimitiveVariable.Interpolation.FaceVarying), 1560)

        self.assertEqual(coreMesh["uv"], result["uv"])

        for i in range(0, 7):
            self.assertEqual(coreMesh["testUVSet%d" % i],
                             result["testUVSet%d" % i])
	def testManyUVConversionsFromPlug( self ) :
		
		coreMesh = IECore.Reader.create( "test/IECore/data/cobFiles/pSphereShape1.cob" ).read()
		
		self.assertTrue( "s" in coreMesh )
		self.assertTrue( "t" in coreMesh )
		
		for i in range( 0, 7 ) :
			coreMesh[ "testUVSet%d_s" % i ] = IECore.PrimitiveVariable( coreMesh["s"].interpolation, coreMesh["s"].data.copy() )
			coreMesh[ "testUVSet%d_t" % i ] = IECore.PrimitiveVariable( coreMesh["t"].interpolation, coreMesh["t"].data.copy() )
		
		fn = IECoreMaya.FnOpHolder.create( "test", "meshMerge" )
		
		mayaMesh = maya.cmds.ls( maya.cmds.polyPlane(), dag=True, type="mesh" )[0]
		maya.cmds.connectAttr( fn.name()+".result", mayaMesh+".inMesh", force=True )
		
		op = fn.getOp()
		with fn.parameterModificationContext() :
			op["input"].setValue( coreMesh )
		
		maya.cmds.file( rename="/tmp/test.ma" )
		maya.cmds.file( save=True )
		maya.cmds.file( new=True, f=True )
		maya.cmds.file( "/tmp/test.ma", open=True )
		
		result = IECoreMaya.FromMayaMeshConverter( mayaMesh ).convert()
		
		self.assertTrue( result.arePrimitiveVariablesValid() )
		self.assertEqual( result.variableSize( IECore.PrimitiveVariable.Interpolation.Uniform ), 760 )
		self.assertEqual( result.variableSize( IECore.PrimitiveVariable.Interpolation.FaceVarying ), 2280 )
		
		self.assertEqual( coreMesh["s"], result["s"] )
		self.assertEqual( coreMesh["t"], result["t"] )
		
		for i in range( 0, 7 ) :
			self.assertEqual( coreMesh[ "testUVSet%d_s" % i ], result[ "testUVSet%d_s" %  i ] )
			self.assertEqual( coreMesh[ "testUVSet%d_t" %  i ], result[ "testUVSet%d_t" %  i ] )