2009年6月11日 星期四

Tutorial 02: 上色

重點API
sandy.materials.Appearance;
sandy.materials.attributes.LightAttributes;
sandy.materials.attributes.LineAttributes;
sandy.materials.attributes.MaterialAttributes;
sandy.materials.ColorMaterial;
sandy.materials.Material;

  1. package
  2. {
  3. import flash.display.Sprite;
  4. import flash.events.Event;
  5. import flash.filters.ColorMatrixFilter;
  6. import sandy.core.Scene3D;
  7. import sandy.core.scenegraph.Camera3D;
  8. import sandy.core.scenegraph.Group;
  9. import sandy.core.scenegraph.Sprite3D;
  10. import sandy.materials.Appearance;
  11. import sandy.materials.attributes.LightAttributes;
  12. import sandy.materials.attributes.LineAttributes;
  13. import sandy.materials.attributes.MaterialAttributes;
  14. import sandy.materials.ColorMaterial;
  15. import sandy.materials.Material;
  16. import sandy.primitive.Box;
  17. public class Example002 extends Sprite
  18. {
  19. // 宣告3D場景及攝影機
  20. private var scene:Scene3D;
  21. private var camera:Camera3D;
  22. public function Example002()
  23. {
  24. camera = new Camera3D(300, 300);
  25. camera.z = -400;
  26. var root:Group = createScene();
  27. scene = new Scene3D("scene", this, camera, root);
  28. addEventListener(Event.ENTER_FRAME, enterFrameHandler);
  29. }
  30. private function createScene():Group
  31. {
  32. var g:Group = new Group();
  33. var box:Box = new Box("box", 100, 100, 100);
  34. // 產生材質屬性 MaterialAttributes
  35. // MaterialAttributes 可以擁有多個參數
  36. // 但每個參數都必需實作IAttributes這個介面
  37. // 而在 Sandy3D中,已經有3個類別實作了這個介面:
  38. // LineAttributes - 線屬性,其參數分別為厚度、顏色及透明度
  39. // LightAttributes- 燈光屬性,其參數分別為是否套用亮度設定及亮度的大小
  40. // 其值介於`0 ~ 1
  41. var materalAttr:MaterialAttributes = new MaterialAttributes(
  42. new LineAttributes(0.5, 0x2111BB, 0.4),
  43. new LightAttributes(true, 0.1)
  44. );
  45. // 產生色彩材質,並設定其屬性
  46. // 其參數分別為顏色、透明度及材質屬性
  47. var material:Material = new ColorMaterial(0xFFCC33, 1, materalAttr);
  48. // 設定此材質是否受外來光線影響
  49. material.lightingEnable = true;
  50. // 產生顯示物件的外觀物件
  51. // 其參數為材質,但可設定正面材質與背面材質
  52. var app:Appearance = new Appearance(material);
  53. // 將外觀物件套用到顯示物件 box
  54. box.appearance = app;
  55. box.rotateX 30;
  56. box.rotateY = 30;
  57. g.addChild(box);
  58. return g;
  59. }
  60. private function enterFrameHandler(evt:Event):void
  61. {
  62. scene.render();
  63. }
  64. }
  65. }


產出:



程式碼出處:http://www.flashsandy.org/tutorials/3.0/sandy_cs3_tut02

沒有留言:

張貼留言