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

papervision3d的第一个例子

阅读更多

    费了很大的力气才从googlecode上将pv3d 2.0给down下来。由于也是刚学pv3d,也看不出和以前的版本有什么改动,就从pv3d 2.0开始学吧。之前pv3d的程序主要的顺序是:创建容器-->创建舞台-->创建摄像头-->创建3D对象-->然后显示,现在好了,封装了一个类BasicView,里面直接将舞台,摄像头创建好了,看它的构造函数

public function BasicView(viewportWidth:Number=640, viewportHeight:Number = 320, scaleToStage:Boolean=true, interactive:Boolean = false, cameraType:String = "CAMERA3D")
{
		super();
			
		scene = new Scene3D();
		viewport = new Viewport3D(viewportWidth, viewportHeight, scaleToStage, interactive);
		addChild(viewport);
		renderer = new BasicRenderEngine();
			
		switch(cameraType){
			case Camera3D.TYPE:
				_camera = new Camera3D();
			break;
			case FreeCamera3D.TYPE:
				_camera = new FreeCamera3D();
			break;
			case FrustumCamera3D.TYPE:
				_camera = new FrustumCamera3D(viewport);
			break;
			default:
				_camera = new Camera3D();
			break;
		}
}

   可见,只要将camera的类型传进去,BasicView便会创建相应类型的摄像头。还有个ViewPort的东东,不知道怎么理解,先不管,用了再说。

 先做个立方的例子,六面分别是不同的图片,再让立方旋转,就这么简单。

 

代码直接也很简单:

package {
	
     import flash.display.Bitmap;
     import flash.display.Sprite;
     import flash.events.Event;
     
     import org.papervision3d.materials.BitmapMaterial;
     import org.papervision3d.materials.utils.MaterialsList;
     import org.papervision3d.objects.primitives.Cube;
     import org.papervision3d.view.BasicView;    
       
     [SWF(width="250", height="250", backgroundColor="0xFFFFFF",frameRate='40')]  
     public class Main extends Sprite   
     {  
         [Embed(source="pic1.jpg")]  
         public var Pic1:Class;      
              
         [Embed(source="pic2.jpg")]  
         public var Pic2:Class;  
         
         [Embed(source="pic3.jpg")]  
         public var Pic3:Class; 
         
         [Embed(source="pic4.jpg")]  
         public var Pic4:Class; 
         
         [Embed(source="pic5.jpg")]  
         public var Pic5:Class; 
         
         [Embed(source="pic6.jpg")]  
         public var Pic6:Class; 
       
       	 private var basicView:BasicView;
       	 private var cube:Cube;
       	 private var materialList:MaterialsList;       	 
  
         public function Main()  
         {  
             init();
         }  
           
         private function init():void  
         {  
           
           basicView = new BasicView(250,250,false,true);
           addChild( basicView);
           basicView.camera.zoom = 10;
           
           materialList = new MaterialsList();
           
           var pic1Bitmap:Bitmap = new Pic1() as Bitmap;
           var pic1Material:BitmapMaterial = new BitmapMaterial( pic1Bitmap.bitmapData ,true );
       	   pic1Material.interactive = true;
       	   materialList.addMaterial( pic1Material,"top" );
       	   
       	   var pic2Bitmap:Bitmap = new Pic2() as Bitmap;
           var pic2Material:BitmapMaterial = new BitmapMaterial( pic2Bitmap.bitmapData ,true );
       	   pic2Material.interactive = true;
       	   materialList.addMaterial( pic2Material,"bottom" );
       	   
       	   var pic3Bitmap:Bitmap = new Pic3() as Bitmap;
           var pic3Material:BitmapMaterial = new BitmapMaterial( pic3Bitmap.bitmapData ,true );
       	   pic3Material.interactive = true;
       	   materialList.addMaterial( pic3Material,"left" );
       	   
       	   var pic4Bitmap:Bitmap = new Pic4() as Bitmap;
           var pic4Material:BitmapMaterial = new BitmapMaterial( pic4Bitmap.bitmapData ,true );
       	   pic4Material.interactive = true;
       	   materialList.addMaterial( pic4Material ,"right");
       	   
       	   var pic5Bitmap:Bitmap = new Pic5() as Bitmap;
           var pic5Material:BitmapMaterial = new BitmapMaterial( pic5Bitmap.bitmapData ,true );
       	   pic5Material.interactive = true;
       	   materialList.addMaterial( pic5Material ,"front");
       	   
       	   var pic6Bitmap:Bitmap = new Pic6() as Bitmap;
           var pic6Material:BitmapMaterial = new BitmapMaterial( pic6Bitmap.bitmapData ,true );
       	   pic6Material.interactive = true;
       	   materialList.addMaterial( pic6Material ,"back");
       	   
       	   cube = new Cube (materialList , 140,140,140,2,2,2);
       	   basicView.scene.addChild(cube);
       	   
       	   addEventListener( Event.ENTER_FRAME , onEnterFrame);
       	 
         }  
         internal function onEnterFrame(event:Event):void{
         
         	cube.rotationX += 3;
         	cube.rotationY += 3;
         	basicView.singleRender();
         	
         }
           
     }  
}

  可见程序的步骤还是一样的,只是帮我们做了一下封装,用起来更方便了.

