zoukankan      html  css  js  c++  java
  • Away3D实例教程 贴图(EnviroBitmapMaterial)

    本篇包含内容:

    • 3D基本元素 - 圆环
    • 环境位图材质EnviroBitmapMaterial。

    转载请注明出处:nooon.cnblogs.com 

    本例会用到的图片:

    goldbackground            nooon 

    先看本例子最终效果:点击观看

    从例子里我们看到,圆环反射环境里的金色光泽,但你细心观察可以发现不是真的实时反射。

    再看完整代码(Flex):

       1:  package
       2:  {
       3:      import away3d.cameras.HoverCamera3D;
       4:      import away3d.containers.ObjectContainer3D;
       5:      import away3d.containers.View3D;
       6:      import away3d.core.math.Number3D;
       7:      import away3d.core.utils.Cast;
       8:      import away3d.materials.BitmapMaterial;
       9:      import away3d.materials.EnviroBitmapMaterial;
      10:      import away3d.primitives.Plane;
      11:      import away3d.primitives.Sphere;
      12:      import away3d.primitives.Torus;
      13:      
      14:      import flash.display.Sprite;
      15:      import flash.events.Event;
      16:      import flash.events.MouseEvent;
      17:          
      18:      [SWF(width="600", height="500", frameRate="60", backgroundColor="#FFFFFF")]
      19:      public class enviroBitmapMaterial extends Sprite
      20:      {
      21:          //定义 变量
      22:          private var view:View3D;
      23:          private var cam:HoverCamera3D;
      24:          
      25:          private var planeMaterial:BitmapMaterial;
      26:          private var torusMaterial:EnviroBitmapMaterial;        
      27:          private var plane:Plane;
      28:          private var group:ObjectContainer3D;
      29:          private var torus:Torus;
      30:          
      31:          private var mouseDown:Boolean;
      32:          private var lastMouseX:Number;
      33:          private var lastMouseY:Number;
      34:          private var lastPanangle:Number;
      35:          private var lastTiltangle:Number;
      36:          private var cameraSpeed:Number;
      37:          
      38:          //嵌入图片,goldbackground.jpg用于背景及环境图;adobe_ico.jpg    是圆环的皮肤    
      39:          [Embed(source="resources/goldbackground.jpg")] private var goldImage:Class;
      40:          [Embed(source="resources/nooon.jpg")] private var skinImage:Class;
      41:          
      42:          public function enviroBitmapMaterial()
      43:          {
      44:              //新建各贴图材质,备用。
      45:              createMaterial();            
      46:              //inital 3D
      47:              init3D();
      48:              //create 3D Scene
      49:              createScene();
      50:              //addLsitener
      51:              addEventListener(Event.ENTER_FRAME,update);
      52:              stage.addEventListener(MouseEvent.MOUSE_DOWN,m_down_h);    
      53:              stage.addEventListener(MouseEvent.MOUSE_UP,m_up_h);
      54:                          
      55:          }
      56:          private function createMaterial():void
      57:          {
      58:              //背景的贴图材质为    BitmapMaterial        
      59:              planeMaterial=new BitmapMaterial(Cast.bitmap(new goldImage()),{smooth:true, precision:5});
      60:              //圆环要反射环境,用EnviroBitmapMaterial
      61:              //EnviroBitmapMaterial构造函数EnviroColorMaterial(color:*, enviroMap:BitmapData, init:Object = null)
      62:              //第二个参数必须是BitmapData,用于设置反射环境图,本例与背景平面用同一张图goldBackground
      63:              torusMaterial=new EnviroBitmapMaterial(Cast.bitmap(new skinImage()),Cast.bitmap(new goldImage()));
      64:              //设置EnviroBitmapMaterial的反射系数,数值为0~1,自行设定数值大小看看效果。
      65:              torusMaterial.reflectiveness = 0.4;
      66:              
      67:              //在这里顺便设置下后面要用到的一个参数cameraSpeed,这个参数影响:拖动鼠标是整个场景旋转速度。
      68:              cameraSpeed=.3;            
      69:          };
      70:          private function init3D():void
      71:          {
      72:              cam  = new HoverCamera3D({focus:300});                        
      73:              cam.lookAt( new Number3D(0, 0, 0) );
      74:              cam.distance=900;
      75:              cam.panangle=cam.targetpanangle=30;
      76:              cam.tiltangle=cam.targettiltangle=15;
      77:              cam.mintiltangle=5;
      78:   
      79:              view = new View3D({camera:cam,x:300,y:250});
      80:              addChild(view);
      81:          };
      82:          private function createScene():void
      83:          {
      84:              group=new ObjectContainer3D();
      85:              //创建背景平面                
      86:              plane=new Plane({material:planeMaterial,250,height:250,segmentsW:8,segmentsH:8});    
      87:              //创建圆环
      88:              //radius:圆环总半径;tube:环的圆管半径
      89:              //所使用的材质为 torusMaterial,它是EnviroBitmapMaterial        
      90:              torus= new Torus({material:torusMaterial,radius:30,tube:20,segmentsR:15,segmentsT:12});
      91:              torus.y=55;
      92:   
      93:              view.scene.addChild(group);
      94:              
      95:              group.addChild(plane);
      96:              group.addChild(torus);
      97:          };
      98:          private function update(e:Event):void
      99:          {
     100:              if(mouseDown)
     101:              { 
     102:                  cam.targetpanangle=cameraSpeed*(stage.mouseX-lastMouseX)+lastPanangle;
     103:                  cam.targettiltangle=cameraSpeed*(stage.mouseY-lastMouseY)+lastTiltangle;               
     104:              };
     105:              torus.yaw(-1);
     106:              torus.pitch(-1);
     107:              torus.roll(-1);
     108:              cam.hover();
     109:              view.render();
     110:             
     111:          };
     112:          private function m_down_h(e:MouseEvent):void
     113:          {
     114:            mouseDown=true;
     115:            lastMouseX=stage.mouseX;
     116:            lastMouseY=stage.mouseY;
     117:            lastPanangle=cam.targetpanangle;
     118:            lastTiltangle=cam.targettiltangle;
     119:          };
     120:          private function m_up_h(e:MouseEvent):void
     121:          {            
     122:              mouseDown=false;
     123:          };
     124:          
     125:      }
     126:  }
  • 相关阅读:
    应用wordpress
    php引入fckeditor编辑工具
    php_bu
    AJAX回调函数
    AJAX 输入框后写提示
    收集几个不错的最新win10系统64位和32位系统Ghost版下载
    曝光最新WIN10系统32位,64位系统ghost版
    微软本月将推Win10 望打破Win8所带来差评影响
    最新官方WIN10系统32位,64位系统ghost版下载
    记一次苦逼的SQL查询优化
  • 原文地址:https://www.cnblogs.com/nooon/p/1494081.html
Copyright © 2011-2022 走看看