基本形状の作成

8. IndexedFaceSet(ポリゴンの集合)


IndexedFaceSet は、ポリゴンの集合を表す単語です。
geometry IndexedFaceSet の後に { } をつけて、
その中にポリゴンの集合を記述します。


まず、ポリゴンを構成する頂点の座標を、全部まとめて書きます。
geometry IndexedFaceSet の後に { } の中に、まず
coord Coodinate と書いて、その後に { } をつけます。
{ } の中に、 point と書いて、その後に [ ] をつけます。
[ ] の中に、頂点の座標を全部続けて書きます。
以上、IndexedLineSet の頂点の記述と同様です。


続いて、何番目の頂点と何番目の頂点を結んで
ポリゴンを作るかという情報を、全部まとめて書きます。

geometry IndexedFaceSet の後に { } の中に、
coordIndex と書いて、その後に [ ] をつけます。
[ ] の中に、頂点の座標の番号を全部続けて書きます。

〜ここで注意〜

前に述べた coordIndex の中でまとめて書いた頂点のうち、
1番目に書かれた頂点を「0番」、
2番目に書かれた頂点を「1番」というように数えます。

〜ここまで注意〜

もし1番目の頂点、2番目の頂点、3番目の頂点を結んで、
ポリゴン(三角形)をつくるなら、
0,1,2 と書いて、その後に -1, とつけます。
さらに、もし1番目の頂点、3番目の頂点、4番目の頂点を
結んで、別のポリゴンをつくるなら、
0,2,3 と書いて、その後に -1, とつけます。

以下、このようにして引かれる2個のポリゴンの記述例です。
coordIndex [
 0,1,2,-1,   0,2,3,-1
]


もうちょっと複雑なポリゴンの集合を記述した例を示します。

この例では、まず30個の頂点が記述されています。
続いて、その何個かを接続してできるポリゴンが
全部で26個記述されています。
最後の1個だけが五角形で、残りの25個は全部四角形です。

#VRML V2.0 utf8

Shape {
  geometry IndexedFaceSet {
    coord Coordinate {
      point [
        0.32 2 0,
        0.1 2 0.3,
        -0.26 2 0.19,
        -0.26 2 -0.19,
        0.1 2 -0.3,
        0.3 1.95 0,
        0.09 1.95 0.29,
        -0.24 1.95 0.18,
        -0.24 1.95 -0.18,
        0.09 1.95 -0.29,
        0.42 1.6 0,
        0.13 1.6 0.4,
        -0.34 1.6 0.25,
        -0.34 1.6 -0.25,
        0.13 1.6 -0.4,
        0.6 1.5 0,
        0.19 1.5 0.57,
        -0.48 1.5 0.35,
        -0.49 1.5 -0.35,
        0.18 1.5 -0.57,
        0.7 1.2 0,
        0.22 1.2 0.67,
        -0.57 1.2 0.41,
        -0.57 1.2 -0.41,
        0.21 1.2 -0.67,
        0.4 0 0,
        0.12 0 0.38,
        -0.32 0 0.24,
        -0.32 0 -0.23,
        0.12 0 -0.38
      ]
    }
    coordIndex [
      0, 1, 6, 5, -1,
      1, 2, 7, 6, -1,
      2, 3, 8, 7, -1,
      3, 4, 9, 8, -1,
      4, 0, 5, 9, -1,
      5, 6, 11, 10, -1,
      6, 7, 12, 11, -1,
      7, 8, 13, 12, -1,
      8, 9, 14, 13, -1,
      9, 5, 10, 14, -1,
      10, 11, 16, 15, -1,
      11, 12, 17, 16, -1,
      12, 13, 18, 17, -1,
      13, 14, 19, 18, -1,
      14, 10, 15, 19, -1,
      15, 16, 21, 20, -1,
      16, 17, 22, 21, -1,
      17, 18, 23, 22, -1,
      18, 19, 24, 23, -1,
      19, 15, 20, 24, -1,
      20, 21, 26, 25, -1,
      21, 22, 27, 26, -1,
      22, 23, 28, 27, -1,
      23, 24, 29, 28, -1,
      24, 20, 25, 29, -1,
      25, 26, 27, 28, 29,-1
    ]
  }
}

上の VRML を実際に表示してみましょう。


目次に戻る