【发布时间】:2011-11-13 22:45:42
【问题描述】:
我正在使用 WebGL 构建棋盘游戏。该板可以旋转/缩放。我需要一种将画布元素 (x,y) 上的单击转换为 3D 空间中的相关点 (x, y, z) 的方法。最终的结果是我想知道 (x, y, z) 坐标,其中包含接触到最接近用户的对象的点。例如,用户点击一个棋子,你想象一条穿过 3D 空间的射线穿过棋子和游戏板,但我想要棋子的 (x, y, z) 坐标在它所在的点感动。
我觉得这一定是一个非常普遍的问题,但我似乎无法在我的谷歌中找到解决方案。必须有某种方法可以将 3D 空间的当前视图投影到 2D 中,以便您可以将 2D 空间中的每个点映射到 3D 空间中的相关点。我希望用户能够将鼠标悬停在板上的某个空间上,并让该点改变颜色。
【问题讨论】:
-
你不是在说这个吧? 3dkingdoms.com/selection.html#ray 只需将法线从相机镜头放到平面上,然后找出 POI。
-
我认为this 是对我想做的事情的一般描述,但我无法从他的描述中找出算法。
-
必须进行某种计算,将视口想象成一个平面,位于 (0,0,0) 处,矩形的中心位于原点。我会更多地考虑这一点,我相信有一个优雅的解决方案。
标签: javascript 3d mouse webgl coordinate