
我们开始写 Papervision3D 的代码前,我们需要知道更多一些 Papervision3D 面的 3D.接
下来的这部分会让你更明白所写的那些代码.这些概念跟 Papervision3D 用到的类有直接关系.本
章,将使用这些来完成第一个应用.我们所说的对象都是 3D 场景里活动的元素.让我们看一下这些
对象:
场景 Scene
Scene 是在 3d 空间由 3d 对象组成的一个整体.就如 flash 里有 3 个轴的舞台(stage)-x,y,z.
每个可视对象都可以添加到场景.如不添加到场景中就不会在出现在屏幕上.
摄影机 Camera
可以想象成一个真实的相机,它在 3d 空间中不断的记录场景的活动.摄影机确定了查看场景的
点.因为3d空间的相机不是可视对象,它不是场景的组成部分不必添加它.摄影机可以像真实的相机
一样缩放和聚焦.
3d空间的相机可以做更多的事.如,在3d中对象距离相机过近或过远时将剔除此对象防止它被
渲染.相机可以忽略某些在不可见区域的对象.这些都是出于性能考虑的.对象距离太远或处于相机
后面,不需来记录,这时会节省很多计算的资源.
观察口 Viewport
观察口是一个舞台上的sprite容器,输出相机记录下来的对象.对象介绍中,观察口好比相机的镜头.
镜头是我们放在 3d 场景上面的窗口.
我们可以缩小这个窗口则可以只看到 3d 场景的一小部分,放大一些就看的多一些.观察口如现实中
真实窗口一样—窗口越大看到的外面世界越大,它影响到我们究竟可以看到多少场景.
下面的图解包含了一个大的观察口,右侧是一个小而宽的观察口.黑边框画出了观察口区域.右
侧的图很好的说明了观察口如何影响我们所看到的物体.

3D对象
在 3d 空间中的图形被称为一个 3d 对象,在 Papervision3D 中叫 DisplayObject3D.可以将其想
象成一个更高级的可视化对象如 sprite 和 movieclip.不同的是 DisplayObject3D 有第三个轴,
我们可以让其绕 3 轴进行旋转.
材质 Material
材质是附着在对象表面上的结构.当对象没有附着材质时,它是不可见的.可以使用很多材质.如
一个简单的材质:颜色;高级的材质可能是:流(live stream).第四章会用到所有的材质.
渲染引擎Render engine
渲染引擎像一个滚动的相机.只要渲染引擎开始工作,它会输出相机记录下来的信息给观察口.
当停止渲染引擎时观察口不会有任何新的信息输出仅仅会看到最后的那张图像.渲染是计算机中最
繁重的任务,它需要重复计算你场景内部的对象并输出他们到观察口去.
左手定则笛卡尔坐标系
Flash,Papervision3D,都使用笛卡尔坐标系.在 Flash 中,一个规则的可视化对象可以通过设置
x,y 值改变其在舞台的位置.对象依靠 x,y 的值与舞台左上角的关系来确定位置.x 值越大对象越靠
右,y 值增大对象便向下移动.
Papervision3D 里面的坐标系工作一致,只有 2 点不同之处.
Flash 使用了笛卡尔坐标系的 2 个轴,而 Papervision3D 使用了 3 个轴
Papervision3D 里的y 轴与 Flash 里面的 y 轴相反.
在 Papervision3D 中,我们不但要设置可视化对象的 x,y 轴,还要设置其额外的轴,为了确定对
象的深度.第三轴称为 z轴.
在 Flash 中,依靠左上角的关系来摆放对象,这点是(0,0).称为中心点或原点.可想而
知,Papervision3D 中的原点是(0,0,0).

