记得上中学的时候学立体几何,老师提到过左手坐标系右手坐标系什么的,不过现在已经基本忘记了,从头再来吧。
首先运行一段代码看看,这段代码的作用是创建颜色分别为红绿蓝的三条线,起点都为坐标原点,终点分别指向XYZ轴的正方向,我们需要用到Line3D,Lines3D,LineMeterial以及Vertex3D这四个类,这四个类会在后面详细介绍,这里只要知道作用是什么就可以了。
Lines3D可以看作是Line3D的一个容器,Line3D本身不能作为3D显示对象被直接加入到Scene3D中,只能通过Lines3D的addLine(line:Line3D)方法先加入到Lines3D以后,再把Lines3D加入到Scene3D里呈现,Lines3D还有一个方法就是addNewLine(size:Number, x0:Number, y0:Number, z0:Number, x1:Number, y1:Number, z1:Number)这个方法允许Lines3D直接绘制出线段,如果初始化时候没有给Lines3D材质的话默认是红色的线,而且一个Lines3D用addNewLine方法绘制的线条只能有一种颜色,所以我们这里需要重新加入3条不同颜色的Line3D。
ActionScript代码:
package {
import flash.events.Event;
import org.papervision3d.core.geom.Lines3D;
import org.papervision3d.core.geom.renderables.Line3D;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.materials.special.LineMaterial;
import org.papervision3d.view.BasicView;
[SWF(width="640",height="480",backgroundColor="#000000",frameRate="30")]
public class CoordinateSystem extends BasicView {
private var _lines:Lines3D;
private var _xAxis:Line3D;
private var _yAxis:Line3D;
private var _zAxis:Line3D;
public function CoordinateSystem() {
init();
}
private function init():void {
setupCoordinateSystem();
addEventListener(Event.ENTER_FRAME,onEnterFrame);
}
private function setupCoordinateSystem():void {
_lines=new Lines3D ;
scene.addChild(_lines);
var origin:Vertex3D=new Vertex3D ;
_xAxis=new Line3D(_lines,new LineMaterial(0xff0000),1,origin,new Vertex3D(200,0,0));
_lines.addLine(_xAxis);
_yAxis=new Line3D(_lines,new LineMaterial(0x00ff00),1,origin,new Vertex3D(0,200,0));
_lines.addLine(_yAxis);
_zAxis=new Line3D(_lines,new LineMaterial(0x0000ff),1,origin,new Vertex3D(0,0,200));
_lines.addLine(_zAxis);
}
private function onEnterFrame(event:Event=null):void {
_lines.rotationY+=1;
_lines.rotationX+=1;
singleRender();
if (Math.round(_lines.rotationX%360)==0&&Math.round(_lines.rotationY%360)==0) {
removeEventListener(Event.ENTER_FRAME,onEnterFrame);
trace("stoped!");
}
}
}
}
看效果图:
运行代码,我们可以看见三条线围绕原点在旋转,当旋转到初始位置的时候又停止,这样做是方便我们观看三条线的方向,停止后我们只能看到红绿两条线,蓝色的垂直于屏幕看不见了(这就是要先旋转的原因),红色的从原点向屏幕左边延伸(X轴向左),绿色的从原点向屏幕上方延伸(Y轴向上),蓝色的向屏幕的里面延伸(Z轴向内)。比划一下,呵呵,这好像是左手坐标系吧。我们发现这跟FLASH本身的坐标系统有点不同,FLASH的Y轴是向下是正方向的。
将PV3D的坐标系统烂熟于心,这可以让我们在以后的学习或开发中少走弯路。
分享到:
相关推荐
"papervision3d.rar"可能包含的是PV3D的基础教程、示例项目以及更全面的API文档。通过这些资源,开发者可以系统地学习PV3D的架构和工作原理,理解如何构建复杂的3D场景和交互。 全景案例,如"Ball360.zip",是PV3D...
这个教程集合提供了深入学习Papervision3D所需的知识,包括PV3D的基本概念、对象模型、渲染技术以及与Flex框架的集成。 1. **Papervision3D基础**:Papervision3D是Flash平台上的3D引擎,它允许开发者在网页和桌面...
本篇主要探讨的是PaperVision3D中的坐标系统,它是理解3D场景构建的基础。 首先,我们要明白在计算机图形学中,坐标系统是定义对象位置的关键。在2D环境中,我们通常使用笛卡尔坐标系,它由两条相互垂直的轴——X轴...
Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web浏览器中构建三维互动体验的能力。这本书的中文翻译版本,对于国内的开发人员来说,无疑是一个学习PV3D技术的重要资源。 1. **...
2. **3D坐标系统**:PV3D使用右手坐标系统,理解X、Y、Z轴的关系对于构建3D模型至关重要。你将学习如何在3D空间中定位和旋转对象。 3. **几何体创建**:PV3D提供了多种预定义的几何体,如立方体、球体和圆柱体,你...
### Papervision 3D-20-alpha-great-while 关键知识点解析 #### 标题解析:“Papervision 3D-20-alpha-great-while” 此标题表明了文档是关于Papervision 3D的一个版本介绍,即2.0 Alpha Great While版本。...
3. PV3D库:`papervision3d_868.swc`是PV3D的一个版本,其中包含了所有必要的3D组件和类。这个库文件可以直接在Flex项目中引用,为3D应用开发提供基础。 三、PV3D基本结构 1. Stage3D:PV3D利用Flash Player 11...
3. **Papervision3D扩展与应用** - **Papervision3D_bend**标签可能涉及到的是曲面变形技术,如波浪效果或曲面扭曲,这在创建复杂形状或动画时非常有用。 - **Papervision3D_mxml**标签则意味着这些示例可能使用了...
### Papervision3D.Essentials - 关键知识点解析 #### 一、Papervision3D概述 - **定义**: Papervision3D是一种强大的实时3D引擎,专为Flash设计。它能够将外部创建的3D模型渲染成Flash内容,无需终端用户下载或...
原文推荐了一个名为“pv3d傻瓜包”的资源包,这个包包含了Papervision3D的核心库文件和其他辅助工具。 2. **创建项目**:在Flash CS3或CS4中新建一个FLA文件,并将其命名为`test01.fla`。设置文件属性如下:帧频30...
《Papervision3D精髓》一书是针对初学者及有一定基础的开发者设计的,旨在教授如何使用Papervision3D(PV3D)创建具有惊人效果和强大动画功能的交互式3D应用程序。PV3D是一种开源的3D引擎,用于Adobe Flash平台,它...
描述中的“FLASH,FLEX最新PV3D帮助文档”意味着这个压缩包包含的是Papervision3D的最新版官方文档。这份文档可能是开发者学习和理解Papervision3D的关键资源,提供了详细的API参考、教程和示例代码,帮助开发者快速...
关于文件名列表中的"PaperVision3D",这可能是一个包含完整示例代码、文档或者教程的资源包。通常,这样的资源会帮助开发者快速上手,了解如何初始化场景、加载模型、设置动画以及处理用户交互等。开发者可以通过...
Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握这个工具的核心概念和功能。 ...
Papervision3D(简称PV3D)是一个强大的开源库,它为Adobe Flash平台提供了先进的3D图形渲染能力。在Flash3D的世界里,Papervision3D_1_5是一个里程碑式的版本,它使得Flash不再仅仅是一个2D动画工具,而是能够处理...
《Papervision3D Essentials》是一本深入探讨Papervision3D(PV3D)的权威指南,中文版的出现使得更多中国开发者能够掌握这个强大的三维渲染库。Papervision3D是一个用于Adobe Flex和Flash平台的开源项目,它为Web...