モジュール javafx.graphics
パッケージ 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 (複数形)という語は複数の頂点に対するテクスチャ座標のセットを表す場合に使用します。 さらに、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を参照してください。

    pointsnormalsおよび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
    • プロパティの詳細

      • vertexFormat

        public final ObjectProperty<VertexFormat> vertexFormatProperty
        このTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDVertexFormat.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_TEXCOORDVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。
        デフォルト値:
        VertexFormat.POINT_TEXCOORD
        導入されたバージョン:
        JavaFX 8u40
      • getVertexFormat

        public final VertexFormat getVertexFormat​()
        プロパティvertexFormatの値を取得します。
        プロパティの説明:
        このTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDVertexFormat.POINT_NORMAL_TEXCOORDのいずれか)を指定します。
        デフォルト値:
        VertexFormat.POINT_TEXCOORD
        導入されたバージョン:
        JavaFX 8u40
      • vertexFormatProperty

        public final ObjectProperty<VertexFormat> vertexFormatProperty​()
        このTriangleMeshの頂点フォーマット(VertexFormat.POINT_TEXCOORDVertexFormat.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​()
        このTriangleMeshpoints配列を取得します。
        戻り値:
        points配列、各点は3つのfloat値x、yおよびzによりこの順序で表されます。
      • getNormals

        public final ObservableFloatArray getNormals​()
        このTriangleMeshnormals配列を取得します。
        戻り値:
        各法線が3つのfloat値(nx、ny、nz、この順序)で表されるnormals配列。
        導入されたバージョン:
        JavaFX 8u40
      • getTexCoords

        public final ObservableFloatArray getTexCoords​()
        このTriangleMeshtexCoords配列を取得します。 座標はプロポーショナルであるため、テクスチャの左上隅が[0, 0]で、右下隅が[1, 1]となります。
        戻り値:
        texCoord配列、各テクスチャ座標は2つのfloat値uおよびvによりこの順序で表されます。
      • getFaces

        public final ObservableFaceArray getFaces​()
        このTriangleMeshfaces配列、pointsnormals (VertexFormat.POINT_NORMAL_TEXCOORDメッシュである場合のオプション)およびtexCoords配列の索引を取得します。 すべての索引は、points配列、normals配列またはtexCoords配列の要素に関して、それぞれfloat値ではありません。
        戻り値:
        各フェイスが3 * VertexFormat.getVertexIndexSize()整数であるfaces配列。
      • getFaceSmoothingGroups

        public final ObservableIntegerArray getFaceSmoothingGroups​()
        このTriangleMeshfaceSmoothingGroups配列を取得します。 スムージングは、メッシュのレンダリング方法に影響しますが、そのジオメトリには影響しません。 フェイス・スムージング・グループ値は、隣接するフェイス間のスムージングの制御に使用されます。

        グループ値はビットの配列で表され、最大32個のユニーク・グループが可能です。(1 << 0)から(1 << 31)へ。 フェイス・スムーシング・グループ値の範囲は、0 (スムージング・グループなし)からすべて32グループまでです。 1つのフェイスは、ゼロ個以上のスムーシング・グループに属することができます。 たとえば、groups | = (1 << N)のように、ビットNが設定されている場合、顔はグループNのメンバーです。 値0は、スムージング・グループなし、またはハード・エッジを意味します。 スムージングは、隣接するフェイスのペアがスムージング・グループを共有している場合に適用されます。 それ以外の場合、フェイスはフェイス間をハード・エッジでレンダリングされます。

        空のfaceSmoothingGroupsは、このメッシュ内のすべてのフェイスがスムージング・グループ値1を持つことを意味します。

        faceSmoothingGroupsが空でない場合、そのサイズはフェイスの数と同じである必要があります。

        フォーマットがVertexFormat.POINT_NORMAL_TEXCOORDである場合、このfaceSmoothingGroupsはそのTriangleMeshに影響を与えません。

        戻り値:
        このTriangleMeshfaceSmoothingGroups配列