calendar

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
<< November 2019 >>

categories

archives

PV3D:Beta版の機能をいろいろ調べてみた(その2)

0
    前回に引き続きPV3D2.0Betaで触ってみた機能についてまとめてみたいと思います。
    (内容に誤りがある可能性があります、注意)

    BitmapFireEffect

    デモはこちら ソースはこちら
    Fireという名前の通り、DisplayObject3Dに炎がメラメラと燃えるようなEffectを付ける為のクラス。標準ではパラメータで炎の色を赤か青で選べるけど、オブジェクトの色によって炎の色も変わる模様。

    ブレンド・ブラーとうまく組み合わせれば、もっとリアルにできるんだろうけどなあ・・・

    ↓↓↓該当部分のコード抜粋↓↓↓
    var bfx:BitmapEffectLayer = new BitmapEffectLayer(viewport);
    var f:BitmapFireEffect = new BitmapFireEffect();
    f.fadeRate = 0.1; //色変化割合(小さい数字程細かく変化)
    f.flameSpread = 1; //?
    f.flameHeight = 0.5; //高さ
    f.distortion = 1; //ゆらぎ
    f.distortionScale = 1; //ゆらぎの波高さ
    f.smoke = 1; //黒い部分の度合
    f.blueFlame = true; //赤or青
    bfx.addEffect(f);

    viewport.containerSprite.addLayer(bfx);

    var s = new Sphere(new ColorMaterial(0xffffff));
    scene.addChild(s);
    bfx.addDisplayObject3D(s);

    コードとしては、BitmapEffectLayer(変数bfx)にaddEffectして、そのbfxをviewportとオブジェクトに適用する。



    BitmapPixelEffect

    デモはこちら ソースはこちら
    モザイクをかけるようにして、ピクセル値を粗く変化させるクラス。粗くするとその分パフォーマンスあがるのかと思ったら、普通に処理の分だけ重くなったw ラスタに適用するとまた違う結果が出るのかもしれませんが。

    ↓↓↓該当部分のコード↓↓↓
    var mat = new FlatShadeMaterial(light, 0xdddddd, 0x555555);
    var obj = new Sphere(mat);
    scene.addChild(obj);

    var bfx:BitmapEffectLayer = new BitmapEffectLayer(viewport);
    bfx.clearBeforeRender = true; //残像が残る為の回避
    var bpe:BitmapPixelateEffect = new BitmapPixelateEffect(0); //度合を指定
    bfx.addEffect(bpe); //モザイク
    viewport.containerSprite.addLayer(bfx);
    bfx.addDisplayObject3D(obj);

    基本的に使い方はBitmapFireMaterialと一緒。




    createViewportLayer

    デモはこちら ソースはこちら
    デモとしては地味ですが・・・この機能は結構多様することになりそう。
    オブジェクトにBlur、Alpha、BlendModeを設定する様にするためのメソッド。

    コードはこんな感じで
    var vpl:ViewportLayer = obj.createViewportLayer(viewport, true);
    vpl.filters = [new BlurFilter(8, 8, 4)];
    vpl.alpha = 0.5;
    vpl.blendMode = BlendMode.ADD;


    ちなみにuseOwnContainerをtrueにすれば、下記のように直接オブジェクトにエフェクト効果をかけることもできます。


    obj.useOwnContainer = true; //trueにすることでfilterやalphaの使用が可能
    obj.alpha = 0.5;
    obj.filters = [new BlurFilter(8, 8, 4)];
    obj.blendMode = BlendMode.ADD;


    デモのstatsViewで確認したところ、useOwnContainerよりもcreateViewportLayerの方が軽いっぽいので、とりあえずはこっち使ってみようかなと。

    コメント
    コメントする








       
    この記事のトラックバックURL
    トラックバック