Tutorial?
ここでは形状ファイル(vrml,x3d)を作成してSIGVerseに登場させる方法を説明します。
まず静止物体の形状ファイルを作成します。形状ファイルはノードとフィールドからなります。SIGVerseで形状ファイルを読み込むためにGroup, Transform, IndexFaceSetなどのノードを用いて記述します。
ここでは簡単な立方体の形状ファイルを作成します。
クライアント側で以下のファイルを作成します。
box.wrl
#VRML V2.0 utf8 CosmoWorlds V1.0 # Need this line to parse this file with Xj3D PROFILE Interactive Group { children [ Transform { children Shape { appearance Appearance { texture ImageTexture { #使用するテキスチャを指定します。 url "tumiki_moku.jpg" repeatS TRUE repeatT TRUE } } geometry IndexedFaceSet { convex FALSE solid FALSE coord DEF Coaster_c01GeoPoints Coordinate { #面を構成する点の位置 point [ -5.0 0.0 -5.0, 5.0 0.0 -5.0, 5.0 0.0 5.0, -5.0 0.0 5.0, -5.0 10.0 -5.0, 5.0 10.0 -5.0, 5.0 10.0 5.0, -5.0 10.0 5.0 ] } #面を構成する頂点の座標(上記の点の通し番号) coordIndex [ 0 3 2 1 -1, 4 5 6 7 -1, 4 0 1 5 -1, 5 1 2 6 -1, 6 2 3 7 -1, 7 3 0 4 -1 ] texCoord TextureCoordinate { #テキスチャの点の座標 point [ 0.000000 0.000000 0.000000 1.000000 1.000000 1.000000 1.000000 0.000000 ] } #面に張り付けるテキスチャの座標 texCoordIndex [ 0 1 2 3 -1, 0 1 2 3 -1, 0 1 2 3 -1, 0 1 2 3 -1, 0 1 2 3 -1, 0 1 2 3 -1, ] } } } ] }
x3dファイルの場合はこちら
ここではIndexedFaceSetノードで静止物体の形状を記述します。またこれらのノードはGroupノード、Transformノードの中で記述します。
形状ファイルの色づけはテキスチャを用います。 ここでは立方体に張り付ける画像"tumiki_moku.jpg"を指定しました。これは木の木目画像です。 ここで指定した素材はSIGViewerのインストール場所、デフォルトでは
C:\Program Files\SIGViewer_<version>\SIGViewer\media\materials\textures
に準備されています。他にもさまざまな素材が用意されています。また、自分の好きなテクスチャ素材を取得して、ここに保存しておけばそれを読み込むこともできます。
それでは上で作成した形状ファイルを保存します。SIGViewerの実行ファイルがある場所、デフォルトでは
C:\Program Files\SIGViewer_<version>\SIGViewer\media\release
に保存します。
次はサーバ側で設定を行います。
上で作成したbox.wrlをサーバ側の
/home/<username>/sigverse-<version>/share/sigverse/data/shape
にコピーします。
エンティティの設定ファイルを作成します。
$ cd ~/sigverse-<version>/share/sigverse/data/xml $ emacs seBox.xml
<?xml version="1.0" encoding="UTF-8" standalone="no" ?> <define-class inherit="Entity.xml" name="box"> <body filename="dummy-body.xml"/> <!--形状ファイルの指定 --> <x3d> <filename>box.wrl</filename> </x3d> </define-class>
上で指定したdummy-body.xmlはサーバ側ではエンティティ用にすでに用意されています。次に世界ファイルを作成します。
$ emacs testBox.xml
testBox.xml
<?xml version="1.0" encoding="utf8"?> <world name="boxtest"> <gravity x="0.0" y="-9.8" z="0.0"/> <!--自作エンティティboxの設定--> <instanciate class="seBox.xml"> <set-attr-value name="name" value="box_000"/> <set-attr-value name="x" value="0.0"/> <set-attr-value name="y" value="5.0"/> <set-attr-value name="z" value="0.0"/> </instanciate>
名前の設定をしなかった場合他のエンティティと見分けることができないので注意してください。
これで準備完了です。それでは実行してみましょう。
$ ./sigserver.sh -p 9001 -w testBox.xml
SIGViewerでサーバにつなげてみると木の箱が見えると思います。
テクスチャを新しくSIGVerseに登録するにはテクスチャ設定ファイルを修正しなければなりません。