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 に答える