株式会社antsのホームページへようこそ。

コミュニティデッキ3D版<物理エンジンで遊んでみよう編>

0
Posted in Lab. By kiyokazk

こんにちは、kiyokazkです。

まだまだ引き続きコミュニティデッキ3D版で遊びましょう。
今回は物理エンジンを試してみます。

物理エンジンサンプル

プリミティブサンプル

コミュニティデッキ3D版には物理エンジンを使用したサンプルとして、「物理エンジンサンプル」という3Dガジェットが2つ同梱されています。シンプルな箱モデルを物理空間に置いただけのサンプルです。他のサンプルガジェットのようにマウスの右ドラッグでモデルを回転させたりすることはできませんが、左クリックで掴んで、そのままドラッグで持ち上げたりすることができます。当たり判定(コリジョン)も持っているので、スクリーンショットのように二つ重ねたりすることも可能です。

今回は、この物理エンジンサンプルと同じように、他のサンプルガジェットを同じ物理空間に置いてみます。

Xファイルサンプルを物理空間に置いてみよう

プリミティブサンプル

それではサンプルガジェットのXファイルサンプルを物理空間に置いてみることにしましょう。Xファイルサンプルのガジェットフォルダはsample_xですので、そのフォルダ内のgadget3d.xmlをテキストエディタなどで開いて編集します。

実は、物理空間に置くだけなら変更する点はたったの一箇所だけです。gadget3d.xmlの中のsceneタグのアトリビュートとしてdynamics=”false”となっている部分を、dynamics=”true”に変更するだけです。この部分を変更してガジェットを起動するとモニターモデルが物理空間に落ちてきます。マウスで持ち上げたり物理エンジンサンプルをぶつけたりできるようになっているので試してみてください。

いろいろな設定

物理空間に存在するガジェットの場合、質量やコリジョンの大きさなど、通常の3Dガジェットにはない設定をすることができます。つまりdynamics=”true”の場合だけ有効になる設定です。

これらの設定はobject要素のアトリビュートとして指定します。具体的な設定値については、以下にまとめましたのでこれを参考にいろいろと試してみてください。

object要素のアトリビュート
アトリビュート名 説明 省略時
shape コリジョンの形状 sphere, box sphere
position 物理空間内の初期位置 x, y, zの値をコンマ区切りで指定 0,5,0
mass 質量 キログラムを数値で指定 10
radius コリジョンが球の場合の半径 数値で指定 1
boxSize コリジョンが箱の場合のサイズ x, y, zの値をコンマ区切りで指定 1,1,1

ちなみに、上記のサンプル(モニター)の場合だと、shape属性を”box”、boxSize属性を”0.4,0.4,0.4″とすると見た目とコリジョン形状がぴったりあっておすすめです。