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

コミュニティデッキ3D版<ガジェットを作ってみよう編その1>

0
Posted in Lab. By kiyokazk

こんにちは、kiyokazkです。
先日、GIZMOコミュニティデッキ3D版を公開しましたが、この3Dデッキの基本的な使い方をいくつかのエントリーに分けて解説していきます。簡単なものから順を追って説明していきますので、興味があればいろいろ試してみてください。

まずはじめの今回は初級編として<ガジェットを作ってみよう編その1>をお送りします。
3Dモデルのデータなどを用意しなくても、簡単な3Dガジェットを作る方法について説明します。

3Dガジェットの構成

まずはじめに基本的な知識として、3Dガジェットがどのような構成でできているかについて説明します。

GIZMOにおけるガジェットは、基本的に1フォルダを1ガジェットとして構成されています。コミュニティデッキ3D版に属するガジェットはWindowsXPの場合、
Documents and Settings\(User)\Application Data\GIZMO2\deck\community3d\gadget
以下に配置されます(Windows Vistaの場合はUsers\(User)\AppData\Roaming\GIZMO2)。

ここに配置される各フォルダがガジェットとして認識され、3Dガジェットの場合最低限以下のファイルが存在します。

  • gadget.xml - ガジェット定義ファイル
  • gadget3d.xml - 3Dガジェット定義ファイル

これらに追加して必要なデータファイルがあればフォルダ内に配置し、このフォルダ単位でひとつのガジェットとして振舞います。

ガジェットの構成やガジェット定義ファイルの詳細については、GIZMOサイト開発者情報のチュートリアルにも説明がありますのであわせてご覧ください。

ベースとなるサンプルガジェット

プリミティブサンプル

今回の記事ではサンプルとして同梱されている3Dガジェットのうちの「プリミティブサンプル」をベースに解説していきます。プリミティブサンプルは、テクスチャを貼った板と箱、もしくはテクスチャを貼った板と真っ白な板で構成されたガジェットです。

「プリミティブサンプル」は、それぞれsample_primitive およびsample_primitive2というフォルダでガジェットとして配置されています。この中身について説明し、どのように3Dガジェットとして定義されているかを解説していきます。

primitive_sampleの中身をのぞいてみる

それではprimitive_sampleの中身をのぞいてみましょう。
フォルダの中身を見ると、ガジェット定義ファイル(gadget.xmlとgadget3d.xml)とants_logo.pngという画像ファイルがあるのが分かると思います。特にモデルデータのようなものは見当たりません。では、どのように板や箱を決めているのでしょうか。

その答えはgadget3d.xmlの中身を見てみるとわかります。gadget3d.xmlファイルを適当なテキストエディタなどで開いてみてください。以下のような内容であることが分かると思います。
[xml]
<?xml version="1.0" encoding="UTF-8"?>
<gadget xmlns="http://gizmo.anthill.jp/gadget3d" version="1.0">
<scene
transparent="true"
topmost="true"
dynamics="false"
>
<object
type="normal"
draggable="true"
>
<model type="primitive">
<primitive type="plane" texture="ants_logo.png" lightEnable="false" size="0.5,0.5,0.5" />
</model>
<model type="primitive">
<primitive type="cube" size="0.5,0.5,0.5" offset="0,0,0.5" rotation="45,0,0" />
</model>
</object>
</scene>
</gadget>
[/xml]

真ん中よりちょっと下あたりに、modelというタグがあるのが分かるでしょうか。
GIZMO 3Dプラグインではこのmodelタグによって、表示する3Dモデルについての定義をしています。このガジェットではmodelのtypeをprimitiveとして定義し、その中で実際のprimitiveについての定義をしています。
このようにprimitiveタイプのmodelとして定義することで、3Dモデルデータを使用せずに、3Dプラグインがあらかじめ持っている簡易モデルを表示することができるようになります。

primitive_sampleを改造してみる

さて、それではprimitive_sampleガジェットの定義ファイルgadget3d.xmlのprimitiveの部分をいろいろといじってみましょう。

[xml]
<model type="primitive">
<primitive type="plane" texture="ants_logo.png" lightEnable="false" size="0.5,0.5,0.5" />
</model>
[/xml]

このgadget3d.xmlのprimitiveタグの内容を変更することで表示するプリミティブを様々に変更できます。テキストエディタなどで開いて編集し、ガジェットを開きなおすことで内容が反映されます。
例えば、primitiveタグのtype=”plane”となっている部分をtype=”cube”とすることで、板が箱に変更されます。同様にサイズや位置、向きなども自由に変更することができます。

実際にそれぞれの属性の意味や属性として何を設定できるのかについては以下にまとめました。これを参考にいろいろ試してみてください。

primitive要素のアトリビュート
アトリビュート名 説明 省略時
type プリミティブのタイプ plane, cube, sphere 省略不可
texture テクスチャ(planeのみに有効) ガジェットフォルダからの相対パス 省略時は無視
size プリミティブのサイズ x, y, zの値をコンマ区切りで指定 1, 1, 1
offset プリミティブの位置オフセット x, y, zの値をコンマ区切りで指定 0, 0, 0
rotation プリミティブの回転角度 x, y, zの値をコンマ区切りで指定(degree) 0, 0, 0
lightEnable ライティングの有無 true, false true

例えば、いろいろなオフセットを持ったprimitiveとして定義したmodelタグをたくさん並べることで、テクスチャを貼った板をたくさん表示することもできます。それぞれ定義した板は位置オフセットや回転を指定したり、それぞれにテクスチャを貼ったりすることができるので、がんばればいろんな形を模倣することも不可能ではないでしょう。
ただ、そこまでやるのであれば、適当なモデリングツールなどを使って3Dモデルデータを作成する方が思い通りのものを表現しやすいでしょう。

というわけで、次回は3Dモデルデータを使用した3Dガジェットを作成する方法について解説します。