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ファイルの場合はこちら

filebox.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でサーバにつなげてみると木の箱が見えると思います。

box_1.jpg

Front page   New List of pages Search Recent changes   Help   RSS of recent changes