首先利用记录一、二学到的基本结构新建一个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);
}}
}
FreeCamera3D 已经没有了。
刚学,不错,顶
净乱摘瞎贴,你用过吗!!扮聪明!!!
fuck you idiot - abuse my website...
Very usefull. Thanks! fuck you idiot - abuse my website...