在openmayaint中快速转换到python vmpo数组

2024-03-29 06:00:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在两个需要不同格式相同数据的api之间架起桥梁,我正试图找到一些在python中将一种类型的大型数组转换成另一种类型的快速方法(我知道应该用c++来实现,但在现阶段它仍然是在python中)。在

一个api(maya)将所有点作为mpoint返回,其中3个双精度值作为位置,另一个api(Alembic)希望它们作为imathv3f

由于明显的原因,这是缓慢的:

[imath.V3f(p[0], p[1], p[2]) for p in mfnMesh.getPoints(OpenMaya.MSpace.kObject)]

有没有更聪明的方法?在


Tags: 数据方法api类型格式精度原因alembic
1条回答
网友
1楼 · 发布于 2024-03-29 06:00:41

如果分配一个大数组的数组来代替一个大的数组,你可以把一个大的数组的理解去掉。在

gen_ex = (imath.V3f(p[0], p[1], p[2]) for p in mfnMesh.getPoints(OpenMaya.MSpace.kObject))
for pt in gen_ex():
    other_data_structure.add_point(pt.x, pt.y, pt.z)

 #or, if the other accepts an iterable:
 other_data_structure.add_points(*gen_ex)

如果不在剖析器下尝试,很难知道它是否有用。你真的描述了现有的解决方案吗?你上岸这一步是不是真的减速了?在

相关问题 更多 >