Loading a 3D mesh made with the 3d software of your preference in as3 with away3d libraries using AssetLibrary (inside away3d.library package) you can use loader3d as well (inside away3d.loaders package).There's a parser class for some 3d file format as AC3DParser, AWD1Parser, DAEParser, OBJParser,between others, see parsers for more file formats availables.
code:
package code {
import away3d.cameras.Camera3D;
import away3d.containers.View3D;
import away3d.events.LoaderEvent;
import away3d.utils.*;
import away3d.library.*;
import away3d.library.assets.*;
import away3d.events.AssetEvent;
import away3d.loaders.misc.AssetLoaderContext;
import away3d.loaders.parsers.*;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.net.URLRequest;
import away3d.entities.Mesh;
import away3d.textures.BitmapTexture;
import away3d.materials.TextureMaterial;
import away3d.tools.utils.Bounds;
import away3d.tools.helpers.MeshHelper;
import flash.display.BitmapData;
[SWF(width="1000", height="600", frameRate="60", backgroundColor="#000000")]
public class model extends Sprite {
private var _view:View3D;
private const WIDTH:Number = 1000;
private const HEIGHT:Number= 600;
private var sphere : Mesh;
private var txture : BitmapTexture = new BitmapTexture(new BitmapData(512, 512, false, 0xCC0000));
private var sphereMaterial : TextureMaterial;
public function model() {
// constructor code
super();
if (stage) initialize();
else addEventListener(Event.ADDED_TO_STAGE, initialize);
}
private function initialize(evt:Event = null):void
{
removeEventListener( Event.ADDED_TO_STAGE, initialize );
turnon();
}
private function turnon():void{
initStage();
initEngine();
setUp3DModel();
addEventListener( Event.ENTER_FRAME, enterframeHandler );
}
private function initStage():void {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.frameRate = 60;
}
private function initEngine():void
{
_view = new View3D();
_view.backgroundColor = 0x333333;
_view.width = WIDTH;
_view.height = HEIGHT;
_view.antiAlias = 4;
_view.camera.lens.far = 15000;
_view.addSourceURL( "srcview/index.html" );
_view.forceMouseMove = true;
_view.camera.x=-5000.76;
_view.camera.y = -700;
_view.camera.z =-10026.991;
_view.camera.rotationX=4.5 ;
addChild( _view );
}
private function enterframeHandler( event:Event ):void {
update();
}
private function update():void {
_view.render();
}
private function setUp3DModel():void{
//With AssetLibrary
AssetLibrary.enableParser(Max3DSParser);/*See for the rest of parsers http://away3d.com/livedocs/away3d/4.0/away3d/loaders/parsers/package-detail.html*/
AssetLibrary.addEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete);
AssetLibrary.load(new URLRequest("embeds/Sphere.3ds"),new AssetLoaderContext(false));
// With Loader3D
var loader3d:Loader3D = new Loader3D(false);
var context:AssetLoaderContext = new AssetLoaderContext(false);
loader3d.addEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete, false, 0, true);
loader3d.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete, false, 0, true);
loader3d.load(new URLRequest("embeds/Sphere.3ds"),context, null, new Max3DSParser());
}
private function onAssetComplete(event:AssetEvent):void
{
if (event.asset.assetType == AssetType.MESH) {
sphere = event.asset as Mesh;
sphereMaterial = new TextureMaterial(txture);
sphere.material = sphereMaterial;
_view.scene.addChild(sphere);
sphere.x= -5000;
sphere.y=-800;
sphere.z=-9000
sphere.scale(6);
//To obtain bounds of the 3d file
Bounds.getMeshBounds(sphere);//Retrieve object bounds
var depth:Number = Bounds.depth;
var width:Number = Bounds.width;
var height:Number = Bounds.height;
trace("depth "+depth +" width "+width+" height "+height);
}
}
}
}
code:
package code {
import away3d.cameras.Camera3D;
import away3d.containers.View3D;
import away3d.events.LoaderEvent;
import away3d.utils.*;
import away3d.library.*;
import away3d.library.assets.*;
import away3d.events.AssetEvent;
import away3d.loaders.misc.AssetLoaderContext;
import away3d.loaders.parsers.*;
import flash.display.Sprite;
import flash.events.Event;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.net.URLRequest;
import away3d.entities.Mesh;
import away3d.textures.BitmapTexture;
import away3d.materials.TextureMaterial;
import away3d.tools.utils.Bounds;
import away3d.tools.helpers.MeshHelper;
import flash.display.BitmapData;
[SWF(width="1000", height="600", frameRate="60", backgroundColor="#000000")]
public class model extends Sprite {
private var _view:View3D;
private const WIDTH:Number = 1000;
private const HEIGHT:Number= 600;
private var sphere : Mesh;
private var txture : BitmapTexture = new BitmapTexture(new BitmapData(512, 512, false, 0xCC0000));
private var sphereMaterial : TextureMaterial;
public function model() {
// constructor code
super();
if (stage) initialize();
else addEventListener(Event.ADDED_TO_STAGE, initialize);
}
private function initialize(evt:Event = null):void
{
removeEventListener( Event.ADDED_TO_STAGE, initialize );
turnon();
}
private function turnon():void{
initStage();
initEngine();
setUp3DModel();
addEventListener( Event.ENTER_FRAME, enterframeHandler );
}
private function initStage():void {
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.frameRate = 60;
}
private function initEngine():void
{
_view = new View3D();
_view.backgroundColor = 0x333333;
_view.width = WIDTH;
_view.height = HEIGHT;
_view.antiAlias = 4;
_view.camera.lens.far = 15000;
_view.addSourceURL( "srcview/index.html" );
_view.forceMouseMove = true;
_view.camera.x=-5000.76;
_view.camera.y = -700;
_view.camera.z =-10026.991;
_view.camera.rotationX=4.5 ;
addChild( _view );
}
private function enterframeHandler( event:Event ):void {
update();
}
private function update():void {
_view.render();
}
private function setUp3DModel():void{
//With AssetLibrary
AssetLibrary.enableParser(Max3DSParser);/*See for the rest of parsers http://away3d.com/livedocs/away3d/4.0/away3d/loaders/parsers/package-detail.html*/
AssetLibrary.addEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete);
AssetLibrary.load(new URLRequest("embeds/Sphere.3ds"),new AssetLoaderContext(false));
// With Loader3D
var loader3d:Loader3D = new Loader3D(false);
var context:AssetLoaderContext = new AssetLoaderContext(false);
loader3d.addEventListener(AssetEvent.ASSET_COMPLETE, onAssetComplete, false, 0, true);
loader3d.addEventListener(LoaderEvent.RESOURCE_COMPLETE, onResourceComplete, false, 0, true);
loader3d.load(new URLRequest("embeds/Sphere.3ds"),context, null, new Max3DSParser());
}
private function onAssetComplete(event:AssetEvent):void
{
if (event.asset.assetType == AssetType.MESH) {
sphere = event.asset as Mesh;
sphereMaterial = new TextureMaterial(txture);
sphere.material = sphereMaterial;
_view.scene.addChild(sphere);
sphere.x= -5000;
sphere.y=-800;
sphere.z=-9000
sphere.scale(6);
//To obtain bounds of the 3d file
Bounds.getMeshBounds(sphere);//Retrieve object bounds
var depth:Number = Bounds.depth;
var width:Number = Bounds.width;
var height:Number = Bounds.height;
trace("depth "+depth +" width "+width+" height "+height);
}
}
}
}
No comments:
Post a Comment
Note: only a member of this blog may post a comment.