使用python你可以干下面的事:
- 读取、设置节点位置的属性
- 控制节点图的推拉
在Nukepedia上有一个视频教程
读取、设置节点位置
通过其knob可以存取节点的x y位置
node = nuke.createNode( 'NoOp' )
print node['xpos'].value()
使用常用的knob方法设置新位置:
node['xpos'].setValue(100)
print 'new position is', node['xpos'].value()
获取位置的其他方法:
node.setXpos( 111 )
node.setYpos( 222 )
xPos = node.xpos()
yPos = node.ypos()
print 'new x position is ' , xPos
print 'new y position is', yPos
同时设置x y
node.setXYpos( 123, 234 )
在缩放1的情况下获取节点像素的宽,高
nodeWidth = node.screenWidth()
nodeHeight = node.screenHeight()
print "node dimensions are %s x %s" %( nodeWidth, nodeHeight )
自动安排节点,不重叠:
for n in nuke.allNodes():
n.autoplace()
将节点吸附到最近的节点:
for n in nuke.allNodes():
nuke.autoplaceSnap( n )
控制节点图的缩放
为了缩放,缩放节点图,用nuke.zoom()
当没有参数时,这将返回当前缩放值:
nuke.zoom()
大于0的参数,节点图就放大到相应倍数。例如,将视口重新设置为1:1:
nuke.zoom( 1 )
也可以指定缩放的中心,缩放到指定节点:
node = nuke.selectedNode()
nuke.zoom( 3, [node.xpos(), node.ypos() ])
上面的例子缩放到节点的左上方。缩放到节点中间
node = nuke.selectedNode()
xC = node.xpos() + node.screenWidth()/2
yC = node.ypos() + node.screenHeight()/2
nuke.zoom( 3, [xC, yC] )
例子
用Dot节点做的圈圈
import math
for x in xrange(1000):
n = nuke.node.Dot( xpos = math.sin(x)*100, ypos = math.cos(x)*100 )
n['hide_input'].setValue(True)
螺旋
import math
for x in xrange(1000):
n = nuke.nodes.Dot( xpos = math.sin(x)*x/10, ypos =math.cos(x).x/10)
n['hide_input'] .setValue(True)
控制节点间距
import nuke
def scaleNodes( scale ):
nodes = nuke.selectedNodes()
amount = len( nodes)
if amount ==0:
return
allX = sum([n.xpos() + n.screenWidth()/2 for n in nodes]
allY = sum( [n.ypos() + n.screenHeight()/2 for n in nodes]
centreX = allX / amount
centreY = allY / amount
for n in nodes:
n.setXpos( centreX + (n.xpos() - centreX )*scale )
n.setYpos( centreY +(n.ypos() - centreY) * scale )
scaleNodes( 3)
scaleNodes( .7 )
网友评论