使用python / API

时间:2019-02-26 22:45:15

标签: python maya

我试图在网格上但在半径内找到最接近的顶点。这是为了避免因为遍历所有顶点而浪费时间。例如,我有2个具有不同顶点数的衬衫,并且我试图找到在mesh1右袖子上的mesh2右袖子上最接近的vertex1顶点。我不想在袖子上遍历所有顶点,因为从逻辑上讲,没有顶点会足够靠近。我知道有一个假设,可能还有其他顶点靠近,但是对于我正在寻找的用法,我不认为这是一个问题。

我有遍历顶点并获得最接近点的代码,但是,如果网格的顶点数很高,即使使用API​​,它也将花费很长时间。

maya中是否有一个功能可以让您根据半径限制顶点?或关于如何编写可实现此功能的任何技巧?

1 个答案:

答案 0 :(得分:0)

您可以使用节点NearestPointOnMesh。在maya API中,您可以查找可以进行光线投射(Querying of a point is within a mesh maya python api)的MFnMesh :: closestIntersection类

vtx = 'shirt1.vtx[0]'
pos = cmds.pointPosition(vtx)
m = 'shirts2'
objShape = cmds.listRelatives(m, ni=True, type='mesh')[0]
node = cmds.createNode('nearestPointOnMesh')
cmds.connectAttr(objShape + ".worldMesh", node + ".inMesh")
cmds.setAttr(node + ".inPosition", type = 'double3', *pos)
target_pos = cmds.getAttr(node + '.position')[0]
face = cmds.getAttr(node + ".nearestFaceIndex")