翻译鼠标X& Y到3D模型坐标

时间:2010-02-05 19:15:53

标签: mouseover hittest mouse-picking

我正在处理中构建一个简单的3D拖放界面,并希望检测鼠标何时滚过对象。我想我需要对3D模型坐标进行一些矩阵转换才能将它们放入屏幕空间等等......

我有一个简单版本的工作,问题是,当相机在场景中移动时,我得到的坐标会变得混乱。

那么如何将平铺坐标转换为屏幕空间(因为screenX& screenY无法正常工作)?

更新 我最终在Processing网站上找到了两个如何做到这一点的例子。感谢 villintehaspam

http://processing.org/hacks/hacks:picking

1 个答案:

答案 0 :(得分:3)

这个问题叫做拣货。搜索鼠标选择,你会获得大量的点击。

基本理论是这样的:

  1. 点击鼠标即可获得x,y coords。
  2. 将它们转换为眼坐标中的x,y,z坐标(即-1 <= x <= 1,-1&lt; = y&lt; = 1,z =近/远剪辑距离,如果你有正常投影)。
  3. 通过投影矩阵的倒数变换这些坐标以获得世界坐标。
  4. 你现在有一个来自摄影机位置的光线,朝向你刚刚获得的世界坐标。
  5. 使用您要考虑的对象进行光线 - 对象相交测试。选择与最接近光线原点(相机位置)的光线相交的对象。