我尝试使用OpenMaya MMeshIntersector类在网格上查找最近点,但我想限制它搜索的距离。我用这个来得到重心坐标,得到一个更精确的值。你知道吗
每当我输入一个值来限制距离时,就会得到一个RuntimeError:(kFailure):意外的内部故障。但是,如果我输入的值高于47.0,它就工作了,但是对于我的用法来说,这个值太高了,我希望使用小于1的值。 我不知道如何使用maxDistance标志,也没有太多关于如何使用它的文档。有人有任何关于如何使用它的链接或信息吗?你知道吗
我在谷歌上搜索过玛雅人的文档,但没能找到具体的信息
import maya.OpenMaya as OpenMaya
def getBarycentricCoords(sourceMesh, targetMesh, distanceThreshold):
selectionList = OpenMaya.MSelectionList()
selectionList.add(sourceMesh)
sourceMeshDag = OpenMaya.MDagPath()
selectionList.getDagPath(0, sourceMeshDag)
selectionList = OpenMaya.MSelectionList()
selectionList.add(targetMesh)
targetMeshDag = OpenMaya.MDagPath()
selectionList.getDagPath(0, targetMeshDag)
mObj = OpenMaya.MObject()
currentFace = OpenMaya.MItMeshPolygon( sourceMeshDag, mObj )
targetMeshMPointArray = OpenMaya.MPointArray()
targetMeshMFnMesh = OpenMaya.MFnMesh(targetMeshDag)
targetMeshMFnMesh.getPoints(targetMeshMPointArray, OpenMaya.MSpace.kWorld)
matrix = sourceMeshDag.inclusiveMatrix()
node = sourceMeshDag.node()
intersector = OpenMaya.MMeshIntersector()
intersector.create( node, matrix )
pointInfo = OpenMaya.MPointOnMesh()
uUtil = OpenMaya.MScriptUtil(0.0)
uPtr = uUtil.asFloatPtr()
vUtil = OpenMaya.MScriptUtil(0.0)
vPtr = vUtil.asFloatPtr()
pointArray = OpenMaya.MPointArray()
vertIdList = OpenMaya.MIntArray()
for idx in range(targetMeshMPointArray.length()):
intersector.getClosestPoint( targetMeshMPointArray[idx], pointInfo, distanceThreshold )
pointInfo.getBarycentricCoords(uPtr,vPtr)
我希望maxDistance可以使用任何浮点值,但我从maya获得的RuntimeError: (kFailure): Unexpected Internal Failure
并不能真正帮助我调试错误本身。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