目次:
- Javaワールドに3Dボックスを追加するこのステップでは、オブジェクトを3D世界に追加します。この場合、Boxクラスで表されるボックスです。コードは次のとおりです:
- このステップでは、ボックスを回転させて、さらに面白いパースペクティブビューを作成します。 3Dオブジェクトを回転させる方法は2つあります。最も単純なのは、オブジェクトのsetRotateメソッドを呼び出して、回転角度:
ビデオ: Javaでゲームを作ろう4 - JavaFX 3Dゲーム編 PRUSHER 3D 2024
JavaFXには、現実的な3Dモデリングのサポートが組み込まれています。事実、JavaFXシーングラフは本質的に3次元です。ほとんどのJavaFXプログラムは、ちょうど2次元で動作し、x座標とy座標を指定します。しかし、3次元に進むために必要なのは、シーングラフのノードを3次元空間に配置するためにz座標を指定することだけです。
JavaFXには、3D世界で3Dオブジェクトを作成して視覚化するための豊富なクラスが用意されています。キューブや円柱などの3次元形状を作成できます。 3D空間内で仮想カメラを動かすと、異なる角度や視点から3Dオブジェクトを見ることができます。
<! - 1 - >また、仮想世界の最終的な外観を慎重に制御するために光源を追加することもできます。要するに、JavaFXは驚異的な3Dシーンを制作することができます。
Javaワールドに3Dボックスを追加するこのステップでは、オブジェクトを3D世界に追加します。この場合、Boxクラスで表されるボックスです。コードは次のとおりです:
Box box = new Box(100,100,100);ボックス。 setMaterial(blueStuff);ボックス。 setTranslateX(150);ボックス。 setTranslateY(-100);ボックス。 setTranslateZ(-100);ルート。 getChildren()追加(ボックス);
Boxコンストラクタは、ボックスの幅、高さ、深さを表す3つの引数を受け取ります。この例では、3つすべてが100に設定されています。したがって、ボックスは各辺が100単位の立方体として描画されます。
<! - 2 - >
ボックスにはシリンダーと同じ材質が与えられています。次に、3軸すべてで翻訳され、ボックスの斜視図が表示されます。図は、レンダリング時のボックスの表示方法を示しています。ご覧のように、カメラの視点を得るためにボックスの位置を上にして右に移動したので、ボックスの左と下の面が表示されます。<! - 3 - >
3Dボックスを回転するこのステップでは、ボックスを回転させて、さらに面白いパースペクティブビューを作成します。 3Dオブジェクトを回転させる方法は2つあります。最も単純なのは、オブジェクトのsetRotateメソッドを呼び出して、回転角度:
ボックスを指定することです。 setRotate(25);
デフォルトでは、オブジェクトはz軸上を回転します。これを視覚化することが難しい場合は、z軸に平行な長いスティックでオブジェクトを串刺しすることを想像してください。次に、オブジェクトを串の上に回転させます。
オブジェクトを別の軸に沿って回転させたい場合は、まずsetRotationAxisを呼び出します。たとえば、オブジェクトをX軸上で回転させるには、
ボックスを使用します。 setRotationAxis(Rotate。X_AXIS);ボックス。 setRotate(25);
串をx軸に平行にして箱に25度回転させて串を動かしたとします。
setRotateメソッドを使用して3Dオブジェクトを回転させる唯一の問題は、一度に1つの軸でのみ機能することです。たとえば、z軸とx軸の両方でボックスを25度回転させたいとします。次のコードは
これを実行しません: setRotationAxis(Rotate。X_AXIS);ボックス。 setRotate(25);ボックス。 setRotationAxis(Rotate。Z_AXIS);ボックス。 setRotate(25); z軸上でボックスを回転するためにsetRotateメソッドが2回呼び出されると、x軸の回転がリセットされます。
複数の軸で回転するには、代わりに回転クラスを使用する必要があります。オブジェクトを回転させたい軸ごとに個別のRotateインスタンスを作成し、getTransforms()を介してすべてのRotateインスタンスをオブジェクトのTransformsコレクションに追加します。 addAllメソッドは以下のようになります:
Rotate rxBox = new Rotate(0、0、0、0、Rotate。X_AXIS);回転ryBox = new回転(0、0、0、0、回転、Y_AXIS);回転rzBox = new Rotate(0、0、0、0、Rotate。Z_AXIS); rxBox。 setAngle(30); ryBox。 setAngle(50); rzBox。 setAngle(30);ボックス。 getTransforms()。 addAll(rxBox、ryBox、rzBox);
Rotateコンストラクタは4つのパラメータを受け入れます。最初の3つは、回転軸が通過するオブジェクト内の点のx、y、z座標です。一般的には、オブジェクトをその中心点の周りに回転させるために、これらのパラメータにゼロを指定します。 4番目のパラメータは、回転軸を指定します。
この図は、回転後のボックスの表示を示しています。
回転した後のボックス。