Esempio n. 1
0
	def exporterCombined(arg,prefix):
		pm.select(r=arg)
		#Determining Export type
		expType=optionMenu("exportType",q=1,v=1)
		extension=''
		name=pm.textField('combName',q=1,text=1)
		#OBJ            
		if expType == "OBJ":
			extension=".obj"
			prefix=prefix + "OBJ/"
			pm.file(pr=1,typ="OBJexport",es=(prefix + name + extension),op="groups=0;ptgroups=0;materials=0;smoothing=1;normals=1")
			
		if expType == "FBX":
			extension=".fbx"
			#FBX
			prefix=prefix + "FBX/"
			pm.file(typ="FBX export",force=1,options="binary=1;compression=0;tabstop=8;perframe=0;padframe=0;perlayer=0;pathnames=3313333333;assembly=1;fragment=1;fragsurfmats=1;fragsurfmatsassign=1;fragincshdrs=1;fragchilddag=1;passcontrimaps=1;passusrdata=0;filter=00000011010000001101000;overrideAssemblyRootName=0;assemblyRootName=",es=(prefix + name + extension))
			
		if expType == "PROXY":
			extension=".mi"
			#PROXY
			prefix=prefix + "renderProxy/"
			#file -force -options "binary=1;compression=0;tabstop=8;perframe=0;padframe=0;perlayer=0;pathnames=3313333333;assembly=1;fragment=1;fragsurfmats=1;fragsurfmatsassign=1;fragincshdrs=1;fragchilddag=1;passcontrimaps=1;passusrdata=0;filter=00000011010000001101000;overrideAssemblyRootName=0;assemblyRootName=" -typ "mentalRay" -es ($prefix+$name+$extension);
			pm.Mayatomr(binary=1,assembly=1,fis=1,mi=1,fem=1,exportFilter=721600,fcd=1,fe=1,file=(prefix + name + extension),pcm=1,active=1,xp="3313333333",asn=name,fma=1)
			
		print "Creating file: " + prefix + name + extension + "\n"
Esempio n. 2
0
	def exporter(arg,prefix):
		pm.select(r=arg)
		temp=[]
		stripFN=''
		temp=arg.split(":")
		#Removing namespaces             
		if len(temp)>1:
			stripFN=temp[-1:]
		else:
			stripFN=arg
			
		expType=pm.optionMenu("exportType",q=1,v=1)
		extension=''
		#Determining Export type
		#OBJ            
		if expType == "OBJ":
			extension=".obj"
			prefix=prefix + "OBJ/"
			pm.file(pr=1,typ="OBJexport",es=(prefix + stripFN),op="groups=0;ptgroups=0;materials=0;smoothing=1;normals=1")
			
		if expType == "FBX":
			extension=".fbx"
			#FBX
			prefix=prefix + "FBX/"
			pm.file(typ="FBX export",force=1,options="binary=1;compression=0;tabstop=8;perframe=0;padframe=0;perlayer=0;pathnames=3313333333;assembly=1;fragment=1;fragsurfmats=1;fragsurfmatsassign=1;fragincshdrs=1;fragchilddag=1;passcontrimaps=1;passusrdata=0;filter=00000011010000001101000;overrideAssemblyRootName=0;assemblyRootName=",es=(prefix + stripFN + extension))
			
		if expType == "PROXY":
			extension=".mi"
			#PROXY
			prefix=prefix + "renderProxy/"
			pm.Mayatomr(binary=1,assembly=1,fis=1,mi=1,fem=1,exportFilter=721600,fcd=1,fe=1,file=(prefix + stripFN + extension),pcm=1,active=1,xp="3313333333",asn=stripFN,fma=1)
			
		print "        Creating file: " + (prefix + stripFN) + extension + "\n"
Esempio n. 3
0
	def objImp(self):
		path_here=pm.textField("pathImpName", q=1,text=1)
		prefix=pm.textField("wildName",q=1,text=1)
		wildcard=(prefix + "*.obj")
		fileList=self.getFileList(folder=path_here,filespec=wildcard)
		for file in fileList:
			temp=[]
			stripFN=''
			temp=file.split(":")
			if len(temp)>1:
				stripFN=temp[-1:]
			else:
				stripFN=file
			pm.file((path_here + str(file)), i=1, namespace=stripFN,loadReferenceDepth="all",ra=True,type="OBJ",options="mo=1")
			
		print "Imported " + str(len(fileList)) + " geometries. File listing:\n"
		print fileList
		print "\n"
Esempio n. 4
0
def saveShaders(path, presetName, lookDict):
    # para cada assetSet no lookpreset
    for assetSet in lookDict:
        # acessa a lista de shaders
        shaderList = lookDict[assetSet][0]
        print 'saving shaders...'
        # define o nome da pasta de shaders, como o nome do asset, convertidos os ns para prefixos com '_'
        shadersPath = os.path.join(path, 'shaders', nsToPrefix(assetSet))
        # cria o diretorio se nao houver
        if not os.path.exists(shadersPath):
            os.makedirs(shadersPath)
        # grava cada shader da lista
        for shader in shaderList:
            SG = pm.listConnections(shader, type='shadingEngine')[0]
            pm.select(SG, r=True, ne=True)
            pm.file(os.path.join(shadersPath,
                                 stripNameSpace(shader) + '.ma'),
                    op="v=0",
                    typ="mayaAscii",
                    es=True,
                    force=True)
        print 'shaders saved.'
