2

昨年、私は同様の質問を投稿しましたが、あまり説明的ではなく、全体的に混乱しているため、完全に書き直すことにしました。

私は JavaFX で、Blender や他のほぼすべてのカメラの動きに似たシンプルな 3D エディターを作成しています。x 軸を中心とした回転を追加し、三角関数を使用して他の 2 つの回転 (y 軸と z 軸) を計算しました。x 軸と y 軸の両方の回転は、ピボット ポイントに対して行われますが、z 回転は常に、ピボット ポイントではなく、画面/カメラに対して行われます。

問題をよりよく理解するために、軸がどこにあり、どこに軸を置きたいかをスケッチしました。

これは、現時点で角度が適用される方法です。 現在の軸

これは私が彼らになりたい方法です: 私は彼らがどのようになりたいか

角度を計算するために使用するコードの一部を次に示します (ただし、私の観察では、私の問題とは無関係のようです)。

//variables angleY and angleX are calculated according to mouse drags on the screen
rotateY.setAngle(angleY);
rotateX.setAngle(angleX*Math.cos(Math.toRadians(angleY)));
rotateZ.setAngle(angleX*Math.sin(Math.toRadians(angleY)));

テストを簡単にするために、Pastebinにコードをアップロードしました。

編集:すべてを回転させることでこの同じ効果を実現できますが、カメラ(とにかくカメラの動きとまったく同じです)と仰角にx軸を使用しますが、よりエレガントなソリューションを探しています。

4

1 に答える 1