`
jy00314996
  • 浏览: 75195 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Papervision3D(PV3D)笔记&教程(3)-坐标系统

阅读更多

      记得上中学的时候学立体几何,老师提到过左手坐标系右手坐标系什么的,不过现在已经基本忘记了,从头再来吧。
 
  首先运行一段代码看看,这段代码的作用是创建颜色分别为红绿蓝的三条线,起点都为坐标原点,终点分别指向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的坐标系统烂熟于心,这可以让我们在以后的学习或开发中少走弯路。

分享到:
评论

相关推荐

    PV3d Papervision3d API文档+学习笔记+全景案例

    "papervision3d.rar"可能包含的是PV3D的基础教程、示例项目以及更全面的API文档。通过这些资源,开发者可以系统地学习PV3D的架构和工作原理,理解如何构建复杂的3D场景和交互。 全景案例,如"Ball360.zip",是PV3D...

    Papervision3D 教程打包下载

    这个教程集合提供了深入学习Papervision3D所需的知识,包括PV3D的基本概念、对象模型、渲染技术以及与Flex框架的集成。 1. **Papervision3D基础**:Papervision3D是Flash平台上的3D引擎,它允许开发者在网页和桌面...

    papervision3d 中的坐标(1)--坐标系

    本篇主要探讨的是PaperVision3D中的坐标系统,它是理解3D场景构建的基础。 首先,我们要明白在计算机图形学中,坐标系统是定义对象位置的关键。在2D环境中,我们通常使用笛卡尔坐标系,它由两条相互垂直的轴——X轴...

    《Papervision3D+Essentials》中文翻译

    Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web浏览器中构建三维互动体验的能力。这本书的中文翻译版本,对于国内的开发人员来说,无疑是一个学习PV3D技术的重要资源。 1. **...

    PV3D学习资料-----PV3D Essentials(汉语)

    2. **3D坐标系统**:PV3D使用右手坐标系统,理解X、Y、Z轴的关系对于构建3D模型至关重要。你将学习如何在3D空间中定位和旋转对象。 3. **几何体创建**:PV3D提供了多种预定义的几何体,如立方体、球体和圆柱体,你...

    papervision 3D-20-alpha-great-while

    ### Papervision 3D-20-alpha-great-while 关键知识点解析 #### 标题解析:“Papervision 3D-20-alpha-great-while” 此标题表明了文档是关于Papervision 3D的一个版本介绍,即2.0 Alpha Great While版本。...

    papervision3d_868.swc

    3. PV3D库:`papervision3d_868.swc`是PV3D的一个版本,其中包含了所有必要的3D组件和类。这个库文件可以直接在Flex项目中引用,为3D应用开发提供基础。 三、PV3D基本结构 1. Stage3D:PV3D利用Flash Player 11...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

    3. **Papervision3D扩展与应用** - **Papervision3D_bend**标签可能涉及到的是曲面变形技术,如波浪效果或曲面扭曲,这在创建复杂形状或动画时非常有用。 - **Papervision3D_mxml**标签则意味着这些示例可能使用了...

    Papervision3D.Essentials

    ### Papervision3D.Essentials - 关键知识点解析 #### 一、Papervision3D概述 - **定义**: Papervision3D是一种强大的实时3D引擎,专为Flash设计。它能够将外部创建的3D模型渲染成Flash内容,无需终端用户下载或...

    Papervision3D

    原文推荐了一个名为“pv3d傻瓜包”的资源包,这个包包含了Papervision3D的核心库文件和其他辅助工具。 2. **创建项目**:在Flash CS3或CS4中新建一个FLA文件,并将其命名为`test01.fla`。设置文件属性如下:帧频30...

    papervision3d 精髓

    《Papervision3D精髓》一书是针对初学者及有一定基础的开发者设计的,旨在教授如何使用Papervision3D(PV3D)创建具有惊人效果和强大动画功能的交互式3D应用程序。PV3D是一种开源的3D引擎,用于Adobe Flash平台,它...

    papervision3D

    描述中的“FLASH,FLEX最新PV3D帮助文档”意味着这个压缩包包含的是Papervision3D的最新版官方文档。这份文档可能是开发者学习和理解Papervision3D的关键资源,提供了详细的API参考、教程和示例代码,帮助开发者快速...

    PaperVision3D

    关于文件名列表中的"PaperVision3D",这可能是一个包含完整示例代码、文档或者教程的资源包。通常,这样的资源会帮助开发者快速上手,了解如何初始化场景、加载模型、设置动画以及处理用户交互等。开发者可以通过...

    Papervision3D的API

    Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握这个工具的核心概念和功能。 ...

    Papervision3D_1_5 Flash3D运行环境

    Papervision3D(简称PV3D)是一个强大的开源库,它为Adobe Flash平台提供了先进的3D图形渲染能力。在Flash3D的世界里,Papervision3D_1_5是一个里程碑式的版本,它使得Flash不再仅仅是一个2D动画工具,而是能够处理...

    Papervision3D Essentials 中文PDF及书中源码

    《Papervision3D Essentials》是一本深入探讨Papervision3D(PV3D)的权威指南,中文版的出现使得更多中国开发者能够掌握这个强大的三维渲染库。Papervision3D是一个用于Adobe Flex和Flash平台的开源项目,它为Web...

Global site tag (gtag.js) - Google Analytics