pv3d入门及贴图

http://dmh2002.com/post/67.html

  首先,PV3D的3D舞台需要一个容器,用来容纳整个3D舞台。 这个容器至少是Sprite类型的,因为Sprite是AS3或者说Flash9里,显示对象的最小单位,这也是我们的主类一定要继承自Sprite的原因,因为它需要被显示。
   // 创建3D舞台的容器
   _container = new Sprite();
   _container.x = 100;
   _container.y = 100;
  
 //将它显示出来
   addChild( _container );

   然后,需要一个3D舞台。
    // 创建3D舞台,并将容器_container 作为参数传入
    _scene = new MovieScene3D( _container );

   接着,我们需要在舞台上放一个摄像头,他代表我们的眼睛,他能看到的就是你看到的。
   // 创建摄像头
   _camera = new Camera3D();
   _camera.z = -500;
   _camera.zoom = 5;
 
   //把摄像头看到的显示出来
   _scene.renderCamera(_camera);

   现在我们需要有一个3D对象,把它显示出来我们才算成功。PV3D的所有3D对象都是继承自displayObject3D,就像Flash里的Sprite一样它是最小单位。
   考虑到我们程序的通用性,我们的显示对象使用displayObject3D类型,后面初始化时候你可以把它初始化成任意displayObject3D的子类型对象。
   光一个3D显示对象还是不够的,它需要有个“皮”,你才能看到它,所以,我们同时需要一个材质贴图 (至少需要一个,如果是立方体,就需要六个面的贴图)。
   PV3D中所有材质贴图的基类是MaterialObject3D,所以考虑到通用性…..我就不多说了。
   //黑色的线框材质
   _material = new WireframeMaterial( 0x000000) ;
   //弄个球玩玩
  
_displayObj = new Sphere( _material,  80 , 10 , 10 ) ;
   //把显示对象添加到舞台
   _scene.addChild ( _displayObj) ;
   //把摄像头看到的显示出来
   _scene.renderCamera ( _camera) ;

   现在我们要让球动起来。 PV3D主要是以帧为单位来控制变化,所以我们需要一个方法可以控制到每一帧。
   AS3中我们只要注册一个Event.ENTER_FRAME事件的监听程序就可以监听到每一帧开始的时刻。
   然后,我们可以在我们的监听函数里,做我们需要做的,比如计算,或着让显示对象移动旋转等。
   而PV3D要求每次舞台发生变化时都要显式的调用舞台对象的renderCamera,重新绘制,否则内容始终是不重绘的。
   //加入监听
   this.addEventListener(Event.ENTER_FRAME, OnEnterFrame);
   //监听执行方法
   private function OnEnterFrame(event:Event):void
   {               
        //让显示物体动起来
        _displayObj.rotationX += 5;
        _displayObj.rotationY += 5;
        //舞台更新显示
        _scene.renderCamera(_camera);       
    }

   显示效果:http://flex.unbe.cn/PV3D/Try06_ColorMaterial2/Main.swf

  
现在可以开始讲讲基本的材质贴图了。其实我们上面的程序就已用到了线框材质贴图。
  
除了线框材质外,PV3D还支持颜色材质,位图材质等,所有这些材质贴图的类都在org.papervision3d.materials 包里。
   试试位图文件材质,把new ColorMaterial(0xFFFF00);改成new BitmapFileMaterial(”texture.jpg”);
   这里的”texture.jpg”是我的贴图文件路径,你需要根据你的需要设置,记得这个路径是url格式,不是文件系统路径。
   显示效果:http://flex.unbe.cn/PV3D/Try06_ColorMaterial4/Main.swf

   dmh2002注:本文在原文基础上略有改变,如果需要以上代码的完整源文件,可参看
   Papervision3D入门-创建PV3D基本内置模型(球体,立方体,柱状体等)

   原文地址:http://www.unbe.cn/blog/?p=321

你可能感兴趣的:(Flex,Blog,Flash)