PV3D学习记录四(COLLADA模型的应用)

2009.03.05 作者: 小V - 4 评论
文章分类: Flash

首先利用记录一、二学到的基本结构新建一个as文件,并声明好引用包、四要素等。

接着是了解一下pv3d里模型的应用类。
1.Collada类:简便,但不支持骨骼等动画信息,适合导入静止的场景模型。

import org.papervision3d.objects.parsers.Collada; //引用的Collada包

private var carcollada:Collada;//声明Collada为carcollada

var carcollada=new Collada("模型.XML或dae");//导入外部模型文件
carcollada.addEventListener(FileLoadEvent.LOAD_COMPLETE, 完成后该怎么办的方法);

2.Dae类:声明多几步,读取慢一点,支持骨骼动画等,而且还在不断添加新的功能。

import org.papervision3d.objects.parsers.DAE;//引用的DAE包

private var cardae:DAE=new DAE(true);//声明DAE为cardae

cardae.load("模型.XML或dae");//导入外部模型文件

没接触过3d的话,可能会说那个外部模型哪里来的,模型要进3D软件里导出来如用:3DMAX, Maya等一些软件里。
安装好3DMAX(ColladaMax)或Maya(colladaMaya)还需要安装相应的插件,不然原本是不直接Collada这种dae文件的。
http://www.feelingsoftware.com/content/view/16/30/
插件嘛,到他们官方里下载,要注册。。。
安装也容易,直接安装完后,在3D软件里的选项找到插件并启动,就可以在导出的时候看到*.DAE了。(DAE其实就是一个xml文件,如果你问为什么有人用xml有人用dae其实是一样的。。。)

完整简单的dae应用

package {
import flash.display.Sprite;
import flash.events.Event;

import org.papervision3d.cameras.FreeCamera3D;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;

import org.papervision3d.events.FileLoadEvent;

import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.objects.parsers.Collada;

public class test01 extends Sprite {
private var viewport:Viewport3D;
private var renderer:BasicRenderEngine;
private var scene:Scene3D;
private var camera:FreeCamera3D;

private var plane:Plane;
private var car:Collada;

public function test01():void {

viewport=new Viewport3D(400,400);
renderer=new BasicRenderEngine  ;
scene=new Scene3D;
camera=new FreeCamera3D(2,200);
camera.y=1000;
camera.moveBackward(2000);

addChild(viewport);

plane=new Plane(new BitmapFileMaterial("map.jpg"),10000,10000,8,8);
plane.pitch(90);
scene.addChild(plane);

car=new Collada("car.XML",new MaterialsList({all:new BitmapFileMaterial("map_car.jpg")}));
car.addEventListener(FileLoadEvent.LOAD_COMPLETE,onloaded);

addEventListener(Event.ENTER_FRAME,process);
}
private function onloaded(evt:FileLoadEvent):void {
car.moveLeft(2000);
car.moveUp(50);
scene.addChild(car);
}
private function process(evt:Event):void {
if (car) {
car.rotationY+=4;
car.moveForward(120);
camera.lookAt(car);
}
renderer.renderScene(scene,camera,viewport);
}

}
}

相关文章

  1. Anonymous says:

    FreeCamera3D 已经没有了。

  2. 刚学,不错,顶

  3. 净乱摘瞎贴,你用过吗!!扮聪明!!!

  4. fuck you idiot - abuse my website...

    Very usefull. Thanks! fuck you idiot - abuse my website...