`
ioryioryzhan
  • 浏览: 154874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

papervision3d的第二的例子:得到一些默认值

阅读更多

做个例子看看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(); 	    
         }
           
     }  
}
 
分享到:
评论

相关推荐

    Papervision3D 教程打包下载

    2. **3D对象和场景**:在Papervision3D中,3D对象是由多个基本形状(如立方体、球体、平面等)构建的,这些形状可以通过组合和变换形成复杂的几何结构。场景(Scene)是所有3D对象的容器,可以包含多个层次(Layers...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

    总的来说,"Papervision3D-demo.rar"提供的7个实例源码是一份宝贵的教育资源,无论你是初学者还是经验丰富的开发者,都能从中获得关于Papervision3D及其在实际应用中的深刻理解。通过亲手实践,你将能够驾驭这个强大...

    Papervision3D.Essentials

    #### 二、Papervision3D的应用场景 - **交互式应用开发**: 创建具有强大动画效果和交互性的Papervision3D应用。 - **游戏开发**: 利用其强大的3D渲染能力开发高质量的Flash游戏。 - **视觉展示**: 制作吸引人的3D...

    PaperVision3D

    《PaperVision3D:探索Flash 3D编程的深度与广度》 PaperVision3D,作为一款基于Adobe Flash的3D图形库,是Flash AS3.0时代的一个重要里程碑,它为Web开发者提供了一个在二维舞台上构建三维场景的强大工具。...

    Papervision3D

    为了更好地理解这些概念,我们可以通过一个简单的实例来学习如何使用Papervision3D: 1. **准备工作**:首先需要下载Papervision3D的库文件并将其添加到项目中。原文推荐了一个名为“pv3d傻瓜包”的资源包,这个...

    papervision3d_868.swc

    1. Stage3D:PV3D利用Flash Player 11引入的Stage3D API,提供硬件加速的3D渲染能力。这极大地提高了3D图形的性能,使Web上的3D应用更加流畅。 2. 3D对象:PV3D的核心包括3D对象(如Box、Sphere、Plane等)和摄像机...

    papervision3D

    Papervision3D是基于Adobe Flash和Flex平台的一个强大的三维(3D)图形渲染引擎。这个技术允许开发者在Web浏览器中创建出丰富的、交互式的3D场景,为用户提供了一种全新的网页体验。该框架利用ActionScript 3.0语言...

    初识Papervision3D

    《初识Papervision3D》 在深入探讨Papervision3D之前,我们首先需要理解3D技术在Web开发中的应用。随着互联网技术的快速发展,网页体验已不再局限于二维平面,用户对交互性和视觉效果的需求日益增长。Papervision3D...

    Papervision3D的API

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

    Papervision3D中文翻译

    2. **Papervision3D架构**:理解Papervision3D的核心组件,如Scene、Camera、Material、Object3D等类的作用及其相互关系。 3. **渲染流程**:学习如何使用Renderers进行渲染,包括BasicRenderer、...

    Papervision3D.swc

    Papervision3D_2.0.869.swc

    《Papervision3D+Essentials》中文翻译

    《Papervision3D+Essentials》是一本专注于Papervision3D技术的权威指南,对于深入了解和掌握这个强大的3D图形库至关重要。Papervision3D(简称PV3D)是Flash平台上最早的3D渲染引擎之一,它为开发者提供了在Web...

    《Papervision3D_Essentials》中文翻译

    - **创建第一个Papervision3D应用程序**:通过构建一个简单的3D场景来引导读者熟悉Papervision3D的工作流程,了解如何在Flash中创建和渲染3D对象。 - **基本概念**:介绍3D场景中的关键元素,如相机、灯光、材质和...

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

    《PV3d Papervision3D API文档与全景案例解析》 Papervision3D(PV3D)是一款强大的开源3D图形引擎,专为Adobe Flash平台设计,支持ActionScript 3.0(AS3),是Flash AS3中实现3D效果的重要工具。在本文中,我们将...

    如何把Papervision3d物体加到 flex项目中(附 旋转圆球例子)

    在本文中,我们将深入探讨如何将Papervision3D对象整合到Flex项目中,以及如何实现一个旋转圆球的示例。Papervision3D是一个强大的开源库,用于在Adobe Flash Player环境中构建三维(3D)图形。而Flex则是一种基于...

    Papervision3D Essentials source code1

    《Papervision3D Essentials 》是一本深入讲解Papervision3D技术的专业书籍,而"source code1"则可能是指书中第一章至第四章的源代码实例。Papervision3D是一个用于Adobe Flash平台的开源三维(3D)图形引擎,它允许...

Global site tag (gtag.js) - Google Analytics