x3domについて

virtualhome2kg-Admire_paintings.ttlのbboxを描いてみるを作る時に使ったx3domについてまとめます.

x3domとは

X3DOM(発音:エックスフリーダム)は、Web上の3Dグラフィックスのためのオープンソースのフレームワークとランタイムです。非商用・商用を問わず自由に使用することができ、MITライセンスとGPLライセンスのデュアルライセンスとなっています。
[https://www.x3dom.org/]より引用

使い方

公式のTutorialsを参考にしました.

ボックスの描画

今回は外部モデルの参照はしていないので,Hello, X3DOMを見ながら,boxsizeフィールドに直方体のバウンディングボックスを設定しました. 例えば,下記のようになります.

<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>

作例

こちらをダウンロードして,ブラウザで開いてください.下のような画面が出てくるはずです. demo

以上です.

index pageへ戻る