代码之家  ›  专栏  ›  技术社区  ›  Matti Lyra

将鼠标X&Y转换为三维模型坐标

  •  1
  • Matti Lyra  · 技术社区  · 14 年前

    我正在构建一个简单的三维拖放界面,并希望检测鼠标何时滚动到对象上。我可以想象我需要对三维模型坐标进行一些矩阵转换,以使它们进入屏幕空间等等…

    我有一个简单的版本,这个工作,问题是,当摄像机在场景周围移动时,我得到的坐标会失控。

    那么,如何将图块坐标转换为屏幕空间(因为screenx和screeny无法正常工作)?

    更新: 我最终从处理站点找到了两个关于如何做到这一点的示例。多亏了 阿里巴巴 .

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

    1 回复  |  直到 14 年前
        1
  •  3
  •   villintehaspam    14 年前

    这个问题叫做拣货。搜索鼠标选择,你会得到很多点击量。

    基本理论是:

    1. 从鼠标单击中获取X、Y坐标。
    2. 将它们转换为眼睛坐标中的x、y、z坐标(即-1<=x<=1,-1<=y<=1,z=近/远剪辑距离,如果您有正常投影)。
    3. 用投影矩阵的倒数变换这些坐标,得到世界坐标。
    4. 现在你有了一条来自相机位置的光线,它的方向与你刚刚得到的世界坐标一致。
    5. 对要考虑的对象进行光线对象交叉测试。选择与最接近光线原点的光线相交的对象(相机位置)。