私のモデルを自力で回転させる方法を教えてもらえますか?デフォルト(0,0,0)軸の代わりに重力がかかるのですか?OpenGL回転の問題
と私の回転が唯一の左と右のない360度を行くことのようです。..
私のモデルを自力で回転させる方法を教えてもらえますか?デフォルト(0,0,0)軸の代わりに重力がかかるのですか?OpenGL回転の問題
と私の回転が唯一の左と右のない360度を行くことのようです。..
あなたはその中心の周りにオブジェクトを回転させたい場合は、まず原点にそれを翻訳する必要があり、その後、回転させ、それを翻訳バック。変換行列は右から左へベクトルに影響するため、これらのステップを逆の順序でコーディングする必要があります。
PushMatrix();
LoadIdentity(); // Start with a fresh matrix
Translate(); // Move your object to its final destination
Rotate(); // Apply rotations
Draw(); // Draw your object using coordinates relative to the object center
PopMatrix();
これらの行列が適用されます::
v_t = (I * T * R) * v = (I * (T * (R * v)))
だから順序は次のとおりです。回転、平行移動、私は心でOpenGLのルーチンを知らないので、ここで
は、いくつかの擬似コードです。
EDIT:上記の式の説明。
変換、回転、スケール、および変換は、モデルビューマトリックスに影響します。モデルのすべての3Dポイント(ベクトル)にこの行列を乗算して3D空間内の最終点を取得し、投影行列を乗算して2D点を受け取ります(2D画面上)。
投影ものを無視すると、モデルビュー行列で形質転換あなたの点である:モデルビュー行列MV
乗じ原点v
を意味
v_t = MV * v
。上記のコードで
、我々は単位行列I
、翻訳T
と回転R
でMV
を構築した:
MV = I * T * R
、あなたはあなたのポイントv
が第一の回転の影響を受けていることがわかりR
の場合はT
となりますので、翻訳する前にポイントを回転させてください。
v_t = MV * v = (I * T * R) * v = T * (R * v)
回し()を呼び出すことになる)(翻訳前に:悪いだろう
v_t = (I * R * T) * v = R * (T * v)
:3Dでいくつかのポイントに変換し、モデル内のいくつかの奇妙な歪みをもたらし、原点を中心に回転。
ありがとう! しかし、方程式はどういう意味ですか? – noob88
私は方程式の説明を追加しました。実際には、3Dグラフィックスを理解するために必要な非常に基本的な数学です。 –
ありがとうございました。 まだ残っている問題が1つあります。180度ではなく、180度回転しています。何が間違っているのかわからないのですか? – noob88