做个例子看看pv3d的一些默认参数是什么,以及pv3d的坐标怎么样的。主要的方法,是采用trace()语句,以及改变一些参数对照效果。flash的效果是:一个球在中间瞎转,再让一个平面切着球也瞎转。
令人欣喜的是pv3d用的并不是屏幕坐标系,而是采用现实坐标系,不用做那些复杂的坐标转换了。其他的测试值已经写在代码里了。
package {
import flash.display.Sprite;
import flash.events.Event;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Plane;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
[SWF(width="400", height="400", backgroundColor="0xFC5A0A",frameRate='40')]
public class Main extends Sprite
{
private var basicView:BasicView;
private var planeDisplayObj:DisplayObject3D;
private var sphere:Sphere;
private var planeFront:Plane,planeBack:Plane;
private var materialForSphere:WireframeMaterial;
private var materialForPlane:WireframeMaterial;
private static const R:Number = 50;
public function Main()
{
init();
//添加侦听器
addEventListener( Event.ENTER_FRAME , onEnterFrame);
}
private function init():void{
basicView = new BasicView();
addChild( basicView );
//由于是采用的Sprite的addChild方法,所以采用的还是屏幕坐标系
//BasicView是Sprite的子类,默认时它的位置是(0,0)
//通过用trace输出可以看到,默认时zoom为2
trace("the zoom value of camera is "+basicView.camera.zoom);
basicView.camera.zoom = 20;
//用trace输出可以看到,默认时camera处于位置坐标为(0,0,-1000)
trace("the x of the camera is " + basicView.camera.x);
trace("the y of the camera is " + basicView.camera.y);
trace("the z of the camera is " + basicView.camera.z);
//basicView.camera.z = 0 ; //可以调整z,有走远走近的效果
//创建材质
materialForPlane = new WireframeMaterial(0x05234D);
materialForSphere = new WireframeMaterial(0x05234D);
//创建球体
sphere = new Sphere(materialForSphere , R , 16, 12);
basicView.scene.addChild( sphere );
//pv3d中使用的坐标系是与高数课本中的坐标系是一样的
//并没有采用屏幕坐标系,原点在正中点
//在没设置时新添加的组件坐标为(0,0,0)
//即球的重心处在原点上(不知道可不可以这样理解)
planeDisplayObj = new DisplayObject3D();
//创建平面
planeFront = new Plane( materialForPlane,140,140,12,12);
planeDisplayObj.addChild( planeFront );
planeBack = new Plane( materialForPlane,140,140,12,12);
planeBack.rotationY = 180;//要将背面旋转一个180度,这样背面才能被显示出来
planeDisplayObj.addChild( planeBack );
basicView.scene.addChild( planeDisplayObj );
//trace得到默认时各rotation为0,rotation采用的是角度,不是弧度
trace("the rotationX of the plane is " + planeDisplayObj.rotationX);
trace("the rotationY of the plane is " + planeDisplayObj.rotationY);
trace("the rotationZ of the plane is " + planeDisplayObj.rotationZ);
//显示出来
basicView.singleRender();
}
internal function onEnterFrame(event:Event):void{
sphere.rotationY += 5;
sphere.rotationX += 5; //旋转球
planeDisplayObj.rotationY += 5; //平面y轴旋转
//做成平面切着球旋转的效果,所以除了设置旋转角度,还要设置新的位置
var rotation:Number = planeDisplayObj.rotationY*3.1415/180;
planeDisplayObj.x = - R * Math.sin(rotation);
planeDisplayObj.z = - R - Math.cos(rotation);
basicView.singleRender();
}
}
}
分享到:
相关推荐
2. **3D对象和场景**:在Papervision3D中,3D对象是由多个基本形状(如立方体、球体、平面等)构建的,这些形状可以通过组合和变换形成复杂的几何结构。场景(Scene)是所有3D对象的容器,可以包含多个层次(Layers...
总的来说,"Papervision3D-demo.rar"提供的7个实例源码是一份宝贵的教育资源,无论你是初学者还是经验丰富的开发者,都能从中获得关于Papervision3D及其在实际应用中的深刻理解。通过亲手实践,你将能够驾驭这个强大...
#### 二、Papervision3D的应用场景 - **交互式应用开发**: 创建具有强大动画效果和交互性的Papervision3D应用。 - **游戏开发**: 利用其强大的3D渲染能力开发高质量的Flash游戏。 - **视觉展示**: 制作吸引人的3D...
《PaperVision3D:探索Flash 3D编程的深度与广度》 PaperVision3D,作为一款基于Adobe Flash的3D图形库,是Flash AS3.0时代的一个重要里程碑,它为Web开发者提供了一个在二维舞台上构建三维场景的强大工具。...
为了更好地理解这些概念,我们可以通过一个简单的实例来学习如何使用Papervision3D: 1. **准备工作**:首先需要下载Papervision3D的库文件并将其添加到项目中。原文推荐了一个名为“pv3d傻瓜包”的资源包,这个...
1. Stage3D:PV3D利用Flash Player 11引入的Stage3D API,提供硬件加速的3D渲染能力。这极大地提高了3D图形的性能,使Web上的3D应用更加流畅。 2. 3D对象:PV3D的核心包括3D对象(如Box、Sphere、Plane等)和摄像机...
Papervision3D是基于Adobe Flash和Flex平台的一个强大的三维(3D)图形渲染引擎。这个技术允许开发者在Web浏览器中创建出丰富的、交互式的3D场景,为用户提供了一种全新的网页体验。该框架利用ActionScript 3.0语言...
《初识Papervision3D》 在深入探讨Papervision3D之前,我们首先需要理解3D技术在Web开发中的应用。随着互联网技术的快速发展,网页体验已不再局限于二维平面,用户对交互性和视觉效果的需求日益增长。Papervision3D...
《Papervision3D API详解》 Papervision3D(PV3D)是Flash平台上的一款强大的3D图形库,它允许开发者在网页上创建丰富的、交互式的三维图形和应用程序。本篇文章将深入探讨Papervision3D的API,帮助读者理解并掌握...
2. **Papervision3D架构**:理解Papervision3D的核心组件,如Scene、Camera、Material、Object3D等类的作用及其相互关系。 3. **渲染流程**:学习如何使用Renderers进行渲染,包括BasicRenderer、...
Papervision3D_2.0.869.swc
《Papervision3D+Essentials》是一本专注于Papervision3D技术的权威指南,对于深入了解和掌握这个强大的3D图形库至关重要。Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web...
- **创建第一个Papervision3D应用程序**:通过构建一个简单的3D场景来引导读者熟悉Papervision3D的工作流程,了解如何在Flash中创建和渲染3D对象。 - **基本概念**:介绍3D场景中的关键元素,如相机、灯光、材质和...
《PV3d Papervision3D API文档与全景案例解析》 Papervision3D(PV3D)是一款强大的开源3D图形引擎,专为Adobe Flash平台设计,支持ActionScript 3.0(AS3),是Flash AS3中实现3D效果的重要工具。在本文中,我们将...
在本文中,我们将深入探讨如何将Papervision3D对象整合到Flex项目中,以及如何实现一个旋转圆球的示例。Papervision3D是一个强大的开源库,用于在Adobe Flash Player环境中构建三维(3D)图形。而Flex则是一种基于...
《Papervision3D Essentials 》是一本深入讲解Papervision3D技术的专业书籍,而"source code1"则可能是指书中第一章至第四章的源代码实例。Papervision3D是一个用于Adobe Flash平台的开源三维(3D)图形引擎,它允许...