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/archive/2011/02/28/1966675.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值