【发布时间】:2013-03-04 14:02:42
【问题描述】:
我一直在使用three.js 和flightcontrols.js(三个.js 附带的示例)制作一个小型空间模拟器演示
该演示可在 -http://www.zacharycarter.com/PrivateerRedux/demo.html 上查看
控制方案非常简单 - 鼠标控制相机,然后左键单击发射弹丸。
我在如何生成射弹时遇到了一些麻烦。目前我正在将它们的旋转设置为我的相机的相同旋转,我认为这是导致我的问题的原因。
您会注意到,当您在游戏世界中旋转相机并继续发射弹丸时,弹丸的位置和方向很快就会变得古怪。
我使用四元数来表示我的相机的旋转,但在设置我的射弹旋转以匹配我的相机之前,我还从四元数推导出欧拉角。
关于我在这里做错了什么有什么想法吗?我有一种感觉,我需要从我的相机旋转中找出一个恒定的正面旋转,但我不太确定该怎么做。
谢谢!
【问题讨论】:
-
如果我没记错的话,“欧拉角”有大约 20 种不同的定义。你确定你使用的是正确的吗?我建议完全放弃欧拉角,只使用变换矩阵和/或四元数。
-
Three.js 内置了一个名为 setEulerFromQuaternion 的方法。这个方法在我正在使用的控件库中调用。我不确定底层实现是什么,但它仍然没有回答我的问题,即我在这里做错了什么,四元数与否......
-
顺便说一句,我在 Windows 上使用 google chrome,演示不起作用。我在执行左键单击时看不到弹丸。
-
请尝试向下移动鼠标,使相机视图向下旋转。应用首次加载时,弹丸刚刚不在视野范围内。
-
我移动了发射弹的位置,以便在启动演示时清晰可见。此外,我还更新了弹丸旋转以使用四元数,但仍有一些问题......
标签: math rotation three.js quaternions