- java.lang.Object
-
- javafx.scene.shape.Mesh
-
- javafx.scene.shape.TriangleMesh
-
public class TriangleMesh extends Mesh
関連付けられたVertexFormatおよび頂点コンポーネント(点、法線、テクスチャ座標など)の個別配列のセットからなる3D三角形メッシュと、そのメッシュの個々の三角形を定義するフェイスの配列を定義します。メソッド名およびメソッド説明で使用されるpointという語は、実際には空間における1つの頂点の位置を表す3D点(x, y, z)を意味します。 points(複数形)という語は、複数の頂点に対する3D点のセットを表す場合に使用します。 同様に、normalという語は、空間における1つの頂点の向きを表す3Dベクトル(nx, ny, nz)を示す場合に使用します。 normals(複数形)という語は、複数の頂点に対する3Dベクトルのセットを表す場合に使用します。 texCoordという語は1つの頂点に対する1組の2Dテクスチャ座標(u, v)を表す場合に使用し、texCoords (複数形)という語は複数の頂点に対するテクスチャ座標のセットを表す場合に使用します。 最後に、面という用語は3つのインタリーブ点、すなわち法線(関連するVertexFormatに応じてオプション)と、単一の三角形の幾何学的トポロジを一緒に表すテクスチャ座標を示すのに使用され、面(plural)は三角形の集合(それぞれ顔で表されます)を示すために使用されます。
たとえば、2つの三角形を使用して1つのテクスチャ付き矩形を表す
VertexFormat.POINT_TEXCOORDが含まれるfacesでは、データ順序は次のようになります。p0, t0, p1, t1, p3, t3, // テクスチャ付き矩形の最初の三角形
p1, t1, p2, t2, p3, t3 // テクスチャ付き矩形の2番目の三角形
]
これに対し、2つの三角形を使用して1つのテクスチャ付き矩形を表す
VertexFormat.POINT_NORMAL_TEXCOORDが含まれるfacesでは、データ順序は次のようになります。p0, n0, t0, p1, n1, t1, p3, n3, t3, // テクスチャ付き矩形の最初の三角形
p1, n1, t1, p2, n2, t2, p3, n3, t3 // テクスチャ付き矩形の2番目の三角形
]
p0、p1、p2およびp3はpoints配列の索引、n0、n1、n2およびn3はnormals配列の索引、t0、t1、t2およびt3はtexCoords配列の索引です。
三角形には前面と裏面があります。 どちら側が前面になるかは三角形の頂点の屈曲順序によって決定されます。 JavaFXでは、反時計回り(または右手の法則)屈曲順序を前面として選択します。 デフォルトでは、三角形の前面のみがレンダリングされます。 詳細は、
CullFaceを参照してください。points、normalsおよびtexCoordsの長さは、それぞれ3、3、2で割り切れる値である必要があります。facesの長さは、VertexFormat.POINT_TEXCOORDが設定されている場合は6で割り切れる値である必要があり、VertexFormat.POINT_NORMAL_TEXCOORDが設定されている場合は9で割り切れる値である必要があります。 faces配列の値は、point索引の場合はpoints配列の頂点の数の範囲内(0からpoints.length / 3 - 1まで)、normals索引の場合はnormals配列の頂点の数の範囲内(0からnormals.length / 3 - 1まで)、テクスチャ座標索引の場合はtexCoords配列の頂点の数の範囲内(0からtexCoords.length / 2 - 1まで)にある必要があります。いずれかの配列長が無効な場合、またはfaces配列内のいずれかの値が範囲外の場合、警告がロガーに記録され、メッシュはレンダリングされません(空の境界を持ちます)。
- 導入されたバージョン:
- JavaFX 8.0
-
-
プロパティのサマリー
プロパティ Type プロパティ 説明 ObjectProperty<VertexFormat>vertexFormatこのTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 TriangleMesh()デフォルトのVertexFormat.POINT_TEXCOORDフォーマット・タイプを使用して、TriangleMeshクラスの新しいインスタンスを作成します。TriangleMesh(VertexFormat vertexFormat)指定されたVertexFormatを使用して、TriangleMeshクラスの新しいインスタンスを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 intgetFaceElementSize()フェイスを表す要素の数を返します。ObservableFaceArraygetFaces()このTriangleMeshのfaces配列、points、normals(VertexFormat.POINT_NORMAL_TEXCOORDメッシュである場合のオプション)およびtexCoords配列の索引を取得します。ObservableIntegerArraygetFaceSmoothingGroups()このTriangleMeshのfaceSmoothingGroups配列を取得します。intgetNormalElementSize()法線を表す要素の数を返します。ObservableFloatArraygetNormals()このTriangleMeshのnormals配列を取得します。intgetPointElementSize()点を表す要素の数を返します。ObservableFloatArraygetPoints()このTriangleMeshのpoints配列を取得します。intgetTexCoordElementSize()テクスチャ座標を表す要素の数を返します。ObservableFloatArraygetTexCoords()このTriangleMeshのtexCoords配列を取得します。VertexFormatgetVertexFormat()プロパティvertexFormatの値を取得します。voidsetVertexFormat(VertexFormat value)プロパティvertexFormatの値を設定します。ObjectProperty<VertexFormat>vertexFormatProperty()このTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。
-
-
-
プロパティの詳細
-
vertexFormat
public final ObjectProperty<VertexFormat> vertexFormatProperty
このTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。- デフォルト値:
- VertexFormat.POINT_TEXCOORD
- 導入されたバージョン:
- JavaFX 8u40
- 関連項目:
getVertexFormat()、setVertexFormat(VertexFormat)
-
-
コンストラクタの詳細
-
TriangleMesh
public TriangleMesh()
デフォルトのVertexFormat.POINT_TEXCOORDフォーマット・タイプを使用して、TriangleMeshクラスの新しいインスタンスを作成します。
-
TriangleMesh
public TriangleMesh(VertexFormat vertexFormat)
指定されたVertexFormatを使用して、TriangleMeshクラスの新しいインスタンスを作成します。- パラメータ:
vertexFormat- 頂点フォーマット・タイプを指定します。- 導入されたバージョン:
- JavaFX 8u40
-
-
メソッドの詳細
-
setVertexFormat
public final void setVertexFormat(VertexFormat value)
プロパティvertexFormatの値を設定します。- プロパティの説明:
- この
TriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。 - デフォルト値:
- VertexFormat.POINT_TEXCOORD
- 導入されたバージョン:
- JavaFX 8u40
-
getVertexFormat
public final VertexFormat getVertexFormat()
プロパティvertexFormatの値を取得します。- プロパティの説明:
- この
TriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。 - デフォルト値:
- VertexFormat.POINT_TEXCOORD
- 導入されたバージョン:
- JavaFX 8u40
-
vertexFormatProperty
public final ObjectProperty<VertexFormat> vertexFormatProperty()
このTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。- デフォルト値:
- VertexFormat.POINT_TEXCOORD
- 導入されたバージョン:
- JavaFX 8u40
- 関連項目:
getVertexFormat()、setVertexFormat(VertexFormat)
-
getPointElementSize
public final int getPointElementSize()
点を表す要素の数を返します。- 戻り値:
- 要素の数
-
getNormalElementSize
public final int getNormalElementSize()
法線を表す要素の数を返します。- 戻り値:
- 要素の数
- 導入されたバージョン:
- JavaFX 8u40
-
getTexCoordElementSize
public final int getTexCoordElementSize()
テクスチャ座標を表す要素の数を返します。- 戻り値:
- 要素の数
-
getFaceElementSize
public final int getFaceElementSize()
フェイスを表す要素の数を返します。- 戻り値:
- 要素の数
-
getPoints
public final ObservableFloatArray getPoints()
このTriangleMeshのpoints配列を取得します。- 戻り値:
points配列、各点は3つのfloat値x、yおよびzによりこの順序で表されます。
-
getNormals
public final ObservableFloatArray getNormals()
このTriangleMeshのnormals配列を取得します。- 戻り値:
- 各法線が3つのfloat値(nx、ny、nz、この順序)で表される
normals配列。 - 導入されたバージョン:
- JavaFX 8u40
-
getTexCoords
public final ObservableFloatArray getTexCoords()
このTriangleMeshのtexCoords配列を取得します。 座標はプロポーショナルであるため、テクスチャの左上隅が[0, 0]で、右下隅が[1, 1]となります。- 戻り値:
texCoord配列、各テクスチャ座標は2つのfloat値uおよびvによりこの順序で表されます。
-
getFaces
public final ObservableFaceArray getFaces()
このTriangleMeshのfaces配列、points、normals(VertexFormat.POINT_NORMAL_TEXCOORDメッシュである場合のオプション)およびtexCoords配列の索引を取得します。 すべての索引は、points配列、normals配列またはtexCoords配列の要素に関して、それぞれfloat値ではありません。- 戻り値:
- 各フェイスが3 *
VertexFormat.getVertexIndexSize()整数であるfaces配列。
-
getFaceSmoothingGroups
public final ObservableIntegerArray getFaceSmoothingGroups()
このTriangleMeshのfaceSmoothingGroups配列を取得します。 スムージングは、メッシュのレンダリング方法に影響しますが、そのジオメトリには影響しません。 フェイス・スムージング・グループ値は、隣接するフェイス間のスムージングの制御に使用されます。グループ値はビットの配列で表され、最大32個のユニーク・グループが可能です。(1 << 0)から(1 << 31)へ。 フェイス・スムーシング・グループ値の範囲は、0 (スムージング・グループなし)からすべて32グループまでです。 1つのフェイスは、ゼロ個以上のスムーシング・グループに属することができます。 たとえば、groups | = (1 << N)のように、ビットNが設定されている場合、顔はグループNのメンバーです。 値0は、スムージング・グループなし、またはハード・エッジを意味します。 スムージングは、隣接するフェイスのペアがスムージング・グループを共有している場合に適用されます。 それ以外の場合、フェイスはフェイス間をハード・エッジでレンダリングされます。
空のfaceSmoothingGroupsは、このメッシュ内のすべてのフェイスがスムージング・グループ値1を持つことを意味します。
faceSmoothingGroupsが空でない場合、そのサイズはフェイスの数と同じである必要があります。
フォーマットが
VertexFormat.POINT_NORMAL_TEXCOORDである場合、このfaceSmoothingGroupsはそのTriangleMeshに影響を与えません。- 戻り値:
- この
TriangleMeshのfaceSmoothingGroups配列
-
-