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.