[PV3D]Max3DSクラスで読込んだモデリングにマテリアル(テクスチャ)とシェードを当てる

これはかなりハマったのでメモ。

Max3DSクラスで拡張子.3dsのモデリングを読込み、ビットマップテクスチャとシェードを適用させたかったんですけど、通常通り読み込み時にShadedMaterialを渡すとレンダリング時にエラーが出てしまう。。

いろいろ試してみた結果、後から(読込み完了後かな)replaceMaterialByName()で画像を差し替えることで解決。


private function setModel(src:String):void
{
var texture:BitmapMaterial = new BitmapMaterial(new Bitmap(new Image(0,0)).bitmapData);

var shader:GouraudShader = new GouraudShader(_light, 0xFFFFFF, 0x000000, 20);
var shaded:ShadedMaterial = new ShadedMaterial(texture, shader);
_model = new Max3DS();

/**
* ここでShadedMaterialを当てるとエラー
**/
_model.load(src, new MaterialsList( { all: texture} ));

_model.addEventListener(FileLoadEvent.LOAD_COMPLETE, function():void
{

/**
* このタイミングでShadedMaterialを差し替えるとOK。
**/
_model.replaceMaterialByName({shaded,"all"})

_scene.addChild(_model);
_renderer.renderScene(_scene, _camera, _viewport);
});
}

ShadedMaterialというか、シェード関連を当てるとエラーになった。現象を把握できるほどPV3Dの知識ないので追求はしないにょ。

ちなみに解決までの足取りはこっちにいろいろ書かせていただきました。

http://www.flash-jp.com/modules/newbb/viewtopic.php?topic_id=9155&post_id=44091&order=0&viewmode=flat&pid=0&forum=6#forumpost44091

Tags:

The URL to TrackBack this entry is:

コメントをどうぞ