virtualhome2kg-Admire_paintings.ttlのbboxを描いてみるを作る時に使ったx3domについてまとめます.
X3DOM(発音:エックスフリーダム)は、Web上の3Dグラフィックスのためのオープンソースのフレームワークとランタイムです。非商用・商用を問わず自由に使用することができ、MITライセンスとGPLライセンスのデュアルライセンスとなっています。
[https://www.x3dom.org/]より引用
公式のTutorialsを参考にしました.
今回は外部モデルの参照はしていないので,Hello,
X3DOMを見ながら,box
のsize
フィールドに直方体のバウンディングボックスを設定しました.
例えば,下記のようになります.
<box size="0.1019944,0.1218873,0.1132656" solid="false"> </box>
ボックスの中のボックスが見えるように描画したかったので,solid
フィールドはfalse
にしています.これをtrue
にすると,表面だけが描画されます.
詳細な仕様はこちらをご参照ください.
部屋を表すボックスの中を,人を表すボックスが動いている様子を表現するために,ボックスを動かします.
こちらもTutorialが用意されいます.Animating
Objects with Routes
ざっくりと,次の3つの要素で構成されます.
1.
timeSensor
:アニメーションの継続時間やループするか等を設定します.
2.
PositionInterpolator
:ボックスがどの時間点にどこにあるかを設定します.
3.
Route
:上記1と2とボックスをつなぎます.どのボックスがどの時間でどの場所に動くかの関係性を表します.
例えば,こんな感じです.
<timeSensor DEF="time" cycleInterval="4" loop="true"> </timeSensor>
<transform DEF="character1">
<shape>
<appearance>
<material diffuseColor="1 0 0" transparency="0"> </material>
</appearance>
<box size="0.6934643,1.869719,1.40602" solid="false"> </box>
</shape>
</transform>
<PositionInterpolator DEF="movecharacter1" key="0 1 2 3 "
keyValue="4.878775 2.121052 -6.775291 2.093405 0.8728868 -6.113881 2.072467 0.87865 -6.070293 2.070333 0.8782054 -6.076764 ">
</PositionInterpolator>
<Route fromNode="time" fromField="fraction_changed" toNode="movecharacter1" toField="set_fraction"> </Route>
<Route fromNode="movecharacter1" fromField="value_changed" toNode="character1" toField="translation">
</Route>
こちらをダウンロードして,ブラウザで開いてください.下のような画面が出てくるはずです.
以上です.