我如何(在 Maya 中)获得鼠标的 3D 位置?

Posted

技术标签:

【中文标题】我如何(在 Maya 中)获得鼠标的 3D 位置?【英文标题】:how (in maya) can i get the 3D position of the mouse? 【发布时间】:2010-12-25 07:02:07 【问题描述】:

我使用以下代码在 Maya 中创建了一个拖动上下文,pos 保存我的鼠标光标的 2D 坐标,我想将其转换为 3D 坐标作为我想要发射的射线的源,我想要它要么通过python脚本或通过python api,,,

import maya.cmds as mc

mc.draggerContext( 'testContext', pressCommand='getCursorPos()',
                    dragCommand='getCursorPos()', cursor='default')

def getCursorPos():

    #--get the 2D position of cursor (on the view port)----

    pos = mc.draggerContext( 'testContext', query=1, dragPoint=1) 

    #----convert to 3D coordinates in the scene--------
    ????????

提前致谢

【问题讨论】:

# 错误:RuntimeError:文件 第 4 行:# 【参考方案1】:

实际上,您可能想查看 draggerContext 命令帮助中的 space(sp) 标志。

mc.draggerContext('sampleContext', dragCommand='getCursorPos()', space='world')

def getCursorPos():
    print mc.draggerContext( 'testContext', query=1, dragPoint=1) 

...应该为您打印点击的世界空间 XYZ 值。

【讨论】:

【参考方案2】:

您是否查看过 draggerContext 的投影 (-pr) 选项?

鼠标坐标是二维数据,投影选项是解决如何映射第三维的方法。对于光线,也许以下选项之一与您的问题相关:

xAxis 投影到 X 轴上最近的点 yAxis 投影到 Y 轴上的最近点 zAxis 投影到 Z 轴上的最近点

希望对您有所帮助,祝您好运。

【讨论】:

以上是关于我如何(在 Maya 中)获得鼠标的 3D 位置?的主要内容,如果未能解决你的问题,请参考以下文章

Maya学习笔记第一弹 —— 基础操作

获得立方体的面

如何在 Maya 中使用第二个输入设备来分别影响鼠标的控件?

Unity3D 中如何同时获得鼠标点击和键盘按键

C#XNA鼠标的位置投射到3D平面

OpenGL 鼠标在 3D 空间中的位置