我正在尝试为Maya创建Mel或Python脚本,它会逐行移动相机通过方形矩阵。能够输入自定义行/列值(N)会很棒。
我草拟了an algorithm我需要的,但遗憾的是缺乏实施代码的知识。
非常感谢代码方面的任何帮助 - 谢谢。
答案 0 :(得分:2)
虽然@BrendanAbels答案合理,但它回避了Maya的用途。 Maya用于动画,因此你很少想在代码中移动东西(这样,因为它没有用处)。你想要的是你的代码启动一个节点结构来完成你想要的。
构建节点的优点如下:
好的,我们该如何做到这一点。有几种方法。我们可以使用ramp和lookup节点。或者我们可以直接做到并直接连接表达式节点。那么这在梅尔看起来是什么样的:
addAttr -at long -sn N -k 1 persp;
addAttr -at long -sn Xmax -k 1 -min 1 -dv 10 persp;
addAttr -at long -sn Ymax -k 1 -min 1 -dv 10 persp;
expression -s ("translateX = N % Xmax;\r\n" +
"translateY = ( (N - translateX)/Xmax ) % Ymax;")
-o persp -uc all persp;
connectAttr time1.o persp.N;
// eliminate prev line if you want to drive manually
请注意 persp 节点如何调整3个新频道。我把时间连接到你的节点,但你可以真正地连接任何东西。自己驾驶它可以让你做不同的事情(如果你愿意,可以在渲染过程中移动相机)。
你想要使用它有点不透明,因此很难说更多。可以说我们可以用较少的工作从头到尾解决你的整个问题,你做任何我们以前见过的事情都是极不可能的。
答案 1 :(得分:1)
您要使用的主要命令是ls,xform,currentTime和setKeyFrame
以下是设置变换位置的python脚本的基础知识。您可以使用currentTime
更改时间值,使用setKeyFrame
设置密钥。
此脚本希望您选择相机变换节点(即第一个ls
命令)。
import maya.cmds as cmds
nx = 10
ny = 10
cam = cmds.ls(selection=True)[0]
z = 0
for x in range(nx):
for y in range(ny):
cmds.xform(cam, worldSpace=True, translation=[x, y, z])