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()
原文地址:https://www.cnblogs.com/JimmyCode/p/1966675.html