Esempio n. 1
0
File: UI.py Progetto: LuoOu/fc_Pro
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)
Esempio n. 2
0
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)
Esempio n. 3
0
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')
    '''