阳光VIP

少壮不努力,老大徒伤悲。平日弗用功,自到临期悔。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Sandy引擎学习笔记:颜色材质

Posted on 2012-02-16 20:46  阳光VIP  阅读(169)  评论(0编辑  收藏  举报

 

 

 

第二个问题:创建了一个立方体后,怎样为为这个立方体添加材质?

首先最简单的材质,我们会想到颜色,颜色是最容易理解。因此我们在这里应该学会如何为我们的物体添加材质。

  1. package 
  2. {
  3.     import flash.display.Sprite;
  4.     import flash.events.*;
  5.     import sandy.core.Scene3D;
  6.     import sandy.core.scenegraph.*;
  7.     import sandy.primitive.*;
  8.     import sandy.core.data.*;
  9.     import sandy.materials.*;
  10.     import sandy.materials.attributes.*;
  11.     public class My3D2 extends Sprite
  12.     {
  13.         private var scenne:Scene3D;
  14.         private var camera:Camera3D;
  15.         private var ranY:Number=0.5;
  16.         private var box:Box;
  17.         public function My3D2()
  18.         {
  19.             camera=new Camera3D(400,400);//设定摄影机大小和位置
  20.             camera.z=-300;
  21.             var root:Group=createScene();
  22.             scenne=new Scene3D("scene1",this,camera,root);//创建带摄像机的场景
  23.             addEventListener(Event.ENTER_FRAME,Run);
  24.         }
  25.         private function createScene():Group
  26.         {
  27.             var g:Group=new Group();
  28.             box=new Box("box",100,100,100);
  29.             var materialAttr:MaterialAttributes = new MaterialAttributes( 
  30.                                  new LineAttributes( 0.5, 0x2111BB, 0.4 ),
  31.                                  new LightAttributes( true, 0.1)
  32.                               );//创建材质属性,线性光,
  33.             var material:Material = new ColorMaterial( 0xFFCC33, 1, materialAttr );//创建颜色材质
  34.             material.lightingEnable = true;
  35.             var app:Appearance = new Appearance( material );//为物体创建材质表面
  36.             box.rotateX=10;
  37.             box.rotateY=0;
  38.             box.appearance = app;//指定材质表面
  39.             g.addChild(box);
  40.             return g;
  41.         }
  42.         private function Run(event:Event):void
  43.         {
  44.             scenne.render();
  45.             box.rotateX+=1;//让立方体会在x轴上旋转
  46.             box.rotateY+=1;//让立方体会在y轴上旋转
  47.         }
  48.     }
  49. }

 

说明:创建了立方体后,我们可以为我们的立方体添加材质或者指定立方体的颜色属性,这时候我们需要使用到显示颜色材质的类和函数,sandy为我们提供了一个类。

 

  1. var materialAttr:MaterialAttributes = new MaterialAttributes( 
  2.                                  new LineAttributes( 0.5, 0x2111BB, 0.4 ),
  3.                                  new LightAttributes( true, 0.1)
  4.                               );//创建材质属性,线性光,
  5.             var material:Material = new ColorMaterial( 0xFFCC33, 1, materialAttr );//创建颜色材质
  6.             material.lightingEnable = true;
  7.             var app:Appearance = new Appearance( material );//为物体创建材质表面

ColorMaterial( 0xFFCC33, 1, materialAttr );//创建颜色材质,

参数一,指定颜色, 透明度,材质属性,这个参数默认为null,我们为这个立方体制作一个可见光和线性光

 

ColorMaterial () constructor

 

 

 

//函数原型

public function ColorMaterial(p_nColor:uint = 0x00, p_nAlpha:Number = 1, p_oAttr:MaterialAttributes = null)

Creates a new ColorMaterial.

 

 

 

创建了颜色的属性,为了指定物体,这时候还要制作一个表面赋给立方体。

  var app:Appearance = new Appearance( material );//为物体创建材质表面

 

box.appearance = app;//指定材质表面,

 

最后场景渲染;

scenne.render();

这里就创造出一个具有颜色的立方体了