- 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
クラスの新しいインスタンスを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 int
getFaceElementSize()
フェイスを表す要素の数を返します。ObservableFaceArray
getFaces()
このTriangleMesh
のfaces
配列、points
、normals
(VertexFormat.POINT_NORMAL_TEXCOORD
メッシュである場合のオプション)およびtexCoords
配列の索引を取得します。ObservableIntegerArray
getFaceSmoothingGroups()
このTriangleMesh
のfaceSmoothingGroups
配列を取得します。int
getNormalElementSize()
法線を表す要素の数を返します。ObservableFloatArray
getNormals()
このTriangleMesh
のnormals
配列を取得します。int
getPointElementSize()
点を表す要素の数を返します。ObservableFloatArray
getPoints()
このTriangleMesh
のpoints
配列を取得します。int
getTexCoordElementSize()
テクスチャ座標を表す要素の数を返します。ObservableFloatArray
getTexCoords()
このTriangleMesh
のtexCoords
配列を取得します。VertexFormat
getVertexFormat()
プロパティvertexFormatの値を取得します。void
setVertexFormat(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
配列
-
-