<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks

    http://kevincao.com/2008/11/05/experiment02-earth-fire/
    主要演示了pv3d新版本的渲染層機制的一些知識點,和BitmapEffectLayer。以下是主要代碼:

    public function init3D() : void {
    camera.fov = 55;

    //設(shè)置一個空物體作為兩個球體的父對象
    dummy = new DisplayObject3D();

    //添加燈
    light = new PointLight3D();
    scene.addChild(light);

    //添加一個噪波作為貼圖
    var bitmap : BitmapData = new BitmapData(256, 256, false, 0);
    bitmap.perlinNoise(64, 64, 2, Math.random() * 3000, false, false, 7, true);

    //環(huán)境貼圖需要一個光源
    var mat : EnvMapMaterial = new EnvMapMaterial(light, bitmap);

    var s1 : Sphere = new Sphere(mat, 80, 8, 8);
    s1.x = 300;
    s1.z = -100;

    //使用地球圖片做紋理貼圖
    var s2 : Sphere = new Sphere(new BitmapMaterial(image.bitmapData), 120, 12, 12);
    s2.x = -400;
    s2.z = 100;

    //把球體添加到空物體中
    dummy.addChild(s1);
    dummy.addChild(s2);

    scene.addChild(dummy);

    //DisplayObject3D(簡稱do3d)的層次結(jié)構(gòu)和渲染對應(yīng)的結(jié)構(gòu)是分開的,接下來設(shè)置渲染的層次結(jié)構(gòu)
    //默認情況下do3d渲染到viewport.containerSprite中
    //containerSprite是一個ViewportBaseLayer對象,繼承自ViewportLayer,也是一個Sprite

    //BitmapEffectLayer原先是Effect分支里的功能,現(xiàn)在整合到Great White里面來了
    //把do3d渲染到BitmapEffectLayer可以添加一些Bitmap濾鏡效果
    var bfx : BitmapEffectLayer = new BitmapEffectLayer(viewport, 500, 500);
    //ViewportLayer對象必須用addLayer語句添加到containerSprite
    viewport.containerSprite.addLayer(bfx);

    //把球體加進bfx層,記住do3d的層次結(jié)構(gòu)和渲染對應(yīng)的圖層結(jié)構(gòu)是分開的
    //所以我們不能直接把dummy加進bfx層,這樣dummy的子對象是不被一同加入的
    bfx.addDisplayObject3D(s1);
    bfx.addDisplayObject3D(s2);

    //火焰效果很簡單,添加一個效果對象就可以了
    bfx.addEffect(new BitmapFireEffect(1, 1, 1, 1));

    //effects數(shù)組可以索引屬于圖層的效果對象
    bfx.effects[0].flameHeight = 1;

    //設(shè)置bitmap每幀的移動量
    bfx.setScroll(4, 3);

    //出于CPU占用考慮,一般不會用很大的位圖來生成效果。一種可用的做法是只把效果渲染到一塊較小的區(qū)域內(nèi)
    //BitmapEffectLayer.setTracking(do3d)用于讓圖層跟隨某個do3d在屏幕上的位置移動
    //但先要允許do3d自動計算自身的屏幕坐標。例如:
    //s1.autoCalcScreenCoords = true;
    //bfx.setTracking(s1);

    //添加遮罩層
    var msk : Sprite = new Sprite();
    msk.graphics.beginFill(0xFF0000);
    msk.graphics.drawCircle(0, 0, 250);
    msk.graphics.endFill();
    //containerSprite既然繼承自Sprite,那么自然可以用addChild來新增圖層
    viewport.containerSprite.addChild(msk);

    //現(xiàn)在在containerSprite下面有兩個圖層,我們可以設(shè)置遮罩
    bfx.mask = msk;

    //添加外邊框作為修飾
    var frame : Sprite = new Sprite();
    frame.graphics.lineStyle(10, 0×222222);
    frame.graphics.drawCircle(0, 0, 250);
    viewport.containerSprite.addChild(frame);

    addEventListener(Event.ENTER_FRAME, tick);
    }

    相關(guān)文章

    posted on 2008-12-06 23:39 seal 閱讀(776) 評論(0)  編輯  收藏 所屬分類: Flex+ActionScript
    主站蜘蛛池模板: 亚洲中文字幕无码中文| 三级网站免费观看| 亚洲毛片不卡av在线播放一区| gogo免费在线观看| 亚洲国产精品成人精品小说| 国产嫩草影院精品免费网址| 国产婷婷成人久久Av免费高清| 亚洲AV色吊丝无码| 亚洲色WWW成人永久网址| 在线视频免费观看爽爽爽| 久青草国产免费观看| 亚洲无人区视频大全| 亚洲宅男天堂在线观看无病毒| 在线观看成人免费视频不卡| 国产精品美女久久久免费 | 最近中文字幕免费完整| 亚洲AV无码XXX麻豆艾秋| 久久亚洲国产伦理| 免费大片在线观看网站| 91高清免费国产自产| 特级毛片aaaa免费观看| 中文字幕无码亚洲欧洲日韩| 亚洲精品无码乱码成人| 国产乱弄免费视频| 国产精品免费观看久久| 久久99青青精品免费观看| 免费无码AV一区二区| 在线综合亚洲中文精品| 亚洲av无码专区在线播放| 亚洲福利中文字幕在线网址| 成人免费AA片在线观看| 久久综合国产乱子伦精品免费| 人妻仑刮八A级毛片免费看| 中文字幕在线观看亚洲日韩| 亚洲天堂中文字幕| 国产∨亚洲V天堂无码久久久| 无码欧精品亚洲日韩一区夜夜嗨| 久久不见久久见中文字幕免费| 99视频免费播放| 日本卡1卡2卡三卡免费| 久久99精品免费一区二区|