目次:
- ステップ1:円柱の追加
- ステップ2:マテリアルを作成する
- シリンダーが非常に立体的に見えないことは間違いなく気づいたでしょう。それは、あなたがそれを見ているからです。カメラはx軸とy軸の交差点を真っ直ぐに指していて、その円柱はそのまさに中心にあります。
ビデオ: Coding Challenge #14: Fractal Trees - Recursive 2024
JavaFXで比較的簡単な3Dプログラムを作成して、3次元世界を表示することができます(例を下に示します) 。ご覧のとおり、この3D空間には、球、立方体、円柱、ピラミッドの4つの図形が含まれています。この短いリストは、シリンダーを始める方法を示しています。
この例は時には非常に技術的なものであり、3D世界の構築に関連する概念の多くは混乱を招く可能性があります。特にこれが3Dプログラミングの最初の経験である場合は、考えてください。
<! - 1 - > JavaFXのサンプル3Dプログラム。ステップ1:円柱の追加
このステップでは、基本3Dオブジェクトを世界に追加します。 JavaFXには、シリンダ、ボックス、球の3つの基本形状を追加できます。まず、シリンダーを追加します。
シリンダーシリンダー=新しいシリンダー(100,50);ルート。 getChildren()追加(円柱);
Cylinderクラスのコンストラクタは、シリンダの半径と高さの2つの引数を受け取ります。この例では、およそ4倍の高さのホッケーパックの形をしたシリンダーを作成します。シーンのルートノードにシリンダを追加します。
<! - 2 - >この時点で、シリンダーは世界に存在しますが、見えません。 2Dシェイプについて知っていることに基づいて、塗りつぶしカラー(setFill)またはストロークカラー(setStroke)を追加すると、2Dシェイプを見えるようにすることができます。しかし、それは3Dオブジェクトの仕組みではありません。次のステップでは、シリンダーの表面にマテリアルを適用してシーンに表示されるようにする方法を発見します。
ステップ2:マテリアルを作成する
<! - 3 - >3Dオブジェクトの面をレンダリングするのは、平面の2次元オブジェクトをレンダリングするよりもはるかに複雑です。 2Dオブジェクトの場合は、setFillメソッドを使用してPaintオブジェクトを適用するだけです。ペイントは、シンプルな色、グラデーションの色、またはイメージにすることができます。
3Dオブジェクトの場合、塗装は適用されません。代わりに、PhongMaterialクラスで表される Phongマテリアル という特別なオブジェクトを適用します。 Phongの素材(1970年代のコンピュータグラフィックスの先駆者Bui Tuong Phongにちなんで命名)は、3Dオブジェクトの顔が現実的にレンダリングされる手段を提供します。
次のコードでは、2つの色合いの青に基づいて簡単なPhongマテリアルを作成し、そのマテリアルをシリンダに適用します:
PhongMaterial blueStuff = new PhongMaterial(); blueStuff。 setDiffuseColor(Color。LIGHTBLUE); blueStuff。 setSpecularColor(Color.Blue);シリンダー。 setMaterial(blueStuff); Phong材料がシリンダに適用された後、図示されているように、シリンダが現場内に見えるようになる。
Phong材質の3Dシリンダー。
ステップ3:シリンダーを変換するシリンダーが非常に立体的に見えないことは間違いなく気づいたでしょう。それは、あなたがそれを見ているからです。カメラはx軸とy軸の交差点を真っ直ぐに指していて、その円柱はそのまさに中心にあります。
円柱についていくつかの視点を得るために、x、y、z座標を平行移動することによって、3D空間内の別の場所に移動できます。例:
円柱。 setTranslateX(-200);シリンダー。 setTranslateY(200);シリンダー。 setTranslateZ(200);
ここでは、シリンダを左に200単位、下に200単位、カメラから200単位移動します。結果として得られるビューは、ここで見ることができるように、円筒のように見えます。
翻訳された3D円柱。
この図では、シリンダーが前方に回転しているように見え、少し上の表面を見ることができます。しかし、そうではありません。実際に起こったことは、もはやシリンダーの端を見ていないことです。代わりに、シリンダがカメラの下にあるので、あなたはそれを見下ろしています。したがって、あなたは少しの上面を見ることができます。あなたはまた側からそれを見ています、なぜそれがちょうど少し傾いているように見えるのか説明しています。