Up:[[Tutorial]] Previous:[[物体を持つ動作]] Next: [[ロボット・ダイナミクス(単純モデル)]] ---- #contents *BVHファイルの読み込み [#x19ad21f] ここではBVH形式のモーションデータをSIGVerseで読み込むサンプルを紹介します。 **サンプルコードの取得 [#r8a2a8f0] まずSIGVerseがインストールされたディレクトリに移動します。 $ cd ~/sigverse-<version>/bin 次にsoicoまたはsocio2サーバの以下のディレクトリからサンプルコードを取得し、展開します。 ↓こちらからも取得できます。 #ref(readBVH.tar.gz) $ cp /home/SIGVerse/samples/readBVH.tar.gz . $ tar zxvf readBVH.tar.gz $ cd readBVH このパッケージの中には以下のファイルが含まれています。 ***サンプルコントローラ [#i7f05989] -BVH.cpp -BVH.h -BVHController.cpp -BVHController.h ***世界ファイル [#p6149a98] -BVHWorld.xml ***エージェント設定ファイル [#uc5845c1] -Man-bvh.xml ***bvhファイル読み込み用人間型サンプルモデル [#z8b70ad2] -bvh_man.x3d ***Makefile [#vbdf38d6] -Makefile **コンパイル [#dc0eecc8] それでは早速コンパイルをしてみましょう。 $ make BVHController.soが作成されたらコンパイルは成功です。 **設定 [#fe62edb4] ***ファイルの移動 [#fb87d967] 次にbvhファイル読み込み用のサンプル形状モデルをパスが通ったshapeディレクトリに置きます。 $ cp bvh_man.x3d ../../share/sigverse/data/shape/ 次に世界ファイルとエージェント設定ファイルをxmlディレクトリに置きます。 $ cp BVHWorld.xml ../xml/ $ cp Man-bvh.xml ../xml/ (※コピー先 ../../share/sigverse/data/xml/) ***bvhファイルの取得 [#v7e3fd25] 読み込ませたいbvhファイルを取得してカレントディレクトリ(~/sigverse-<version>/bin/readBVH)に置きます。本ページのサンプルでは[[PV STUDIO>http://www.privatestudio.co.jp/down.htm]]から取得したbvhのサンプルデータAction_Kick_bvh.bvhを読み込ませます。 ***世界ファイルの設定 [#w8dc6fa2] 次に読み込ませたいbvhのファイル名を世界ファイルに記述します。 $ cd .. $ emacs xml/BVHWorld.xml BVHWorld.xml #highlight(xml:firstline[19]){{ <!--BVHファイル名の指定--> <set-attr-value name="BvhFile" value="./readBVH/filename.bvh"/> }} ↓ #highlight(xml:firstline[19]){{ <!--BVHファイル名の指定--> <set-attr-value name="BvhFile" value="./readBVH/Action_Kick_bvh.bvh"/> }} bvhファイルはSIGVerseを実行するディレクトリからのパスを指定します。 BVHWorld.xml #highlight(xml){{ <?xml version="1.0" encoding="UTF-8"?> <world name="newworld"> <!--重力の設定--> <gravity x="0.0" y="-9.8" z="0.0"/> <!--エージェントMan-niiの設定--> <instanciate class="Man-bvh.xml"> <!--エージェント名--> <set-attr-value name="name" value="man_000"/> <!--C++言語の指定--> <set-attr-value name="language" value="c++"/> <!--オブジェクトファイルBVHController.soの指定--> <set-attr-value name="implementation" value="./readBVH/BVHController.so"/> <!--BVHファイル名の指定--> <set-attr-value name="BvhFile" value="./readBVH/Action_Kick_bvh.bvh"/> <!--動力学演算をfalseに設定--> <set-attr-value name="dynamics" value="false"/> <!--エージェントの位置(x,y,z)--> <set-attr-value name="x" value="0.0"/> <set-attr-value name="y" value="50.0"/> <set-attr-value name="z" value="0.0"/> </instanciate> </world> }} **実行 [#l9a95abd] これで準備は整いました。それでは実行してみましょう。 $ ./sigserver.sh -p 9001 -w BVHWorld.xml SIGViewerでサーバに接続するとエージェントが手を広げて立っているのが見えます。 Sendボタンを押してシミュレーションを開始するとbvhファイルの読み込みが開始され、エージェントが動き始めます。 #ref(./motion_1.PNG,40%) エージェントがキックします。 **サンプルモデル [#f5ec3378] bvh読み込みサンプルモデル(bvh_man.x3d)で定義された関節名は以下のようになっています。すべての関節がローカル座標系におけるx,y,z軸を中心に回転するように定義されいています。 bvh読み込みサンプルモデル(bvh_man.x3d)で定義された関節名は以下のようになっています。すべての関節がローカル座標系におけるx,y,z軸を中心に回転するように定義されています。 #ref(./joint_name.jpg) **参考ページ [#a4b2f90f] -[[Real animation software PV STUDIO>http://www.privatestudio.co.jp/down.htm]] -[[尾下研究室 BVH モーションファイル 読み込み&表示 プログラム>http://www.oshita-lab.org/software/bvh/index-j.html]] #highlight(end) *Old Version [#la5c5120] -[[BVHファイルの読み込み(v120330, v1.4.8)]] Up:[[Tutorial]] Previous:[[物体を持つ動作]] Next: [[ロボット・ダイナミクス(単純モデル)]]