感谢您花点时间阅读本文!所以,我的第一个问题是我试图创建一个函数" selectionData()",以获得一个对象的翻译,旋转和缩放值,然后将它们返回为一本字典,但发现自己有点挣扎。使用下面列出的代码,我不断得到的是对象的名称。如何修改它以使其翻译,旋转和缩放值作为字典返回?
我的第二个问题是我正在尝试创建一个函数," setData(data)",它将上述使用selectionData()构建的字典作为输入,并恢复数据。字典到选定的对象。我该怎么做?
如果这些问题中的任何一个都是愚蠢的,我表示歉意,但感谢您的时间,无论如何!干杯!
目前的代码如下:
int read(int v[100])
{
int n;
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&v[i]);
}
return n;
}
int main()
{
int v[100];
int n = read(v);
print(n,v);
}
答案 0 :(得分:0)
首先,要列出所有带变换的对象,可以使用以下命令:
cmds.ls(selection=True, transforms=True, dagObjects=True)
如果要读取/写入变换,则无需单独进行平移,旋转和缩放。您可以像这样读取复合变换矩阵:
xform_matrix = cmds.xform(source_object, query=True, matrix=True)
您将获得一个包含16个可以应用于其他对象的浮点数的列表:
cmds.xform(destination_object, matrix=xform_matrix)
我不确定您希望如何将变换从一组选定对象映射到另一组。如果您描述,我将能够发布完整的代码。
以下脚本将收集字典中所有选定对象的复合变换矩阵,并将长对象名称作为键:
selected_objects_matrix = {}
for current_object in cmds.ls(selection=True, transforms=True, dagObjects=True):
selected_objects_matrix[cmds.ls(current_object, long=True)] = cmds.xform(
current_object,
query=True,
matrix=True)
然后,如果您在Maya中移动/旋转/缩放对象,则可以像这样恢复:
for current_object in selected_objects_matrix:
cmds.xform(
current_object,
matrix=selected_objects_matrix[current_object])
答案 1 :(得分:0)
你真的只想反过来做你所拥有的
设置q=1
会将命令设置为query mode
。
删除此标志会将命令默认为edit mode
getAttr
和setAttr
是他们各自的命令,但是您需要知道您正在设置的数据。即使你抓住上面的s
属性,你只能获取x
值,所以当你设置它时,你需要指定sx
cmds.xform ( m , ws = 1 , t = posValues)
cmds.xform( m , ws = 1 , rotation = rotValues )
cmds.setAttr ( m + '.sx', scaleValue) # sx because you are only grabbing the X Value