zoukankan      html  css  js  c++  java
  • Fast preview in nuke

    import maya.cmds as cmds
    import re

    layer_List
    = cmds.ls(type ='renderLayer')
    layer_Nuke
    = [u'color', u'occ', u'shadow',u'specular']

    myIntersector
    = cmds.stringArrayIntersector()

    cmds.stringArrayIntersector(myIntersector, edit
    =True, intersect=layer_List)
    cmds.stringArrayIntersector(myIntersector, edit
    =True, intersect=layer_Nuke)

    check_List
    = cmds.stringArrayIntersector(myIntersector, query=True)

    if(layer_Nuke == check_List):
    cmds.deleteUI(myIntersector)
    else:
    cmds.deleteUI(myIntersector)
    cmds.error(
    "There must be four renderable layers named color specular occ shadow")

    #Define nuke file by maya
    's render setting
    defRes = cmds.listConnections('defaultRenderGlobals.resolution') #Maya render resolution
    reslWidthAtr
    = str(cmds.getAttr(defRes[0] +'.width'))
    reslHeightAtr
    = str(cmds.getAttr(defRes[0] +'.height'))

    nukeFormat
    ='\"'+ reslWidthAtr +''+ reslHeightAtr +' 0 0 '+ reslWidthAtr +''+ reslHeightAtr +' 1'+'\"' #Nuke's project setting

    renStartFrame
    = cmds.getAttr('defaultRenderGlobals.startFrame')
    renEndFrame
    = cmds.getAttr('defaultRenderGlobals.endFrame')
    renRange
    = str(renEndFrame - renStartFrame +1)

    #Get maya file name
    currentScen
    = cmds.file(q=True, sn=True)

    if(None == currentScen):
    cmds.error(
    'Save scene first!')
    else:
    pass

    currentScenSplit
    = re.split('/', currentScen)
    mayaFile
    = currentScenSplit[-1]
    mayaFileName
    = mayaFile[0:-3]

    #create nuke project and put it into maya
    's scenes folder
    nukeFile = currentScen[0:-3] +'.nk' #named with maya project name
    imageName
    = cmds.getAttr('defaultRenderGlobals.imageFilePrefix') #File name prefix below File output of the Render Setting in maya

    if(None == imageName):
    imageName
    = mayaFileName
    else:
    pass

    #Get project path
    imageFolderPath
    = re.split('scenes', currentScen)[0] +'images'

    #Get image format
    imageType
    = cmds.getAttr('defaultRenderGlobals.imageFormat')
    ext
    =''

    if(19== imageType):
    ext
    ='.tga'
    elif(
    8== imageType):
    ext
    ='.jpg'
    elif(
    7== imageType):
    ext
    ='.iff'
    elif(
    31== imageType):
    ext
    ='.psd'
    else:
    print (
    'File format is not in tga jpg iff psd')

    #Define nuke framePadding
    if(cmds.getAttr('defaultRenderGlobals.extensionPadding') <2):
    framePadding
    = imageName +'.%'+'d'
    imageNameFull
    = framePadding + ext
    else:
    framePadding
    = imageName +'.%0'+ str(cmds.getAttr('defaultRenderGlobals.extensionPadding')) +'d'
    imageNameFull
    = framePadding + ext

    #Read node file path
    colorImagePath
    = imageFolderPath +'/color/'+ imageNameFull
    occImagePath
    = imageFolderPath +'/occ/'+ imageNameFull
    shadowImagePath
    = imageFolderPath +'/shadow/'+ imageNameFull
    specularImagePath
    = imageFolderPath +'/specular/'+ imageNameFull

    nukeFileStr
    ="""
    #! D:/Program Files/Nuke6.0v1/Nuke6.0.exe -nx
    version
    6.0 v1
    define_window_layout_xml {
    <?xml version="1.0" encoding="UTF-8"?>
    <layout version="1.0">
    <window x="350" y="51" w="1478" h="949" screen="0">
    <splitter orientation="1">
    <split size="929"></split>
    <splitter orientation="1">
    <split size="40"></split>
    <dock id="" hideTitles="1" activePageId="Toolbar.1">
    <page id="Toolbar.1"></page>
    </dock>
    <split size="885"></split>
    <splitter orientation="2">
    <split size="446"></split>
    <dock id="" activePageId="Viewer.1">
    <page id="Viewer.1"></page>
    </dock>
    <split size="446"></split>
    <dock id="" activePageId="DAG.1">
    <page id="DAG.1"></page>
    <page id="Curve Editor.1"></page>
    </dock>
    </splitter>
    </splitter>
    <split size="537"></split>
    <dock id="" activePageId="Properties.1">
    <page id="Properties.1"></page>
    </dock>
    </splitter>
    </window>
    </layout>
    }
    Root {
    inputs
    0
    name
    """ + nukeFile + """
    frame
    3
    first_frame
    3
    last_frame
    4
    lock_range
    true
    format
    """ + nukeFormat + """
    proxy_type scale
    proxy_format
    "1024 778 0 0 1024 778 1 1K_Super_35(full-ap)"
    }
    Read {
    inputs
    0
    file
    """ + shadowImagePath + """
    format
    """ + nukeFormat + """
    last
    10
    name Read4
    label shadow
    xpos
    -188
    ypos
    -159
    }
    Read {
    inputs
    0
    file
    """ + specularImagePath + """
    format
    """ + nukeFormat + """
    last
    10
    name Read2
    label specular
    xpos
    -494
    ypos
    -261
    }
    Read {
    inputs
    0
    file
    """ + colorImagePath + """
    format
    """ + nukeFormat + """
    last
    10
    name Read1
    label color
    xpos
    -713
    ypos
    -248
    }
    Merge2 {
    inputs
    2
    operation screen
    name Merge1
    xpos
    -586
    ypos
    -103
    }
    Read {
    inputs
    0
    file
    """ + occImagePath + """
    format
    """ + nukeFormat + """
    last
    10
    name Read3
    label occ
    xpos
    -330
    ypos
    -196
    }
    Merge2 {
    inputs
    2
    name Merge2
    xpos
    -471
    ypos
    -49
    }
    Merge2 {
    inputs
    2
    name Merge3
    xpos
    -342
    ypos
    16
    }
    Viewer {
    frame
    3
    channels rgb
    input_process
    false
    name Viewer1
    xpos
    -244
    ypos
    77
    }
    """


    fileHandle
    = open(nukeFile, 'w')
    fileHandle.write(nukeFileStr)
    fileHandle.close()
  • 相关阅读:
    前端mvc mvp mvvm 架构介绍(vue重构项目一)
    SPA页面缓存再优化二
    消除浏览器对input输入框的自动填充
    单页面系统的一些性能优化
    城市联动组件插件思想分析
    前端性能优化点总结
    ui-router 1.0以上的 $stateChangeStart
    (转) view视图的放大、缩小、旋转
    (转)代码中实现button
    objective-c 强弱引用、properties的学习
  • 原文地址:https://www.cnblogs.com/JimmyCode/p/1966675.html
Copyright © 2011-2022 走看看