我想知道如何从二维点投影一个三维点。我希望能够给它一个深度值来投影到。有谁有玛雅的例子吗?在
谢谢!在
以下是我所能做的最好的:
def screenToWorld(point2D=None,
depth=None,
viewMatrix=None,
projectionMatrix=None,
width=None,
height=None):
'''
@param point2D - 2D Point.
@param viewMatrix - MMatrix of modelViewMatrix (World inverse of camera.)
@param projectionMatrix - MMatrix of camera's projectionMatrix.
@param width - Resolution width of camera.
@param height - Resolution height of camera.
Returns worldspace MPoint.
'''
point3D = OpenMaya.MPoint()
point3D.x = (2.0 * (point2D[0] / width)) - 1.0
point3D.y = (2.0 * (point2D[1] / height)) - 1.0
viewProjectionMatrix = (viewMatrix * projectionMatrix)
point3D.z = viewProjectionMatrix(3, 2)
point3D.w = viewProjectionMatrix(3, 3)
point3D.x = point3D.x * point3D.w
point3D.y = point3D.y * point3D.w
point3D = point3D * viewProjectionMatrix.inverse()
return point3D
如您所知,它不使用深度值。我不知道如何使用投影矩阵和视图矩阵来合并它。在
非常感谢任何帮助! -克里斯
所以我想我有个解决办法:
我不需要把它转换成二维然后再转换回三维,我只需要从摄像机上扩展矢量。在
相关问题 更多 >
编程相关推荐