4 如何显示PV3D中的3D物体
如何显示PV3D中的3D物体在PV3D中有四大核心类,分别是: ?????????Scene3D场景类。所有3D物体的容器,要想在Flash中显示,就必须将3D物体添加到场景中。 ?????????Viewport3D窗口类。它规定了摄像机能拍摄的范围,超出这个范围的3D物体将不会显示。同时摄像机将拍摄的物体映射到窗口中。 ?????????Camera3D摄像机类。拍摄场景中的3D物体。 ?????????BasicRenderEngine基本渲染引擎类。将摄像机拍摄的物体显示在窗口中。 要在Flash中显示3D物体,就要使用这四个类。 我们主要关注一下Viewport3D类,它保存引擎将3D场景中的三维图像映射到Flash的二维平面的图像。相当于我们的显示器,我们经常看到3D游戏画面是三维的,但显示器是平面的,3D引擎的作用就是产生这个视觉效果。 也就是说场景中的3D物体将会被映射到窗口中。 下面为创建窗口代码: Viewport3D(vidth,height,resize,false); ?????????创建窗口有4个参数,前2个位指定窗口大小,为0时,默认为整个stage尺寸。 ?????????第3个参数为窗口大小改变时是否会重绘。 ?????????最后1个参数指示是否相应鼠标事件。 为了清楚的了解PV3D中的对象是如何在Flash中显示的,我们来看一段代码。 代码清单1 package { import flash.display.Sprite; import flash.events.Event; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.objects.primitives.Sphere; import org.papervision3d.render.BasicRenderEngine; import org.papervision3d.scenes.Scene3D; import org.papervision3d.view.Viewport3D; import flash.display.StageAlign; import flash.display.StageScaleMode; /** * ... * @author yl */ [SWF(width="640",height="480",backgroundColor="#FFFFFF")] public class Main extends Sprite { private var sphere:Sphere//定义一个球体 //定义四大核心类 private var scene:Scene3D; private var viewport:Viewport3D; private var camera:Camera3D; private var render:BasicRenderEngine; public function Main():void { if(stage) init(); else addEventListener(Event.ADDED_TO_STAGE,init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE,init); //entry point stage.scaleMode= StageScaleMode.NO_SCALE; stage.align= StageAlign.TOP_LEFT; scene= new Scene3D(); viewport= new Viewport3D(640,480); camera= new Camera3D(); render= new BasicRenderEngine(); sphere= new Sphere(null,320,12,8); //将生成的球体加载进场景,以便摄像机能拍摄到 scene.addChild(sphere); //由于PV3D中的物体都被映射到窗口,因此只需要将窗口加载进文档类即可 addChild(viewport); //将摄像机拍摄到场景中的物体映射到窗口中 render.renderScene(scene,camera,viewport); } } } 运行效果如下。 下面我们通过一幅图来了解PV3D中的3D物体是如何在Flash舞台显示的。 使用PV3D要使用4个核心类,摄像头通过窗口将场景中的3D物体(3D物体需要通过addChild方法加载进场景中)拍摄下来,渲染器将拍摄下来的3D物体转换为2D物体,并映射到窗口中。最后,将窗口加载到文档类(FD中为启动类)中显示。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 通过ajax调用HttpServlet来实现前后端数据交互
- 如何将cfnetwork和其他框架添加到您的项目中进行异步传输 –
- 数组 – 从索引范围Swift的新数组
- 最简单的打包发布Qt应用(Windows,Linux)
- React Native 轻松集成分享功能(iOS 篇)
- ruby-on-rails – 文章中的NoMethodError#show.undefined m
- jsoncpp用法(判断void* pData是否为json格式的字符串)
- [转帖]Oracle 使用sqlnet.ora/trigger限制/允许某IP或IP段访
- React Native之异常集中营(持续更新...)
- ruby – 无法运行RSpec(未初始化的常量User(NameError)