我想将object A
捕捉/对齐object B
的顶点。我尝试过使用下面的脚本,但它不是完全捕捉到顶点,而是使用偏移捕捉。谁能给我一个解决办法吗。这是快照。在
import maya.cmds as cmds
vertices = [];
srcObj = "pCone1";
def snapToVertex(vertex,object):
cmds.select(vertex);
x,y,z = cmds.pointPosition();
cmds.select(object);
cmds.duplicate();
cmds.move(x,y,z);
def processTask():
cmds.select( cmds.polyListComponentConversion( tv=True ) );
vertices = cmds.ls(sl = True);
print vertices;
for vrtx in vertices:
snapToVertex(vrtx,srcObj);
processTask();
用我上面的脚本捕捉,它没有完全捕捉到顶点。在
但它应该与下面的图片完全吻合。在
你可以大大简化你的代码,只使用几个命令
请记住以下几点注意事项:
1)这是假设源圆锥体的枢轴位于尖端,尖端位于原点。。。因此,它需要按您想要的方式设置源圆锥体,就好像原点是要捕捉到的顶点一样。如果要“固定”到的对象被旋转(无需进行任何类型的矢量数学以确定位置偏移),这也会很有帮助
2) 要在ls命令中使用orderedSelection(os)标志,需要确保在“选择”子区域下的“maya首选项”中启用了轨迹选择顺序,这样就可以按照要创建的顺序选择所需的顶点(自上而下、自下而上,任何方式)垂直索引顺序
这也应该更快-通过跟踪任何创建的对象,您实际上不需要选择任何对象,并且可以直接操作对象。我还把它放在一个循环中,不需要任何函数调用,这样会更快(尽管,除非你对这些函数进行了大量的处理,否则你可能不会注意到这一点)。在
不过,根据您的需要,您可能实际上希望在多个位置使用快照功能;但是,我建议您不要使用复制功能,以防出现您想在不复制的情况下捕捉的情况。在
类似这样的事情(同样要遵守上述的注意事项):
^{pr2}$最好不要在},因为Maya会以某种方式记住轴的位置。圆锥体的轴点偏移(用于将轴捕捉到顶点)取决于圆锥体本身的大小。{cd6>默认情况下。在
Modify
主菜单中使用Reset Transformations
命令,Cone
因为轴心点会回到它的初始位置。Python中有用的Freeze Transformations
命令的模拟值是cmds.makeIdentity()
。即使已沿1
轴移动了1
个单位(例如),也不要忘记从variable y
中减去{将此代码段添加到代码中以移动
World Space
中的重复项:您可以测试此代码(在这里我将pivot上移了
^{pr2}$0.5
):相关问题 更多 >
编程相关推荐