MBAC / MTRAデータの描画
ここではMBAC / MTRAデータからの3D グラフィックスの描画について解説します。
目次
1. MBAC データ
モデルデータを表します。D4D データを作成することができますが、単体で使用することも可能です。単体で使用する場合、Object3D クラスの createInstance() メソッドにより読み込みます。このときの戻り値は Object3D オブジェクトですが、これは Figure クラスにキャストすることが可能です。
MBAC データは、以下のようにして作成します。
まず BAC ファイルを作成します。BACファイルを作成するには、3D ツールに弊社提供のプラグイン BacTra Exporter を追加し、このプラグインを利用することで BAC ファイルを作成します。
これを M3DConverter というツールに読み込ませると MBAC データに変換します。
2.MTRA データ
アニメーションデータを表します。基本的には MBACデータと対になるものです。 MBACデータとともに D4D データを作ることも可能ですが、単体で読み込むことも可能です。
3D ツールでアニメーションを作成していれば BAC ファイルと同時に TRA ファイルも作られます。これを BAC 同様 M3DConverter に読み込ませることで MTRA データが作成されます。
3.BMP データ
各ポリゴンに貼り付けるためのテクスチャデータです。サイズは 256 * 256 以下、色は 256 色のものを利用できます。
4.MBAC、MTRA データからの描画
MBAC 、MTRA データからの描画について解説します。
[MBAC 、MTRA データからの 3D モデル描画]
Figure fig = null;
ActionTable act = null;
ActionTable[] aTable = new aTable[2];
Texture[] texArray = new Texture[2];
・・・
int frame = 0;
・・・
fig = ( Figure )loadData( "V3_Sample.mbac" );
texArray[0] = ( Texture )loadData( "01_Text_03.bmp" );
texArray[1] = ( Texture )loadData( "02_BG_04_B.bmp" );
aTable[0] = ( ActionTable )loadData( "Act_Wait.mtra" );
aTable[1] = ( ActionTable )loadData( "Act_Attack.mtra" );
・・・
fig.setAction( aTable[0], 0 );
fig.setTextures( texArray );
・・・
if ( _isAct ) {
// Graphics3D オブジェクトのアクションテーブルを設定
fig.setAction( act, 0 );
// アニメーションキーフレーム時間の設定
frame = frame < act.getMaxFrame( 0 ) ? frame + act.getMaxFrame( 0 ) / 30 : 0;
fig.setTime( frame );
・・・
// loadData
return null;
MBAC 、MTRA データを直接用いての描画は Figure 、Texture 、ActionTable オブジェクトのインスタンスを取得する必要があります。その後 Figure オブジェクトに対して setAction() メソッド、および setTextures() メソッドを利用してアクションテーブルやテクスチャを関連付けます。この操作により、 Figure オブジェクトがアニメーションデータやポリゴンを持つようになります。
また、関連付けられたアニメーションデータはそのままではモデルの外見や姿勢を変化させることはできません。そこで setTime() メソッドを使用することで、モデルが持つアニメーションデータを利用してモデルの外見や姿勢を設定し、変化させることができます。
なお、このサンプルでは現在時刻を表す frame の値がアニメーションデータの最大フレーム数を超えると、自動的に初期状態に戻ったのちに再びアニメーションを行うようにするために、 getMaxFrame() メソッドを用いて最大フレーム数を取得しています。
このとき描画対象は DrawableObject3D クラスのサブクラスである Figure オブジェクトです。

MBAC, MTRA データからのモデル描画