图中(+,-)的标志说明了坐标值相对于原点是增加还是减少.[注意]y 轴与 Flash2D 坐标系是相
反的.若准备将对象放置到屏幕的下方,需要给 y 轴更大的值.这是 2D 坐标的工作情况.上面的
图解说明了 Papervision3D 坐标系里的 y 轴情况.
(注:这样想 Flash 的坐标原点在屏幕的左上角,Papervision3D 的坐标原点在屏幕的左下角)
创建一个基础的 Papervision3D类
前面学习了基础场景的使用,和如何创建自定义类.现在我们要开始实践.
使用你顺手的工具.第一个应用我们将创建一个3D场景包含一个可绕y轴旋转的球体.球
体是 Papervision3D 内置的一个基本体.
基本文档类
首先,看一下定义了旋转球体应用结构的文档类.
package {
import flash.display.Sprite;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
public class FirstApplication extends Sprite
{
private var scene:Scene3D;
private var viewport:Viewport3D;
private var camera:Camera3D;
private var renderEngine:BasicRenderEngine;
private var sphere:Sphere;
public function FirstApplication()
{
scene = new Scene3D();
camera = new Camera3D();
sphere = new Sphere();
scene.addChild(sphere);
viewport = new Viewport3D();
addChild(viewport);
renderEngine = new BasicRenderEngine();
renderEngine.renderScene(scene,camera,viewport);
}
}
}
现在细说下,我们可以在 Flash,Flexbuilder,FlashBuilder 中建立一个新工程之后创建一个
名为 FirstApplication 的文档类.不要忘记在 FlexBuilder,FlashBuilder 中导入
Papervision3D 的代码.
此前,我们了解到要把渲染结果输出到屏幕上我们需要一个 场景,摄像机,观察口,有材质的 3d
对象,和一个渲染引擎.[注意]文档类需要继承 Sprite.之前我们需要将其引入.
import flash.display.Sprite;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.view.Viewport3D;
现在,引入完毕,我们开始定义变量.
private var scene:Scene3D;
private var viewport:Viewport3D;
private var camera:Camera3D;
private var renderEngine:BasicRenderEngine;
private var sphere:Sphere;
我们只是定义了变量,并没有赋初始值.我们在构造器中进行赋初值.
public function FirstApplication()
{
}
现在开始创建一个 3D场景.场景是必须的,是 3D 对象的载体.
scene = new Scene();
创建了一个无参的 Scene3D 类的实例.
接着,添加一个 Camera3D,跟创建场景一样容易.
camera = new Camera3D();
摄像机在创建时可以指定参数,现在使用默认值.只要场景中没有 3D 对象,场景和摄像机都很
少用到.本例用到了一个内置的球体.
sphere = new Sphere();
Camera和Sphere 都可以在创建时指定参数,若不指定则自动使用默认值.
现在我们的球体创建完毕,需要加入到场景中,否则摄像机无法观察到它.如同在 Flash 中添加
规则对象的步调一致,通过使用 addChild().
scene.addChild(sphere);
看起来很像,对吗?
现在我们拥有了一个场景,一个摄像机,和一个球体,现在我们需要建立好可以观察到 3D 场景
的窗口.我们需要定义观察口并将其加入到舞台以使其可见.
viewport = new Viewport3D();
addChild(viewport);
创建新观察口时,我们可以传递可选的参数,否则观察口将使用默认的参数.
现在距离完工只有一步之遥了.我们需要获取到我们滚动的摄像机.这是渲染引擎定义好
的,它将渲染场景并将拍到的图像发送至观察口.
renderEngine = new BasicRenderEngine();
renderEngine.renderScene(scene,camera,viewport);
现在用渲染场景指令来渲染场景.运行后会得到一下的图像:


- 大小: 30.3 KB

- 大小: 9.3 KB

- 大小: 12.7 KB

