基本形状の作成

7. IndexedLineSet(線分の集合)


IndexedLineSet は、線分の集合を表す単語です。
geometry IndexedLineSet の後に { } をつけて、
その中に線分の集合を記述します。


まず、線分を構成する頂点の座標を、全部まとめて書きます。
geometry IndexedLineSet の後に { } の中に、まず
coord Coodinate と書いて、その後に { } をつけます。
{ } の中に、 point と書いて、その後に [ ] をつけます。
[ ] の中に、頂点の座標を全部続けて書きます。

以下、3個の頂点の座標を、「,」で区切って続けて書いた例です。

coord Coordinate {
  point [
    0.0 0.0 0.0,   1.0 0.0 0.0,    2.0 1.0 1.0
  ]
}


続いて、何番目の頂点と何番目の頂点を結んで線分を引くか、
という情報を、全部まとめて書きます。

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

〜ここで注意〜

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

〜ここまで注意〜

もし1番目の頂点の2番目の頂点を結んで線分をつくるなら、
0,1 と書いて、その後に -1, とつけます。
さらに、もし1番目の頂点の3番目の頂点を結んで線分をつくるなら、
0,2 と書いて、その後に -1, とつけます。

以下、このようにして引かれる2本の線分の記述例です。
coordIndex [
 0,1,-1,   0,2,-1
]

ここでよくみると、この2本の線分は、
2番目、1番目、3番目の頂点を一続きに接続しています。
このような場合には、この2本をまとめて、
1,0,2,-1 というように記述することもできます。
coordIndex [
 1,0,2,-1
]


もうちょっと複雑な線分の集合を記述した例を示します。

この例では、まず20個の頂点が記述されています。
続いて、そのうち10個の頂点を連結する、
9本の一続きの線分が記述されています。
さらに、残りの10個の頂点を連結する、
9本の一続きの線分が記述されています。

#VRML V2.0 utf8
Shape {
  geometry IndexedLineSet {
    coord Coordinate {
      point [
        1.0 1.0 0.0,   2.0 4.0 0.0,
        3.0 5.0 0.0,   4.0 4.0 0.0,
        5.0 6.0 0.0,   6.0 7.0 0.0,
        7.0 5.0 0.0,   8.0 6.0 0.0,
        9.0 4.0 0.0,  10.0 3.0 0.0,
        1.0 3.0 0.0,   0.0 2.0 0.0,
        -1.0 2.0 0.0, -1.0 1.0 0.0,
        -2.0 2.0 0.0, -2.0 4.0 0.0,
        -3.0 5.0 0.0, -4.0 5.0 0.0,
        -4.0 7.0 0.0, -5.0 6.0 0.0,
     ]
   }
   coordIndex [
     0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1,
     10, 11, 12, 13, 14, 15, 16, 17, 18, 19, -1
   ]
}

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

次はポリゴンの集合を表示してみましょう。


目次に戻る