Javafx-3d-shapes
JavaFX-3Dシェイプ
前の章で、XY平面に2D形状を描く方法を見てきました。 これらの2D形状に加えて、JavaFXを使用して他のいくつかの3D形状も描画できます。
3D形状
一般に、3D形状は、XYZ平面に描画できる幾何学的図形です。 これらには、 Cylinder、Sphere および Box が含まれます。
上記の各3D形状はクラスによって表され、これらのすべてのクラスはパッケージ javafx.scene.shape に属します。 Shape3D という名前のクラスは、JavaFXのすべての3次元形状の基本クラスです。
3Dシェイプを作成する
3次元形状を作成するには、する必要があります-
- 必要な3D形状のそれぞれのクラスをインスタンス化します。
- 3D形状のプロパティを設定します。
- 3D形状オブジェクトをグループに追加します。
各クラスのインスタンス化
3次元の形状を作成するには、まず、それぞれのクラスをインスタンス化する必要があります。 たとえば、3Dボックスを作成する場合、次のようにBoxという名前のクラスをインスタンス化する必要があります-
シェイプのプロパティを設定する
クラスをインスタンス化した後、setterメソッドを使用して形状のプロパティを設定する必要があります。
たとえば、3Dボックスを描画するには、その幅、高さ、深さを渡す必要があります。 次のように、それぞれのセッターメソッドを使用してこれらの値を指定できます-
シェイプオブジェクトをグループに追加する
最後に、以下に示すように、コンストラクターのパラメーターとして渡すことにより、図形のオブジェクトをグループに追加する必要があります。
次の表に、JavaFXが提供するさまざまな3D形状のリストを示します。
S.No | Shape & Description |
---|---|
1 |
直方体は、長さ(深さ)、幅、および*高さ*を持つ3次元形状です。 JavaFXでは、3次元ボックスは Box という名前のクラスで表されます。 このクラスは、パッケージ javafx.scene.shape に属します。 このクラスをインスタンス化することにより、JavaFXでBoxノードを作成できます。 このクラスには、doubleデータ型の3つのプロパティがあります-
|
2 |
シリンダーは、曲面で接続された2つの平行な(ほとんど円形の)ベースを持つ閉じたソリッドです。 これは、2つのパラメーター、つまり、円形ベースの*半径*とシリンダーの*高さ*によって記述されます。 JavaFXでは、シリンダーは Cylinder という名前のクラスで表されます。 このクラスは、パッケージ javafx.scene.shape に属します。 このクラスをインスタンス化することにより、JavaFXでシリンダーノードを作成できます。 このクラスには、doubleデータ型の2つのプロパティがあります-
|
3 |
球体は、3D空間内の特定のポイントからすべて同じ距離rにあるポイントのセットとして定義されます。 この距離rは球の半径であり、与えられた点は球の中心です。 JavaFXでは、球体は Sphere という名前のクラスで表されます。 このクラスは、パッケージ javafx.scene.shape に属します。 このクラスをインスタンス化することにより、JavaFXで球体ノードを作成できます。 このクラスには、doubleデータ型の radius という名前のプロパティがあります。 球体の半径を表します。 |
3Dオブジェクトのプロパティ
すべての3次元オブジェクトについて、Cull Face、Drawing Mode、Materialなどのさまざまなプロパティを設定できます。
次のセクションでは、3Dオブジェクトのプロパティについて説明します。
カルフェイス
一般に、カリングとは、形状の不適切な方向の部分(ビュー領域には表示されない)を削除することです。
Cull Faceプロパティは CullFace タイプであり、3D形状のCull Faceを表します。 以下に示すように、メソッド* setCullFace()*を使用して、形状のCull Faceを設定できます-
形状のストロークタイプは-
- なし-カリングは実行されません(CullFace.NONE)。
- Front -すべての正面向きのポリゴンがカリングされます。 (CullFace.FRONT)。
- Back -すべての裏面ポリゴンがカリングされます。 (StrokeType.BACK)。
デフォルトでは、3次元形状のカリング面は「戻る」です。
例
次のプログラムは、球体のさまざまなカリング面を示す例です。 このコードを SphereCullFace.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行すると、上記のプログラムは、それぞれ次のように、カルフェイス値 FRONT、BACK および NONE を持つ3つの球体を表示するJavaFXウィンドウを生成します-
描画モード
プロパティは DrawMode 型であり、現在の3D形状の描画に使用される描画モードを表します。 あなたは次のようにメソッドsetDrawMode()を使用して3D形状を描くために描画モードを選択することができます-
JavaFXでは、2つの描画モードを選択して3D形状を描画できます。
- Fill -このモードは、2Dシェイプを描画して塗りつぶします(DrawMode.FILL)。
- Line -このモードは、線を使用して3D形状を描画します(DrawMode.LINE)。
デフォルトでは、3次元形状の描画モードは塗りつぶしです。
例
次のプログラムは、3Dボックスのさまざまな描画モードを示す例です。 このコードを BoxDrawMode.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
実行時に、上記のプログラムは、次のように、それぞれ描画モード値LINEおよびFILLの2つのボックスを表示するJavaFXウィンドウを生成します-
素材
cull Faceプロパティのタイプは Material であり、3D形状のマテリアルの表面を選択するために使用されます。 次のようにメソッド* setCullFace()*を使用して、3D形状のマテリアルを設定できます-
このメソッドについて前述したように、タイプMaterialのオブジェクトを渡す必要があります。 パッケージ javafx.scene.paint の PhongMaterial クラスはこのクラスのサブクラスであり、Phongシェーディングマテリアルを表す7つのプロパティを提供します。 これらのプロパティのセッターメソッドを使用して、これらすべてのタイプのマテリアルを3Dシェイプの表面に適用できます。
以下は、JavaFXで利用可能な素材の種類です-
- bumpMap -これは、RGBイメージとして保存された法線マップを表します。
- diffuseMap -これは拡散マップを表します。
- selfIlluminationMap -これは、このPhongMaterialの自己照明マップを表します。
- specularMap -これは、このPhongMaterialのスペキュラーマップを表します。
- diffuseColor -これは、このPhongMaterialの拡散色を表します。
- specularColor -これは、このPhongMaterialの鏡面反射色を表します。
- specularPower -これは、このPhongMaterialの鏡面屈折力を表します。
デフォルトでは、3次元シェイプのマテリアルは、ライトグレーの拡散色を持つPhongMaterialです。
例
以下は、シリンダー上のさまざまなマテリアルを表示する例です。 このコードを CylinderMaterials.java という名前のファイルに保存します。
次のコマンドを使用して、コマンドプロンプトから保存したJavaファイルをコンパイルして実行します。
上記のプログラムは、実行時に、次のスクリーンショットに示すように、マテリアル、バンプマップ、拡散マップ、自己照明マップ、スペキュラーマップ、拡散カラー、スペキュラーカラー、(BLANCHEDALMOND)スペキュラーパワーを持つ7つのシリンダーを表示するJavaFXウィンドウを生成します−