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 (複数形)という語は複数の頂点に対するテクスチャ座標のセットを表す場合に使用します。 さらに、faceという語は、まとめて1つの三角形のジオメトリ・トポロジを表す、インターリーブする点、法線(オプション。関連するVertexFormatによって異なる。)およびテクスチャ座標の3セットを示す場合に使用し、faces (複数形)という語は、(それぞれがfaceで表される)複数の三角形セットを示す場合に使用します。
たとえば、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配列内のいずれかの値が範囲外の場合、警告がロガーに記録され、メッシュはレンダリングされません(空の境界を持ちます)。
| 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のいずれか)を指定します。 |
public final ObjectProperty<VertexFormat> vertexFormatProperty
TriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。getVertexFormat()、setVertexFormat(VertexFormat)public TriangleMesh()
VertexFormat.POINT_TEXCOORDフォーマット・タイプを使用して、TriangleMeshクラスの新しいインスタンスを作成します。public TriangleMesh(VertexFormat vertexFormat)
VertexFormatを使用して、TriangleMeshクラスの新しいインスタンスを作成します。vertexFormat - 頂点フォーマット・タイプを指定します。public final void setVertexFormat(VertexFormat value)
TriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。public final VertexFormat getVertexFormat()
TriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。public final ObjectProperty<VertexFormat> vertexFormatProperty()
TriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDかVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。getVertexFormat()、setVertexFormat(VertexFormat)public final int getPointElementSize()
public final int getNormalElementSize()
public final int getTexCoordElementSize()
public final int getFaceElementSize()
public final ObservableFloatArray getPoints()
TriangleMeshのpoints配列を取得します。points配列、各点は3つのfloat値x、yおよびzによりこの順序で表されます。public final ObservableFloatArray getNormals()
TriangleMeshのnormals配列を取得します。normals配列。public final ObservableFloatArray getTexCoords()
TriangleMeshのtexCoords配列を取得します。 座標はプロポーショナルであるため、テクスチャの左上隅が[0, 0]で、右下隅が[1, 1]となります。 texCoord配列、各テクスチャ座標は2つのfloat値uおよびvによりこの順序で表されます。public final ObservableFaceArray getFaces()
TriangleMeshのfaces配列、points、normals (VertexFormat.POINT_NORMAL_TEXCOORDメッシュである場合のオプション)およびtexCoords配列の索引を取得します。 すべての索引は、points配列、normals配列またはtexCoords配列の要素に関して、それぞれfloat値ではありません。 VertexFormat.getVertexIndexSize()整数であるfaces配列。public final ObservableIntegerArray getFaceSmoothingGroups()
TriangleMeshのfaceSmoothingGroups配列を取得します。 スムージングは、メッシュのレンダリング方法に影響しますが、そのジオメトリには影響しません。 フェイス・スムージング・グループ値は、隣接するフェイス間のスムージングの制御に使用されます。
フェイス・スムージング・グループ値は、ビットの配列で表され、最大32個の一意のグループが可能です(1 << 0) to (1 << 31)。 フェイス・スムーシング・グループ値の範囲は、0 (スムージング・グループなし)からすべて32グループまでです。 1つのフェイスは、ゼロ個以上のスムーシング・グループに属することができます。 ビットNが設定されている場合、フェイスはグループNのメンバーです(たとえば、グループ |= (1 << N))。 値0は、スムージング・グループなし、またはハード・エッジを意味します。 スムージングは、隣接するフェイスのペアがスムージング・グループを共有している場合に適用されます。 それ以外の場合、フェイスはフェイス間をハード・エッジでレンダリングされます。
空のfaceSmoothingGroupsは、このメッシュ内のすべてのフェイスがスムージング・グループ値1を持つことを意味します。
faceSmoothingGroupsが空でない場合、そのサイズはフェイスの数と同じである必要があります。
フォーマットがVertexFormat.POINT_NORMAL_TEXCOORDである場合、このfaceSmoothingGroupsはそのTriangleMeshに影響を与えません。
Copyright (c) 2008, 2015, Oracle and/or its affiliates. All rights reserved.