- 在线时间
- 197 小时
- 专家
- 0
- UID
- 262198
- 注册时间
- 2006-5-14
- 帖子
- 306
- 精华
- 0
- 积分
- 792
- 离线
- 1338 天
- 帖子
- 306
- 体力
- 752
- 威望
- 8
|
发表于 2007-3-19 06:08:14
|显示全部楼层
PaperVision3D(简称PV3D)是由Carlos Ulloa创建,后加入的人有John Grden,Ralph Hauwert.
John Grden可是大名鼎鼎啊(Red 5和Xray的作者).他用PaperVision3d写了个游戏,非常酷.
http://www.rockonflash.com/demos/pv3d/macworld/demo/as3/index.html
http://www.paperworld3d.com/demos/obstaclecourse/ObstacleCourse.html
我简单介绍一个简单的PV3D例子(见注释):
- package {
- import flash.display.Bitmap;
- import flash.display.BitmapData;
- import flash.display.Sprite;
- import flash.events.Event;
-
- import org.papervision3d.cameras.Camera3D;
- import org.papervision3d.core.proto.MaterialObject3D;
- import org.papervision3d.materials.*;
- import org.papervision3d.core.geom.Mesh3D;
- import org.papervision3d.objects.*;
- import org.papervision3d.scenes.Scene3D;
- [SWF(width='800',height='600',backgroundColor='0x000000',frameRate='60')]
- public class TestSphere extends Sprite
- {
- private var scene:Scene3D;
- private var camera:Camera3D;
- private var container:Sprite;
- private var sphere:Mesh3D;
- public function TestSphere()
- {
- // Setup Papervision3D
- setupPV3D();
- addEventListener(Event.ENTER_FRAME, render);
- }
- private function setupPV3D():void
- {
- // PV3D需要一个容器来包含所有需要渲染的3d物体.
- container = new Sprite();
- container.x = 400;
- container.y = 300;
- addChild(container);
-
- /**
- * 所有3d物体都要添加到scene中
- *Scene分为两种Scene3D和MovieScene3D.
- *Scene3D中,所有3d物体都直接绘制在container中.
- *MovieScene3D中,3d物体都直接绘制在物体自身的container中,所有这些container都在主容器(container)内.
- */
- scene = new Scene3D(container);
- camera = new Camera3D();
- //PV3D目前的材质类型有4中(线框贴图,颜色贴图,位图贴图,影片贴图)
- var wireframeMaterial:MaterialObject3D=new WireframeMaterial(0x0000ff,50);
- /**
- *PV3D中所有物体都继承自DisplayObject3D(包括Camera3D)
- *DisplayObject3D的一些属性和普通的MovieClip相似,见下面sphere.
- */
- sphere=new Sphere(wireframeMaterial,800);
- sphere.x=sphere.y=sphere.z=100;
- sphere.rotateX=sphere.rotateY=sphere.rotateZ=10;
- sphere.scaleX=sphere.scaleY=sphere.scaleZ=100;
- sphere.visible=true;
- //最后要把物体添加到场景中.用addChild,删除用removeChild.
- scene.addChild(sphere);
- }
- private function render(event:Event):void
- {
- sphere.rotationY += 3;
- sphere.rotationX = container.mouseY / 2;
- //调用它渲染整个场景
- scene.renderCamera(camera);
- }
- }
- }
复制代码
这样,第一个PV3D例子就出来了.
PV3D的优点: 渲染速度快,支持较大的屏幕尺寸.
PV3D的缺点: 伪3D,不能正确的透视,不能正确的裁剪
和PV3D刚好相反的是:伟大的SWFZ(改写自Irrlicht)
SWFZ_DEMO2
SWFZ的缺点: 渲染速度较慢(其实已经非常快了),支持较小的屏幕尺寸(由于BitmapData.setPixel()的限制).
SWFZ的优点: True 3D,正确的透视,正确的裁剪
我把Papervision3d的一些例子集中起来,大家可以学习一下.
可以从这里下载Papervision3d:http://svn1.cvsdude.com/osflash/papervision3d/
我也打包了一份.PV3D.rar
[ 本帖最后由 haxe 于 2007-3-24 20:47 编辑 ] |
-
总评分: 威望 + 2
查看全部评分
|