FC2ブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Tag:スポンサー広告  page to top

Blenderから「MH-Library for XNA 4.0」向けFBXの出力方法

■下準備

こちらを参考に出力プラグインを準備してください。


■出力共通設定

以下の出力時に共通する点として、オブジェクトのスケール値が1となっている必要があります。

オブジェクトのスケールを確認するには…



①Property の Object タブを開きます。
②Transform 欄の中にある Scale を確認する。



以下のように1以外の値になっている時、出力プラグインから警告が出ます。



Blender では、Scale が1以外になっているオブジェクトを、形状を変化させずに Scale を 1 にすることができます。
Scale を 1 にするには、3DView の下部にある Object メニューから Apply Scale を実行します。





下記の出力全てにおいて、Scale値を1にしてから出力するようにして下さい。


■モデル出力(ボーンなし)

Blenderで以下が必ず行われるようにしてください。
・単一、あるいは複数のオブジェクトを作成する
・全てのオブジェクトにマテリアルを適用する
・全てのオブジェクトにテクスチャを適用する
・全てのオブジェクトにテクスチャUVを適用する
 →TextureプロパティのMapping欄で Coordinates=UV, Layer=(UV Textureの名前。標準はUVTex)になっているか確認して下さい

準備が整ったら、以下のように出力を行います。



FBXが出力されたら、FBXファイルを Model (Blender) : MHL コンテントパイプラインへ渡します。この時使用されているテクスチャも必要となります。FBXファイルとテクスチャとの相対パスの関連に注意してください。


■モデル出力(ボーンあり)

Blenderで以下が必ず行われるようにしてください。
・単一、あるいは複数のオブジェクトを作成する
・全てのオブジェクトにマテリアルを適用する
・全てのオブジェクトにテクスチャを適用する
・全てのオブジェクトにテクスチャUVを適用する
 →TextureプロパティのMapping欄で Coordinates=UV, Layer=(UV Textureの名前。標準はUVTex)になっているか確認して下さい
・ボーン(Armature)を作成する
・ボーン(Armature)とオブジェクトを関連付け、ボーンウェイトを割り当てる

準備が整ったら、以下のように出力を行います。



FBXが出力されたら、FBXファイルを Model (Blender) : MHL コンテントパイプラインへ渡します。この時使用されているテクスチャも必要となります。FBXファイルとテクスチャとの相対パスの関連に注意してください。


■モーション出力

Blenderで以下が必ず行われるようにしてください。
・上記のモデル出力(ボーンあり)にモーションを付ける

準備が整ったら、以下のように出力を行います。



FBXが出力されたら、FBXファイルを Motion (Blender) : MHL コンテントパイプラインへ渡します。

この時、モーションは1つのBlenderファイルに1モーションとなるようにしてください。

個人的にはモデル出力したファイルをコピーしてモーション出力用とするか、あるいは新しいBlenderファイルに先ほどのモデルをLinkさせて使用すると良いと思います。




■静的衝突判定データ出力

Blenderで以下が必ず行われるようにしてください。
・単一、あるいは複数のオブジェクトを作成する
 →オブジェクト単位で境界ボリュームによる高速衝突判定を行います。ある程度の範囲でオブジェクトを分割することでパフォーマンスが向上します

ver1.3.2以後ではコンテントパイプラインで分割処理をすることができるようになりました



準備が整ったら、以下のように出力を行います。



FBXが出力されたら、FBXファイルを ColStatic (Blender) : MHL コンテントパイプラインへ渡します。

なお静的衝突判定データは、既に出力済みのモデルFBXファイルをそのまま利用することも可能です。この時マテリアルやテクスチャは無視されます。
ただし一般的に描画用に作成されたモデルは衝突判定を行うには分割数が多すぎることが多いため、別途衝突判定用モデルを作成して出力した方がパフォーマンスに優れます。


■動的衝突判定データ出力

Blenderで以下が必ず行われるようにしてください。
・単一、あるいは複数の衝突判定オブジェクトを作成する
 →詳しくは後述の「動的衝突判定オブジェクト ○○ の作成」を参照

準備が整ったら、以下のように出力を行います。



FBXが出力されたら、FBXファイルを ColDynamic (Blender) : MHL コンテントパイプラインへ渡します。


■動的衝突判定オブジェクト 球 の作成

Blenderで球を作成します。



球の位置、大きさを調整します。球体が歪まないように注意してください。



作成したら、オブジェクト名に「.MhlCS」が含まれるようにしてください。
また Scale値 が1になっていることを確認してください。




■動的衝突判定オブジェクト カプセル の作成

Blenderで箱を作成します。



箱の1軸のみが長くなるようにした上で、位置、大きさを調整します。箱が歪まないように注意してください。



この時、箱の中に納まるようにカプセルが設定されます。



作成したら、オブジェクト名に「.MhlCC」が含まれるようにしてください。
また Scale値 が1になっていることを確認してください。




■動的衝突判定オブジェクト グラブ の作成

Blenderでコーンを作成します。



この時コーンの分割数は必ず5以上になるようにします。



位置、大きさ、及び以下の2頂点の位置を調整します。
ゲーム中で毎フレーム重力方向への移動が行われる場合、コーンの底側の頂点はいじらない方が良いです。



2頂点上の線分が衝突判定線分それ以外の頂点で構成される円の中心が基準点となります。

ゲーム中で重力方向への移動が行われない場合は、地面から浮いてしまわないように、コーンの底側の頂点を底側へ押し出します。



作成したら、オブジェクト名に「.MhlCG」が含まれるようにしてください。
また Scale値 が1になっていることを確認してください。




■動的衝突判定オブジェクトをボーンにアタッチする

動的衝突判定オブジェクトをボーンにアタッチすることで、モーションの動きに合わせて衝突判定オブジェクトが動くようになります。

アタッチするには、まず Armature を作成した上で、動的衝突判定オブジェクトを選択し Property の Object タブから対応するボーンを設定します。
Scale値にも注意してください。



更に、ボーンのヘッド側のトランスフォームを適用します。動的衝突判定オブジェクトを選択し Property の Object Constraints タブで Copy Transforms を追加し、以下のように先ほど割り当てたボーンを設定します。



最初にボーンを割り当ててから編集すると作業し易いと思います。

この状態でFBX出力を行うと、モーションの動きに合わせて衝突判定オブジェクトが動くようになります。


■サンプルBlenderファイル

以下の出力を実際に行う直前のサンプルBlenderファイルを用意しました。
こちらのダウンロードページからダウンロードできます。

関連記事

Tag:XNA4.0  Trackback:0 comment:0 page to top

Comment

comment form
(編集・削除用):
プロフィール

Nikukyu

Author:Nikukyu
なんちゃってゲーム開発者をしています。

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。