Esempio n. 5
0
def assignShaders(selDict, presetDict, useNs, useObjSel, shaderNs, shaderPath):
    print 'Assinalando SHADERs...'
    # conforme os parametros gera o nome de procura com ou sem ns
    for assetSet in selDict:
        if useNs:
            assetSetName = assetSet
        else:
            assetSetName = stripNameSpace(assetSet)
        # gera uma lista com todos os os itens no dicionario que correspondem ao nome do asset selecionado(com ns ou sem)
        assingListName = [x for x in presetDict if assetSetName in x]
        # noinspection PyNonAsciiChar
        if assingListName:
            # Se foi achado mais de um match de nome, somente o primeiro sera usado.
            # Por definicao se usarmos mais de um rig igual, devemos usar namespace para diferencia-los
            # ou o primeiro preset achado sera aplicado em todos os rigs iguais.
            if len(assingListName) > 1:
                print 'Aviso: mais q um asset achado com o mesmo base name. Pode haver erro de assignment'
            # acessa a lista de coneccao dos shaders lida no preset
            assignList = presetDict[assingListName[0]][1]
            # conforme os parametros gera a lista de geometrias
            if useObjSel:
                geoList = selDict[assetSet]
            else:
                geoList = pm.sets(assetSet, q=True)

            # gera uma lista para depois apagar os shaders antigos
            oldShadersList = {u'lambert1'}

            # para cada geometria definidas na lista, gera o nome de busca
            for geo in geoList:
                if useNs:
                    geoName = geo
                else:
                    geoName = stripNameSpace(geo)

                geoAssignName = [x for x in assignList if geoName in x]
                # Se forem achados mais de um nome de geometria igual pode haver erro de aplicacao de shader.
                # Por definicao os rigs devem ter modelos com nomes unicos
                if len(geoAssignName) > 1:
                    print 'Aviso: mais q uma geometria com o mesmo base name.Pode haver erro de assingment.'  # acessa o nome do shader

                if geoAssignName:
                    shader = assignList[geoAssignName[0]]
                else:
                    print 'Aviso: geometria nao encontrada no assignList'
                    shader = 'lambert1'
                    print 'Aviso:' + geoName + ' nao encontrada no assignList'

                # faz o assign do shader. Se ele for o default aplica o q j� esta na cena.
                if shader != 'lambert1':
                    # se o shader ainda nao existir na cena, importa.
                    if not pm.objExists(shaderNs + ':' + shader):
                        # carrega o shader. Seta o path usando o nome do asset que estava no preset.
                        shaderFullPath = os.path.join(
                            shaderPath, 'shaders',
                            nsToPrefix(assingListName[0]), shader + '.ma')
                        nodeList = pm.file(shaderFullPath,
                                           i=True,
                                           ns=shaderNs,
                                           mnc=True,
                                           typ="mayaAscii",
                                           rnn=True)
                        # apaga os namespaces que existirem no node importado do shader
                        importedNS = set([])
                        for node in nodeList:
                            if node[0] == '|':
                                node = node[1:]
                            pm.rename(node,
                                      shaderNs + ':' + stripNameSpace(node))
                            nsList = getNameSpace(node)
                            importedNS.add(nsList)
                        if shaderNs in importedNS:
                            importedNS.remove(shaderNs)

                        for ins in importedNS:
                            allNsToDelete = ins.split(':')[1:]
                            for i in reversed(range(0, len(allNsToDelete))):
                                nsToDelete = ''
                                for j in range(0, i + 1):
                                    nsToDelete = nsToDelete + allNsToDelete[
                                        j] + ':'
                                nsToDel = shaderNs + ':' + nsToDelete
                                pm.namespace(rm=nsToDel)

                    # conecta o shader na geometria
                    SGList = pm.listConnections(shaderNs + ':' + shader,
                                                type='shadingEngine')
                    if SGList:
                        SG = SGList[0]
                        oldShader = getShaderFromGeo(geo)
                        pm.sets(geo, e=True, forceElement=SG)
                        # guarda a lista de shaders antigos para apagar.
                        if oldShader:
                            oldShadersList.add(oldShader[0])
                    else:
                        print 'Aviso: SG  de' + shader + ' nao encontrada. Assinalando lambert1'
                        pm.sets(geo,
                                e=True,
                                forceElement='initialShadingGroup')

                # se o shader for o default, assinala o default existente na cena.
                else:
                    pm.sets(geo, e=True, forceElement='initialShadingGroup')

            # apaga shaders antigos
            # sao apagados todos juntos depois para garantir que n�o serao apagados
            # shaders que estao sendo usados em outros modelos da cena
            oldShadersList.discard('lambert1')
            for shader in oldShadersList:
                SG = pm.listConnections(shader, type='shadingEngine')[0]
                geoList = pm.listConnections(SG, type='shape')
                if not (geoList):
                    try:
                        pm.delete(shader, SG)
                    except:
                        print 'nao deu pra apagar shader'

            # remove ns da importacao dos shaders
            # Varias mensagens de clash serao emitidas. Mas isso nao ser� problema.
            if pm.namespace(exists=shaderNs):
                pm.namespace(moveNamespace=[shaderNs, ':'], force=True)
                pm.namespace(removeNamespace=shaderNs)
            print 'SHADERs OK!'
Esempio n. 6
0
 def sg_select_export(self, sgList, oPath):
     pm.select(cl=1)
     pm.select(sgList, noExpand=1)
     # ToDo : check this command
     pm.file(oPath, op='v=0', f=1, es=1, type="mayaBinary")