• Papervision3D初步


    Papervision3D简介

    Papervision3D(简称PV3D)是一个开源的遵循MIT协议的使用AS3代码写成的3D引擎,具体请参见http://blog.papervision3d.org/,百度百科上对PV3D有简要的介绍,关于PV3D的一些示例请参见http://blog.davr.org/pv3d-examples/http://mrdoob.com/,绚丽的三维效果绝会让你惊诧不已。

    Papervision3D中的几个基本概念

    Scene3D:简单的理解为3D场景。它实际上是一个“空”的三维空间(因为空所以也就不可见了),用于承载所有的可见元素(各种物体),这就好比宇宙中的某一个立体空间,地球以及地表所有的地物、生物都是这个空间中的元素。你希望渲染出来的所有元素,都必须先添加到Scene中。

    Viewport3D:视口。相当于一个位于视点与3D场景中间的“取景器”,透射视图下“取景器”后面可视区域内的元素才会被渲染出来,被“取景器”所遮挡的元素不参与渲染。

    Camera:相机。它是3D场景中的视点,可以在3D空间里任意移动相机的位置。想象一下上面所说的宇宙空间,相机就相当于你的“眼睛”。

    BasicRenderEngine:PV3D中另一个非常重要的概念,即使你已经建立了场景,视口,或者镜头,但你必须使用一个渲染引擎来渲染所有的东西。它通过相机和视口来决定渲染的元素,可以在任何时候使用渲染引擎来进行渲染工作。

    构建第一个PV3D应用

    BasicView是继承于flash.display.Sprite的一个子类,它提供了一个快速建立PV3D项目的模板,使用该类可以方便的创建场景、视口、相机等元素并进行渲染。在此借用BasicView来开发第一个PV3D应用。

    首先在官网上下载PV3D3.0.swc文件备用。

    在Flash Builder中新建一个ActionScript项目PV3D_01,将PV3D3.0.swc文件添包含到项目中。设置项目属性,在项目属性对话框中选择左侧ActionScript构建路径,然后选择右侧的库路径面板,为项目添加SWC文件,将PV3D3.0.swc添加进来。

    整个项目代码如下:

    package
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	import org.papervision3d.materials.BitmapFileMaterial;
    	import org.papervision3d.objects.primitives.Plane;
    	import org.papervision3d.view.BasicView;
    	
    	public class PV3D_01 extends BasicView
    	{
    		protected var plane:Plane;
    		protected var fileMaterial:BitmapFileMaterial;
    		
    		public function PV3D_01()
    		{
    			super();
    			
    			//利用图片创建一个双面材质
    			fileMaterial = new BitmapFileMaterial("Me.jpg");
    			fileMaterial.doubleSided = true;
    			
    			//使用fileMaterial创建一个plane
    			plane = new Plane(fileMaterial, 500, 500, 4, 4);
    			scene.addChild(plane);
    			
    			//开始渲染
    			startRendering();
    		}
    		
    		override protected function onRenderTick(event:Event = null):void 
    		{
    			super.onRenderTick(event);
    			
    			//旋转plane
    			plane.yaw(2);
    		}
    	}
    }

    千万不要忘记将创建的plane对象添加到场景中,确认代码无误后就可以测试一下了,显示结果是一个水平翻转的图片。

    悲催,我不知道怎么在这里直接展示ActionScript项目的动态效果,有知道的麻烦请告知一下。

  • 相关阅读:
    MySQL单实例、多实例服务脚本
    Shell之case结构条件句
    Shell之函数
    Shell之条件测试
    Shell脚本数字比较与四则运算
    Shell之分支结构
    Shell之变量的数值计算与输入
    Shell之变量子串与变量替换
    表单和框架
    HTML部分标签和代码
  • 原文地址:https://www.cnblogs.com/hans_gis/p/2475558.html
Copyright © 2020-2023  润新知