Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无变换的中心轴_Python_Maya_Mel_Pymel - Fatal编程技术网

Python 无变换的中心轴

Python 无变换的中心轴,python,maya,mel,pymel,Python,Maya,Mel,Pymel,是否有一种方法可以在不使用xform的情况下使对象的轴居中 我真的很想尝试找到一个pyMel版本,或者maya api,因为xform通常比pyMel或api解决方案慢10倍 显然,您可以使用xform实现它,如下所示: xform(obj,cp=1) 但我正在尝试另一种方法,有人知道什么吗?在API中,它将调用mfnTransform.setRotatePivotTranslation和setScalePivotTranslation,并启用“balance”。没有足够的开销来保证解决方案——

是否有一种方法可以在不使用
xform
的情况下使对象的轴居中

我真的很想尝试找到一个pyMel版本,或者maya api,因为xform通常比pyMel或api解决方案慢10倍

显然,您可以使用xform实现它,如下所示:

xform(obj,cp=1)


但我正在尝试另一种方法,有人知道什么吗?

在API中,它将调用mfnTransform.setRotatePivotTranslation和setScalePivotTranslation,并启用“balance”。没有足够的开销来保证解决方案——很难看出这是一个瓶颈。

是否要找到PyMEL版本?还是一种面向对象的方法<代码>变换(obj,cp=1)在PyMEL中。然而,产生相同结果的面向对象方法与theodox的响应非常相似,您将在其中执行以下操作:

obj.setScalePivot(obj.c.get())
obj.setRotatePivot(obj.c.get())

将对象轴居中基于边界框的中心
obj.c.get
将返回给您。只需将其插入上述方法。

您应该能够直接处理转换属性,但我更好奇的是您的“10倍慢”评论的依据。你是怎么得出这个数字的?它一定是针对一个不同的问题,因为在这种情况下,您没有一个不同的解决方案来作为基准。。。(我猜无论您之前做了什么,xform命令都不是慢的部分,但它周围的MEL是慢的。在这种情况下,仅从Python调用xform应该会有很大帮助。)xform触发undo,这总是有点慢。但不更新撤消是有问题的,您可以暂时挂起撤消。但这使得它成为一个可用性问题。如果您对实现自己的撤销感兴趣,api可以更快地完成这项工作。不管怎样,如果你真的对性能敏感(过早优化),你唯一的选择是使用C++来处理所有的.@ MARK.Wikin,我已经多次阅读过XForm总是比其他选项慢,JooJaa也提到XForm的撤销函数部分,尽管我确实认为我需要深入研究api以实现更简洁的编码,比如:)你认为这会比xform(cp=1)更快吗?@ShannonHochkins不,它很可能会稍微慢一点。你介意我问一下为什么@joojaa?xForm不需要执行完全相同的任务吗?@ShannonHochkins可能需要,但xForm不需要退出本机代码。定时命令并不难,你知道,自己测试看看。除此之外,你为什么会在意其他事情?我不讨厌xform哈哈,我从来都不同意它的阅读方式,我更喜欢知道thr命令在后台做什么,这样我就可以了解更多@joojaa,我如何计算它们的时间?我不确定你将如何实现这一点,你能用你的代码来演示吗?长的部分是把一个场景对象转换成一个mfnTransform,这通常意味着从一个mfnDagNode获取它,而这个mfnDagNode又通常来自一个mfnSelectionlistt。。。此页面的中间示例:。这是一个很大的工作,几乎没有速度增益。别麻烦了,我已经在为其他事情使用api了,所以它没有那么多工作,如果你能给函数计时,看看哪一个花费的时间最长,那就太好了。使用timeit模块:获得准确的分析数据。然而,在这种情况下,结果将在很大程度上取决于您正在处理的对象的数量——正如我所说的,除非您一次将数百个枢轴置于中心,否则此操作的速度应该不会太重要。所有函数都将旋转/缩放枢轴设置为零,并反转rotatePivotTranslate/scalePivotTranslate矩阵,这不需要太多的数学运算,而且都是在maya核心中完成的。