- 大小: 17 KB
分享到:
相关推荐
PV3D,全称为Papervision3D,是一个开源的Flash 3D图形渲染引擎,它允许开发者在Adobe Flash Player环境中构建复杂的三维交互式应用程序。PV3D为Web开发者提供了一个强大的工具,使他们能够利用Flash平台创建具有...
1. PV3D介绍:PV3D是一个开源的AS3库,它允许开发人员在Adobe Flash Player中创建复杂的3D场景和应用。它利用了Stage3D API,提供硬件加速的3D图形渲染,提高了性能和视觉效果。PV3D包含了一系列类和组件,如Camera...
1. **PV3D基础**:首先,你需要了解PV3D的基本架构,包括渲染器、摄像机、场景、对象和材质等基本元素。PV3D使用ActionScript 3作为编程语言,因此熟悉AS3语法是必要的。 2. **3D坐标系统**:PV3D使用右手坐标系统...
**PV3D中文手册**是针对PV3D(Pervasive 3D)技术的一份详细文档,旨在帮助用户理解并有效地使用这个强大的3D图形编程库。PV3D是基于ActionScript 3的,因此它与Adobe Flash Player和Adobe AIR平台紧密集成,允许...
"pv3d最新资源包"是一个集合了PV3D(Player3D)最新开发资源的压缩文件,这个包是在09版本的基础上进行了更新,确保所有内容都是最新的。PV3D是一种基于Adobe Flash Platform的3D图形编程库,它允许开发者在Flash ...
1. **PV3D库**:Papervision3D是AS3中的一个强大工具,它为开发人员提供了一个在Flash中创建3D图形的平台。PV3D允许开发者使用面向对象的编程方式来处理3D模型、纹理、光照和相机等元素,从而实现复杂的3D场景和动画...
《开源3D引擎PV3D在AS3.0中的应用详解》 PV3D,全称为Papervision3D,是一款基于ActionScript ...PV3D不仅是一个强大的工具,也是一个学习3D编程的优秀平台,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅。
PV3D(Papervision3D)是ActionScript 3(AS3)平台上的一个开源三维(3D)图形引擎,它为Flash开发者提供了在Web上创建复杂3D场景的能力。PV3D的出现极大地扩展了Flash的视觉表现力,使得游戏开发、互动媒体设计...
PV3D全称为Papervision3D,是一个基于Adobe Flash平台的开源三维(3D)图形库。这个技术允许开发者在网页上创建丰富的、交互式的3D场景,为用户提供一种超越传统2D体验的新颖视觉效果。PV3D在Flash Player的支持下...
PV3D,全称Panda3D,是一个开源的三维图形引擎,主要应用于游戏开发、模拟器、科学可视化等领域。这个“pv3d安装,简单运用的实例”压缩包提供了初学者入门PV3D的基本步骤和实践案例。下面将详细解释其中包含的知识...
在IT行业中,Adobe Flex是一种基于ActionScript和MXML的开源框架,主要用于构建富互联网应用程序...PV3D组件包是Flex开发者探索3D世界的一个宝贵资源,通过深入研究和实践,可以掌握在Flash中构建3D应用程序的技巧。
1. **渲染引擎**:PV3D使用一个基于OpenGL技术的渲染器,它将3D模型转换为2D像素,然后在Flash Player的舞台上显示。渲染引擎支持光照、纹理、深度缓冲等功能,使3D物体看起来更加真实。 2. **场景管理**:PV3D提供...
1. **场景(Scene)**:在PV3D中,所有的3D对象都位于一个或多个场景中。场景是3D世界的基础容器,包含了摄像机、光源、对象等元素。 2. **摄像机(Camera)**:摄像机决定了用户观察3D世界的视角。通过调整摄像机...
【PV3D实例—交互】是关于Papervision3D(PV3D)框架的一个实践教程,重点探讨了在3D环境中实现交互性。Papervision3D是一个流行的开源ActionScript 3库,用于在Adobe Flash平台上构建三维图形和应用程序。这个实例...
然后,你可以创建一个`Scene3D`对象作为3D场景的基础,接着可以添加`Camera3D`来控制视角,使用`View3D`来显示场景。接下来,可以创建`Object3D`实例代表3D模型,并通过`Material`和`Light`来调整视觉效果。最后,...
Papervision3D(PV3D)是Flex平台上的一个开源3D引擎,它为Adobe Flash和Flex应用程序提供了强大的3D图形渲染能力。在本文中,我们将深入探讨PV3D 1.5版本和1.7版本的源码,解析其核心概念,帮助开发者更好地理解和...
在标题和描述中,"pv3d开发工具as3 编写"表明这是一个使用AS3开发的PV3D工具集或框架,可能是为了简化和加速3D内容的创建。这样的工具可能包括类库、示例代码、调试工具、编辑器插件等,旨在帮助开发者更好地理解和...
【PV3D第一次接触】 PV3D,全称为Papervision3D,是一个开源的、基于ActionScript 3.0的三维图形渲染库,它允许开发者在Adobe Flash环境中创建富有交互性的三维(3D)应用程序。这个技术的出现极大地拓宽了Flash在...
pv3d开发包,想学pv3d的朋友一定要下的工具包