分享到:
评论
1 楼 qiyangyang09 2011-01-24  
_camera = new FreeCamera3D(); 
_camera = new FrustumCamera3D(viewport);  
请问我的是Papervision3D_2.1.932.swc怎么没有这两个类。
希望能吧代码和swc发到我的邮箱:qiyy@winnerinf.com
我刚开始学习还望指点。

相关推荐

    Papervision3D 教程打包下载

    Papervision3D提供了丰富的摄像机控制功能,包括平移、旋转和缩放,以实现第一人称视角或自由视角的交互。 6. **PV3D+Flex集成**:Flex是一个用于构建富互联网应用程序(RIA)的开发框架,与Papervision3D结合使用...

    Papervision3D.Essentials

    综上所述,《Papervision3D.Essentials》不仅是一本入门指南,更是一部详尽的技术手册,旨在帮助读者克服在使用Papervision3D过程中可能遇到的各种挑战,并通过实际案例加深对这项技术的理解和掌握。无论是对于初学...

    PaperVision3D

    PaperVision3D,作为一款基于Adobe Flash的3D图形库,是Flash AS3.0时代的一个重要里程碑,它为Web开发者提供了一个在二维舞台上构建三维场景的强大工具。PaperVision3D的核心价值在于,它将复杂的3D图形渲染技术...

    papervision3D

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

    Papervision3D

    Papervision3D是一个基于ActionScript的开源项目,目的在于实现更加炫丽美观、功能强大的Flash 3D Web应用程序。尤其是去年ActionScript 3发布了之后,ActionScript的效率得到了大幅度提升,基于此的Papervision3D...

    初识Papervision3D

    《初识Papervision3D》这篇博文和其中的POne.swf文件可能包含一个简单的3D示例,读者可以通过查看和运行这个文件更好地理解Papervision3D的工作原理。在学习过程中,结合源码分析和实际操作是掌握技术的关键步骤。 ...

    Papervision3D-demo.rar_DEMO_Papervision3D demo_Papervision3D mxm

    - **渲染引擎**:Papervision3D是一个强大的3D渲染引擎,它利用ActionScript 3.0进行编程,为Flash Player提供了实时3D渲染能力。 - **核心组件**:包括Camera、Scene、Scene3D、Loader、Material等,它们共同构成...

    papervision3d_868.swc

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

    Papervision3D.swc

    Papervision3D_2.0.869.swc

    Papervision3D的API

    1. **Building the Scene**: 通过创建对象、设置材质和光源,然后将它们添加到场景中,构建一个完整的3D场景。例如,`scene.addChild(camera); scene.addChild(light); scene.addChild(object);` 2. **Rendering**:...

    papervision3d和物理引擎Box2DFlash的一个超酷且好玩的DEMO

    Papervision3D是一个基于Adobe Flash平台的开源3D库,它允许开发者在网页上创建复杂的3D场景。而Box2DFlash则是一个将著名的2D物理引擎Box2D移植到Flash平台的版本,为游戏和交互应用提供了真实的物理模拟。当这两个...

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

    Papervision3D(PV3D)是一款强大的开源3D图形引擎,专为Adobe Flash平台设计,支持ActionScript 3.0(AS3),是Flash AS3中实现3D效果的重要工具。在本文中,我们将深入探讨PV3D的API文档、学习笔记以及全景案例,...

    《Papervision3D+Essentials》中文翻译

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

    Papervision3D Essentials 中文PDF及书中源码

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

    papervision3d 精髓

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

    Papervision3D_2.1.932.swc

    Papervision3D_2.1.932.swcPapervision3D_2.1.932.swcPapervision3D_2.1.932.swc

Global site tag (gtag.js) - Google Analytics