는 MXS 관용구와 유사한 아무도 라이너 없다 - 그리고 멜에서 할 수있는 쉬운 방법. 그러나 파이썬에서는 이것을 매우 쉽게 할 수 있습니다.
먼저 좌표계의 행렬을 OpenMaya API의 일부인 MMatrix
으로 가져와야합니다. 그런 다음 다른 api 클래스 인 MPoint로 확인하려는 위치를 얻습니다. 여기를 얻을 수있는 저렴한 방법입니다 (이 빠른 방법은 있지만 많은 wordier있어) : 당신은 매트릭스 점을 일단
from maya.api.OpenMaya import MVector, MMatrix, MPoint
import maya.cmds as cmds
def world_matrix(obj):
"""'
convenience method to get the world matrix of <obj> as a matrix object
"""
return MMatrix(cmds.xform(obj, q=True, matrix=True, ws=True))
def world_pos(obj):
"""'
convenience method to get the world position of <obj> as an MPoint
"""
return MPoint(cmds.xform(obj, q=True, t=True, ws=True))
, 상대적 위치는 단순히 배를 행렬의 역 지점 :
relative_position = world_pos('pSphere1') * world_matrix('pCube1').inverse()
print relative_position
# (0.756766, -0.0498943, 3.38499, 1)
결과 4 번호 (X, Y, Z 및 W)을 갖는 MPOINT 될 것이다; 수학은 항상 비늘과 가위를 설명하기 위해 필요하지만, 4 번째 항은 항상 1이 될 것이므로 무시할 수 있습니다.
카메라 절두체에서 물체를 찾으려고합니까? – Achayan
개체가 카메라 절두체 안쪽에 있는지 여부는 내 응용 프로그램에서 필요하지 않습니다. 개체 또는 정점이 카메라에서 얼마나 멀리 있는지 (카메라의 로컬 z에서) 알아야합니다. –