0

我一直在使用three.js 和flightcontrols.js(一个随three.js 提供的示例)制作一个小型空间模拟器演示

该演示可在以下位置查看 - http://www.zacharycarter.com/PrivateerRedux/demo.html

控制方案非常简单 - 鼠标控制相机,您左键单击以发射弹丸。

我在如何生成射弹方面遇到了一些麻烦。目前我正在将它们的旋转设置为我的相机的相同旋转,我认为这是导致我的问题的原因。

您会注意到,当您在游戏世界中旋转相机并继续发射射弹时,射弹的位置和方向很快就会变得古怪。

我使用四元数来表示我的相机的旋转,但在设置我的射弹旋转以匹配我的相机之前,我也从四元数推导出欧拉角。

关于我在这里做错了什么的任何想法?我有一种感觉,我需要从我的相机旋转中找出一个恒定的正面旋转,但我不太确定如何做到这一点。

谢谢!

4

1 回答 1

1

如果我理解正确,我认为您的问题是您错误地应用了世界变换和局部变换(即在世界空间中旋转以使子弹以正确的方向飞行并围绕子弹的局部轴旋转子弹)。似乎它们都被应用在同一个空间中。

然而,我不会写一个全新的例子,而是把它留给旧的、可靠的互联网,用太阳系的常见例子给我们一些关于这个问题的指导。

这可能会启发你:

http://docs.techsoft3d.com/visualize/3df/latest/Hoops3DGS/prog_guide/03_3_viewing_modelling_matrices.html (看图3.3.2.b)

...这是一个 OpenGL 示例,演示了同样的事情:

http://www.codemiles.com/c-opengl-examples/solar-system-transformations-t7292.html

还是有理论的,希望对你有帮助!

于 2013-03-04T20:14:40.237 回答