8 月 23 2008
PV3Dでレースゲーム制作 12 - 3Dモデル読み込み編
以前、SWFに埋め込んだ3DモデルをPapervision3Dで使用する方法を紹介しましたが、実は、ローダで読み込んでから描画するのも同じようなやり方でできます。
ゲーム的にも外部からロードした方が勝手が良さそうだし、今後はこっちを採用する方向でいきます。
*以下、共通部分は以前の記事のコピペです。
それでは、手順を追っていきましょう。(ところどころ用語が間違ってたらすいません…。)
Papervision3D のマテリアルリストを使うので、まずはクラスをインポート。
import org.papervision3d.materials.utils.MaterialsList;
3DモデルのDAEファイルとテクスチャ画像を読み込み、それぞれ XML と Bitmap にインスタンス化しておきます。
参照:PV3Dでレースゲーム制作 11 - AS3で複数のファイルをロードする
↓↓インスタンス作成部分の抜粋。(宣言は割愛してます。)
courseXML = XML(loaderArray[0].data); txMainBitmap = Bitmap(loaderArray[1].content); txTreeBitmap = Bitmap(loaderArray[2].content); txItemBitmap = Bitmap(loaderArray[3].content);
次にマテリアルの作成。
var mdCourse01Materials:Object = new Object();
mdCourse01Materials = {
t_all_jpg:new BitmapMaterial(txMainBitmap.bitmapData),
t_all_jpg_2:new BitmapMaterial(txMainBitmap.bitmapData),
t_tree_png:new BitmapMaterial(txTreeBitmap.bitmapData),
t_item_jpg:new BitmapMaterial(txItemBitmap.bitmapData)
};
テクスチャの Bitmap を元に、マテリアル用の Object へ BitmapMaterial を登録していきます。
ここで注意点!Object のキーは、COLLADAのマテリアル名を使います。(赤文字部分。記述は順不同でOK。)
ですので、もしマテリアル名に妙な記号とか2バイト文字とかが入ってる場合は、あらかじめCOLLADAを修正しておかなければなりません。
マテリアル名は、Blender(COLLADAインポート)ではアニメーションビュー、球体アイコンで確認できます。
COLLADAのXML内では material タグに定義されています。
<library_materials> <material id="t_all_jpg" name="t_all_jpg"> ...
ただしここ以外の場所からもid名を参照していたりするので、手作業で名前を変更するときは、検索してそれらを一括で変えてあげないとダメかもしれません。
さてASに戻り、最後に3Dオブジェクト作成。
courseObjects = new Collada( courseXML, new MaterialsList(mdCourse01Materials) );
Collada() メソッドの第1引数に読み込んだ XML インスタンス、第2引数に先ほどの Object から作った MaterialsList を指定すればOK。
あとはいつもどおり、Collada を Scene3D に addChild して、renderScene で描画するだけ。(→参照)
今回もゲーム的には進展なしなので、デモとかはありません…!

