away3d学习笔记 转载「建议收藏」

away3d学习笔记 转载「建议收藏」away3d4.0学习(1)http://blog.sina.com.cn/s/blog_5f48de2f0101749q.html_away3d项目源码

http://abcdefgea.blog.163.com/blog/static/13278774120121155041956/

away3D_4.1.0_教程使用到的3D文件格式  

.3ds(3D Studio):只能导出模型文件和灯光,无法附带模型的uv,是一种比较初级的格式。

.obj(OBJ-Importer):常用格式,支持材质和贴图,支持uvw坐标。不支持动作

MD5:Doom3中使用的3D模型文件,模型的几何数据储存在*.md5mesh文件里,动画数据存储在*.md5anim文件里。支持骨骼动画,支持顶点蒙皮,使用四元数(一种可以用来旋转定位的数学模型)来定位方向。

.md2:战锤II引擎中使用的模型。

.ac3D、.dae、.awd

 

1. 通常支持骨骼动画的模型有:md2、md5、3ds、awd

2. awd是away3D的专有格式,可以通过away3D的模型编辑器preFab来导出生成。

away3D_4.1.0加载3D文件,通常都能获取Mesh,根据模型不同获取额外的数据

function onAssetComplete(e:AssetEvent):void{

    if(e.asset.assetType == AssetType.MESH){

    }else if(e.asset.assetType == AssetType.MATERIAL){

    }else if(e.asset.assetType == AssetType.ANIMATION_SET){

    } 

}

http://blog.sina.com.cn/s/blog_5f48de2f0101749q.html


away3d 4.0学习

要学away3d的话要先搭建环境,

要使用away3d,可以下载away3d的swc导入到项目里面用,
也可以将away3d的源码导入到项目里面使用。
前者的好处是编译快,
后者的好处是编译花时间,下载也花时间,但是后者对于调试帮助很大,你可以熟悉away3d的所有源码,所以我选择的是第二种。

两者都可以从away3d的官网www.away3d.com的download下载到,如果要下载away3d的历史版本的话,右边有一个release的选项,里面有所有版本的away3d资源供下载。

新建一个as项目或者flex项目,配置away3d后,就可以正是开始away3d编程了。

源码如下:

package
{
import away3d.containers.View3D;
import flash.display.Sprite;
import flash.events.Event;
[SWF(frameRate=30,width=1000,height=600)]
public class Awaytest extends Sprite
{
//away3d的窗户,View3D是awy3d于flash displaylist唯一的关联类
private var _view:View3D;
public function Awaytest()
{
//是否添加到舞台,添加到舞台后开始初始化的操作
if(stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init)
}
private function init(e:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
//初始化away3d视窗,设置背景色并添加到显示列表
_view = new View3D();
_view.backgroundColor = 0x0c0c0c;
addChild(_view)
addEventListener(Event.ENTER_FRAME, onEnter);
}
private function onEnter(e:Event):void
{
//每帧调用View3D的render方法渲染
_view.render();
trace(“rendering….”);
}
}
}

代码注释都在里面了。
debug运行之后如果console(控制台)有输出rendering…的话那么代表一切正常。

由于将要进行很多的例子操作,所以估计敲new View3D都要敲很多次,所以把所有例子里面公用的代码抽出来做成一个基类,顺带介绍一下AwayStats这个类,源码如下:


package template
{
import away3d.containers.View3D;
import away3d.debug.AwayStats;
import flash.display.Sprite;
import flash.events.Event;

public class AwayTemplate extends Sprite
{
protected var _view:View3D;
private var stats:AwayStats;
public function AwayTemplate()
{
if(stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init)
}
private function init(e:Event=null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
initView();
addEventListener(Event.ENTER_FRAME, onEnter);
}
protected function initView():void
{
_view = new View3D();
_view.backgroundColor = 0x0c0c0c;
addChild(_view)
stats = new AwayStats(_view);
addChild(stats);
}
protected function render():void
{
trace(“rendering….”);
}
private function onEnter(e:Event):void
{
_view.render();
render();
}
}
}

上面的内容主要是:
1 把view3D的初始化过程提取出来,写成protected方法,以备子类使用;
2 在enterframe里面加了一个render方法,以备例子里面用来渲染游戏里面的某些逻辑;
3 增加了AwayStats实例,用来监控away3d的内存使用,cpu占用还有面数,这个看了下源码,似乎有单例可以使用,记得注意的是构造器里面要传View3D实例,否则的话它就会不知道要监控哪一个View3D的Poly也就是面的使用,我今天就犯了这个错误。

如果一切正常的话,debug之后得到的结果将是如下:
away3d学习笔记 转载「建议收藏」

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注