def assignMaterialToSelected(*args): materials = mc.text('tempMaterial', q=1, l=1) material = materials.partition(',')[0] curSels = mc.ls(sl=1) basicOperater.assignMaterialWithDisplacement(material, material, sels=curSels) enableSubdiv_dis = mc.checkBox('enableSubdiv_dis', q=1, v=1) if enableSubdiv_dis: targetMaterialType = mc.optionMenuGrp('createMaterial', q=1, v=1) renderer = materialConverter.getRendererName(targetMaterialType) dataDict = materialConverter.prepareData(['subdiv_displacementAttrs']) subdiv_displacementData = dataDict['subdiv_displacementAttrs'] materialConverter.convertSet_SudivsDisplacementForSelected( subdiv_displacementData, 'Default', renderer)
def __createDisplacement_connect(heightFileNode, targetMaterial, heightDepth, heightMap_8bit): global zeroHeight global targetMaterialType disNode = mc.shadingNode('displacementShader', asShader=1) mc.setAttr(disNode + '.scale', heightDepth) mc.connectAttr(heightFileNode.outAttr, disNode + '.displacement') if heightMap_8bit: mc.setAttr(heightFileNode.specificFileNode + '.alphaOffset', -zeroHeight) sgNode = basicOperater.createShadingGroup_connectDisplacement( targetMaterial, disNode) renderer = materialConverter.getRendererName(targetMaterialType) if renderer == 'Redshift': basicOperater.convertMayaDisNodeToRsDisNode(sgNode)
def import_assignToSelectedObjects(thisMaterial, thisObjects, *args): sels = thisObjects objSelected = False if sels != []: for sel in sels: if mc.objectType(sel) == 'transform' or mc.objectType( sel) == 'mesh': objSelected = True break prepareGlobalVars() global textureTemplateUsing global userDefinedPath global targetMaterialType global usingMayaColorManagement global isUdim global openglNormal dataDict = prepareData([ 'textureTemplates', 'materialAttrs', 'bumpAttrs', 'subdiv_displacementAttrs' ]) textureTemplatesData = dataDict['textureTemplates'] bumpData = dataDict['bumpAttrs'] materialAttrsData = dataDict['materialAttrs'] subdiv_displacementData = dataDict['subdiv_displacementAttrs'] defaultAttr_specificAttr_dict = textureTemplatesData[textureTemplateUsing] for key in defaultAttr_specificAttr_dict: if defaultAttr_specificAttr_dict[key] == '': defaultAttr_specificAttr_dict[key] = 'none' renderer = materialConverter.getRendererName(targetMaterialType) thisAbstractMaterial = Material('Default', materialAttrsData['Default']) thisAbstractMaterial.attrs[ 'primaryReflectionBRDF'] = materialConverter.Attr( 'primaryReflectionBRDF', "{0:'default',1:'ggx'}") thisAbstractMaterial.attrs['primaryReflectionBRDF'].value = 1 thisAbstractMaterial.attrs[ 'primaryReflectionWeight'] = materialConverter.Attr( 'primaryReflectionWeight', 'default') thisAbstractMaterial.attrs['primaryReflectionWeight'].value = 1 thisAbstractMaterial.attrs[ 'primaryReflectionColor'] = materialConverter.Attr( 'primaryReflectionColor', 'default') thisAbstractMaterial.attrs['primaryReflectionColor'].value = [1, 1, 1] thisAbstractMaterial.attrs['diffuseWeight'] = materialConverter.Attr( 'diffuseWeight', 'default') thisAbstractMaterial.attrs['diffuseWeight'].value = 1 thisAbstractMaterial.attrs['diffuseColor'] = materialConverter.Attr( 'diffuseColor', 'default') thisAbstractMaterial.attrs['diffuseColor'].value = [1, 1, 1] fileNodes = __setAbstractMaterial(thisAbstractMaterial, defaultAttr_specificAttr_dict, userDefinedPath, thisMaterial, materialAttrsData, textureTemplatesData, usingMayaColorManagement, isUdim) targetMaterial = Material(targetMaterialType, materialAttrsData[targetMaterialType]) thisAbstractMaterial.convertTo(targetMaterial) targetMaterial = thisAbstractMaterial.createShader(name=thisMaterial) wastedBumpNode = None bumpFileNode = None #create and connect uv node uvNode = mc.shadingNode('place2dTexture', au=1) for fileNode in fileNodes: if fileNode.bumpNode is not None: bumpFileNode = fileNode wastedBumpNode = fileNode.bumpNode basicOperater.connectUVNodeToTextureNode(uvNode, fileNode.specificFileNode) #create correct bump node for material if renderer == 'vray': inputBumpTextureNode = mc.listConnections(wastedBumpNode + '.bumpValue')[0] inputAttr = inputBumpTextureNode + '.outColor' outputAttr = mc.listConnections(wastedBumpNode + '.outNormal', p=1)[0] mc.connectAttr(inputAttr, outputAttr, f=1) bumpNode = materialConverter.convertConnect_BumpNode( bumpData, materialAttrsData, [targetMaterial], targetMaterialType) if bumpNode is not None: if openGLNormal: if renderer == 'Redshift': mc.setAttr(bumpNode + '.flipY', 0) if renderer == 'arnold': mc.setAttr(bumpNode + '.aiFlipR', 0) mc.setAttr(bumpNode + '.aiFlipG', 0) if renderer == 'vray': pass else: if renderer == 'Redshift': mc.setAttr(bumpNode + '.flipY', 1) if renderer == 'arnold': mc.setAttr(bumpNode + '.aiFlipR', 0) mc.setAttr(bumpNode + '.aiFlipG', 1) if renderer == 'vray': normalFileNode = mc.listConnections(bumpNode + '.bumpMap')[0] outNode = materialConverter.createVrayDirectXNormalConnect( normalFileNode) mc.connectAttr(outNode + '.outColor', bumpNode + '.bumpMap', f=1) #outNode = materialConverter.createVrayDirectXNormalConnect(bumpFileNode.specificFileNode) #mc.connectAttr(outNode + '.outColor' ,bumpNode + '.bumpMap') #delete unused bump node if wastedBumpNode is not None: mc.delete(wastedBumpNode) #create disNode global heightMap_8bit global heightDepth global heightMapAsDisplacement if heightMapAsDisplacement and thisAbstractMaterial.heightFileNode is not None: __createDisplacement_connect(thisAbstractMaterial.heightFileNode, targetMaterial, heightDepth, heightMap_8bit) #if something selected,set the selected objects' subdiv_dis attrs if objSelected: mc.select(sels) materialConverter.convertSet_SudivsDisplacementForSelected( subdiv_displacementData, 'Default', renderer) if objSelected: mc.select(sels) mc.hyperShade(a=targetMaterial) mc.select(targetMaterial) #mc.nodeEditor('hyperShadePrimaryNodeEditor',e = 1, nodeViewMode = 'connected') '''