Away 3 D基礎教程(二):外部モデルのロード
10436 ワード
プレビューアドレス:http://leoas.host-home-idc.k5.fhfinance.com/tutorials/2/glass.html
モデルはマウスに従って回転し、中ボタンホイールはスケーリングされます.
モデルと完全なソースのダウンロード:http://files.cnblogs.com/njflash/src2.rar
プレビュー画像:
away 3 dがサポートするモデルのフォーマットは豊富です.MD 2、MD 5、3 DS、OBJなど私たちがよく使うフォーマットは全部サポートします.その他にaway 3 dの専用フォーマットawdがあります.awdは、away 3 dのモデルエディタpreFabによって生成を導出することができる.通常骨格動画をサポートするモデルはMD 2 MD 5 3 DS AWDなどがあります.ここではAWDモデルをロードします.
1:まず3 Dビューを作成し、ビューの関連パラメータを設定します.
モデルはマウスに従って回転し、中ボタンホイールはスケーリングされます.
モデルと完全なソースのダウンロード:http://files.cnblogs.com/njflash/src2.rar
プレビュー画像:
away 3 dがサポートするモデルのフォーマットは豊富です.MD 2、MD 5、3 DS、OBJなど私たちがよく使うフォーマットは全部サポートします.その他にaway 3 dの専用フォーマットawdがあります.awdは、away 3 dのモデルエディタpreFabによって生成を導出することができる.通常骨格動画をサポートするモデルはMD 2 MD 5 3 DS AWDなどがあります.ここではAWDモデルをロードします.
1:まず3 Dビューを作成し、ビューの関連パラメータを設定します.
_view = new View3D();
//
_view.backgroundColor = 0x666666;
//
_view.antiAlias = 4;
this.addChild(_view);
2:レンダリングリスタとマウスホイールリスニングを初期化するthis.addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_WHEEL,onWheel);
3:Loader 3 Dクラスでモデルをロードして解析する//Parsers.enableAllBundled() away3d
Parsers.enableAllBundled();
_loader = new Loader3D();
_loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE,onResourceComplete);
//_loader.addEventListener(AssetEvent.ASSET_COMPLETE,assetComplete);
_loader.addEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
//AntModel
_loader.loadData(new AntModel());
4:ロード完了後のイベント処理関数_loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE,onResourceComplete);
_loader.removeEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
_view.scene.addChild(_loader);
_view.camera.z=1000;
_view.camera.lookAt(_loader.position);
5:ソースコードの整合性package
{
import away3d.containers.View3D;
import away3d.entities.Mesh;
import away3d.events.AssetEvent;
import away3d.events.LoaderEvent;
import away3d.loaders.Loader3D;
import away3d.loaders.misc.*;
import away3d.loaders.parsers.Parsers;
import away3d.library.assets.AssetType;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import flash.events.MouseEvent;
[SWF(width="550", height="400", frameRate="60", backgroundColor="0x666666")]
public class GettingStartedWithAway3D extends Sprite
{
[Embed(source="vase.awd",mimeType="application/octet-stream")]
public static var AntModel:Class;
private var _view : View3D;
private var _loader : Loader3D;
public function GettingStartedWithAway3D()
{
_view = new View3D();
//
_view.backgroundColor = 0x666666;
//
_view.antiAlias = 4;
this.addChild(_view);
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
stage.addEventListener(MouseEvent.MOUSE_WHEEL,onWheel);
//Parsers.enableAllBundled() away3d
Parsers.enableAllBundled();
_loader = new Loader3D();
_loader.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
/* Mesh , MESH,
*/
//_loader.addEventListener(AssetEvent.ASSET_COMPLETE, assetComplete);
_loader.addEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
//AntModel
_loader.loadData(new AntModel());
}
/*private function assetComplete(e:AssetEvent):void {
//trace(e.asset.assetType == AssetType.MESH);
if (e.asset.assetType == AssetType.MESH) {
var mesh3d:Mesh = e.asset as Mesh;
_view.scene.addChild(mesh3d);
}
}*/
private function onResourceComplete(ev : LoaderEvent) : void
{
_loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
_loader.removeEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
_view.scene.addChild(_loader);
_view.camera.z=1000;
_view.camera.lookAt(_loader.position);
}
private function onLoadError(ev : LoaderEvent) : void
{
trace('Could not find', ev.url);
_loader.removeEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete);
_loader.removeEventListener(LoaderEvent.LOAD_ERROR, onLoadError);
_loader = null;
}
private function onWheel(e:MouseEvent):void{
trace(e.delta);
if(e.delta>0){
_view.camera.moveForward(30);
}else{
_view.camera.moveBackward(30);
}
}
private function onEnterFrame(ev : Event) : void
{
_loader.rotationY = stage.mouseX - stage.stageWidth/2;
_view.camera.y = 3 * (stage.mouseY - stage.stageHeight/2);
_view.camera.lookAt(_loader.position);
_view.render();
}
}
}