私は小さなキューブでいっぱいの "キューブ"を回転させようとしています。キューブを中心からどのように回転するか
私は回転のピボット点を大きな「立方体」/世界の中心に設定するのに苦労しています。このvideoからわかるように、大きな立方体の正面(初期)面の中心が私の回転のピボット点になります。これは少し回転させると少し混乱します。
キューブを回転させるためにキーを使用しているときに、キューブの最初の面を移動しているように見えます。したがって、ピボットポイントはこの観点からは大丈夫かもしれませんが、私のコードで何が間違っていますか?なぜ私はキューブ全体が中心ではなく、正面で動いているのか分かりません。
すべての小さな立方体を生成する場合、私は3つのループ(x、y、z)の関数を呼び出し、関数はcubeMat
を返すので、ビデオで見られるようにすべての立方体を生成します。回転自体については
cubeMat = scale(cubeMat, {0.1f, 0.1f, 0.1f});
cubeMat = translate(cubeMat, {positioning...);
、左回転の短い例は次のようになります。
mat4 total_rotation; //global variable - never resets
mat4 rotation; //local variable
if(keysPressed[GLFW_KEY_LEFT]){
timer -= delta;
rotation = rotate(mat4{}, -delta, {0, 1, 0});
}
... //rest of key controls
total_rotation *= rotation;
もこれですサイクルのため、これらの3の内部:
program.setUniform("ModelMatrix", total_rotation * cubeMat);
cube.render();
私は読んだことがあります私はtransformation
を使用してピボットポイントを中央に設定する必要がありますが、この場合、ピボットポイントをワールドの中心にある小さなキューブの内側に設定するにはどうすればよいですか?そのキューブは明らかにx=2, y=2, z=2
です。サイクルでは、x=0
で始まるキューブを生成するからです。
キューブセンターについてのビデオの回転はありません。 –
私はそれをあまりよく説明しなかったかもしれません、申し訳ありません。世界の真ん中を「回転」していますが、何らかの理由でキーボードのコントロールが正面を動かすか、コントロールを使って、正面を持ってキューブを回転させているように見えます。 – Ady96
申し訳ありませんが、私はあなたが言うことを得ようとしていません。私はビデオを数回見ましたが、私は奇妙なことは何も見えません。 –