Away3D Lite:Basic_LoadModel

开启Debug模式:具体什么作用,尚不知

// Class for emmiting debuging messages, warnings and errors.
Debug.active = true;

 

引入外部文件创建材质:

[Embed(source="assets/fskingr.jpg")]
private var GreenPaint:Class;

//ferrari texture
[Embed(source="assets/fskin.jpg")]
private var RedPaint:Class;
		
//ferrari texture
[Embed(source="assets/fskiny.jpg")]
private var YellowPaint:Class;
		
//ferrari texture
[Embed(source="assets/fsking.jpg")]
private var GreyPaint:Class;

// Cast: Helper class for casting assets to usable objects
materialArray = [Cast.material(GreenPaint), Cast.material(RedPaint), Cast.material(YellowPaint), Cast.material(GreyPaint)];

 

创建一个ObjectContainer3D对象和Max3DS对象并赋值:

// Max3DS:File loader for the 3DS file format.
// 仅仅关联到该加载3DS文件,不能直接呈现到scene中去,也没有各种rotation动作
private var max3ds:Max3DS;

// Loader3D:Abstract loader class used as a placeholder for loading 3d content
// 3D内容的加载器
private var loader:Loader3D;

 // 3d object container node for other 3d objects in a scene.
// 真正展示到场景中的对象,loader加载成功后会对其赋值
private var model:ObjectContainer3D;

max3ds = new Max3DS();
max3ds.scaling = 100;
// Controls the automatic centering of geometry data in the model, improving culling and the accuracy of bounding dimension values.
// 优化,精确的属性,不设置为true的话,模型可能会出现异常,例如部件错位
max3ds.centerMeshes = true;
// Overrides all materials in the model.
// 模型所用到的材质
max3ds.material = materialArray[materialIndex];

loader = new Loader3D();
loader.addEventListener(Loader3DEvent.LOAD_SUCCESS, onSuccess);
// Loads and parses a 3d file format.
// 加载解析3DS文件,加载成功,调用onSuccess函数继续处理
loader.loadGeometry("assets/f360.3ds", max3ds);

// 加载模型到场景中去,onSuccess函数里调用scene.addChild(model);亦可
scene.addChild(loader);

private function onSuccess(event:Event):void
{
    // loader.handle:Returns a 3d object relating to the currently visible model.
    // 给model赋值
	model = loader.handle as ObjectContainer3D;
	
	model.rotationX = -90;
	
	model.addEventListener(MouseEvent3D.MOUSE_UP, onClickModel);
}
 

点击model改变材质:

model.materialLibrary.getMaterial("fskin").material = materialArray[materialIndex];
 

旋转模型的子模型(轮胎):

if (model) {
	for each (var object:Object3D in model.children) {
		if (object.name.indexOf("wheel") != -1)
			object.rotationX += 10;
	}
}
 

从这个example里就可以看出away3d同pv3d的不同之处了,away3d在加载使用外部模型的时候确实没有pv3d这么简便


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值