Posts filed in Flash


[Flash]TransformationPoint version 1.1.1

Flash CS3 でオブジェクトの変形点をごにょごにょする拡張機能「TransformationPoint」を更新しました。

TransformationPoint - Spark project
http://www.libspark.org/wiki/e_s_jp/TransformationPoint

 

回転と傾斜変形が適用されている場合での変形点の設定バグに対応。

完全にその部分のテストを忘れていて、回転/傾斜が適用されてる場合に変形点を移動すると、変形点がとんでもない場所に設定されるようになってました。

 

この更新でオブジェクトに回転が適用されている場合も変形点を設定できるようになりましたが、回転角度が-180,-135,-90,-45,0,45,90,135,180度の場合のみに限られます

傾斜が適用されている場合(回転角度が「—」となっている時)や、上記以外の回転角度の場合には、変形点の設定対象から外れます。

 

角度限定の理由は、変形に関するオブジェクトの値がMatrixで管理されているようで、どうしても変換時の誤差がでてしまうためです。

例えば、変形パネルで回転角度を「90度」としていても、JSFLでelement.rotationを取ると「89.99824523925781」となりますし、オブジェクトのXY座標だけを設定する場合でも、回転や傾斜が設定されているとそちらに影響がでてしまうような具合です。

 

ダウンロードはSpark projectで。

ダウンロード version 1.1.1

TransformationPoint.mxp
http://www.libspark.org/svn/mxp/TransformationPoint/trunk/FlashCS3/mxp/TransformationPoint.mxp
Flash CS3用です。
※インストールにはExtension Managerが必要です。

 

ソースリポジトリ

TransformationPoint ソース
http://www.libspark.org/svn/mxp/TransformationPoint/trunk/FlashCS3/src/

 

Related posts

[Flash]流体っぽいのを作ろうと思った(2)

[Flash]流体っぽいのを作ろうと思ったの解説。

下のサンプルでどんな DisplacementMapFilter で流体っぽい動きになってるか試しみて、ソースを見た方がわかると思います。

 

  • _canvasBmpData : BitmapData
    描画用のBitmapData。Bitmap化し、BlurFilterをかけてる。
  • 
    _canvasBmpData = new BitmapData(MAP_WIDTH, MAP_HEIGHT, false, 0x000000);
    var canvasBmp : Bitmap = new Bitmap(_canvasBmpData);
    canvasBmp.filters = [new BlurFilter(4, 4, 1)];
    

  • _mapBmpData : BitmapData
    描画用の _canvasBmpData に適用する DisplacementMapFilter (_displaceMapFilter) の mapBitmap。
    BlurFilterのかかった流体用マップ _fluidBmp が draw() される。(ので、結局 _fluidBmpと同じ見た目 )
  • 
    _displaceMapFilter = new DisplacementMapFilter();
    _displaceMapFilter.mapBitmap = _mapBmpData;
    

  • fluidMapBmpData : BitmapData
    流体用マップ( _fluidBmp )の元にする FluidMap クラスで計算した結果の BitmapData
    _fluidBmp 用の BitmapData となる。
  •  

     

    ドラッグすると FluidMap クラスで計算した結果を _fluidBmp として、DisplacementMapFilter の mapBitmap である _mapBmpData に draw() する。

    
    // FluidMap : update
    fluidMapBmpData = _fluidMap.updateMap();
    _fluidBmp.bitmapData = fluidMapBmpData;
    
    // update _mapBmpData
    _mapBmpData.draw(_fluidBmp, _fluidBmp.transform.matrix);
    

    DisplacementMapFilter の内容が変わったので _canvasBmpData に DisplacementMapFilter を繰り返し適用してやることで、描画が変化しつづける。(ことをEnterFrameでやってる。)

    
    //updateDisplaceMapFilter(_canvasBmpData, _displaceMapFilter);で以下の処理
    var sourceRect : Rectangle = _canvasBmpData.rect;
    var destPoint : Point = new Point(sourceRect.left, sourceRect.top);
    _canvasBmpData.applyFilter(_canvasBmpData, sourceRect, destPoint, _displaceMapFilter);
    

     

    FluidMap では縦横サイズとグリッドのサイズを指定して、各グリッドのFluid計算用のデータ FluidMapDataを2次元配列に格納する。

    例えば、300×300でグリッドのサイズを「10」としたら、30×30=900の各グリッドに対して、Fluidの計算をしてるわけ。仮にグリッド無しでsetPixelしようとすると90000の処理になっっちゃう。

    さらにその各グリッドの持つのXY方向のベクトル値を算出するために、隣接する6個のグリッドの値を使うのだけど、その取得にはまたその2次元配列を使うことになるわけで・・・。

    その計算をEnterFrameで行っているわけだから、処理も遅くなる。

     

    Fluidの計算自体は Glen Murphy氏のFluidコードのほぼそのまま。超省略な画像を置いておくので、これ見ながらソースを見た方が早いと思います。

    必要なのはX方向とY方向の移動量(xVelとyVel)。それをDisplacementMapの色設定に使って、グリッドのサイズでマップ用のBitmapDataを作ってあげる。(色のFadeOutは強制的に色の値を変えちゃってるけど)

    CalcPressure.as の「0.20」のところをGlen Murphy氏のFluidコードの通りに「0.25」にしてやると、波紋?な揺れが際立つよ。

     

    ソースは前回と同じ。

    ソース1:FluidSample.zip
    ソース2:FluidSample_param.zip

     

    Related posts

    [Flash]流体っぽいのを作ろうと思った

    流体っぽいのをProcessing.orgのLearingにあるGlen Murphy氏のFluidコードを参考に作ろうと思った。

     

    Fluid \ Learning \ Processing 1.0 (BETA)
    http://processing.org/learning/topics/fluid.html

    Glen Murphy氏のコードはbodytag.orgの「FLUID3」とか、Glen Murphy氏のページにもあるやつ。

    Glen Murphy氏のページのほうでは「Fluid3」のリンク先が「Smoke2」と入れ替わっちゃたりしていますけど。

     

    このProcessingのコードをほぼそのままASでやっているサンプルはPapervison3Dに関わってるRalph Hauwert氏のところでダウンロードできて試せます。

    若干コンパイルエラーがでますけど(voidがVoidだったりとか)、それを解消していけばすぐ動きました。

    Fluid Dynamics : AS3 Source Code.
    http://www.unitzeroone.com/blog/2005/10/25/fluid-dynamics-as3-source-code/

     

    最初は、正統に流体シミュレーションを調べてからなんてちょっと思ったけど、ナビエ-ストークス方程式を理解して・・・なんて、数学のミレニアム懸賞問題とか理解できるわけありません。

    高卒と同時に数学なんて忘れちゃって、四則演算以外の数学記号を見るだけでも嫌なのに。

    Fluid Simulation for Computer Animation
    http://www.cs.ubc.ca/~rbridson/fluidsimulation/

     


    ということで、Glen Murphy氏のProcessingコードをベースにDisplacementMapFilterを使う方法でやってみたのがこれ。

     

    一度クリックしてからドラッグするとFluidっぽい動きします。そして今回も例によって負荷高めなのです。一度始めると止める事はしません。ソースを置いとくので、ダウンロードしてから試した方が無難です。

    それと、Macの場合はFlashPlayer 10で見た方が良いはずです。FlashPlayer 9で作っていますが、FlashPlayer 10では描画速度が速くなってるし(Windows環境と比べてまともになった感じ)。

     

    内容の解説は[Flash]流体っぽいのを作ろうと思った(2)で。ソースは置いとく。

    ソース1:FluidSample.zip
    ソース2:FluidSample_param.zip

     

    Related posts

    [Flash]Flash CS3 変形基準点用の拡張機能を作った

    Flash CS3 でオブジェクトの変形基準点をごにょごにょする拡張機能。「Apply」ボタンで選択中オブジェクトの変形基準点を一括で位置指定する。

    オブジェクトの変形基準点を1個1個ダブルクリックしたり、シンボルの基準点を気にしたり、オブジェクトの端に吸着させて・・・の作業をあまり気にせずできるようになります。

    TransformationPoint

     

    2008/5/23追記:
    「変形基準点」のことをヘルプでみたら「変形点」って書いてあった。
    そもそも拡張機能の名前が「TransformationPoint」なんだから「変形点」が正しいわ。
    でも、自分は「変形の基準点」って認識。

     


     

    「CENTER」ではオブジェクトの真ん中を基準に変形基準点の位置を設定します。
    ( 0, 0 )でど真ん中、( -5, 10 )ならば、ど真ん中から左に5ピクセル、下に10ピクセル移動した位置となります。
    TransformationPoint CENTER


     

    「LEFT-TOP」はオブジェクトの左上が基準となり、「CENTER」と同じように変形基準点の位置を指定します。
    TransformationPoint LEFT-TOP

     

    さらに「LEFT-TOP」時の「Ratio」では、オブジェクトのタテヨコに対する比率で変形基準点を指定します。
    ( 0, 0 )が左上、( 0.5, 0.5 )が真ん中、( 1, 1 )で右下という感じ。
    TransformationPoint Ratio


     

    「Reset」 ボタンは変形基準点をダブルクリックした時の挙動。MCならばシンボルの基準点に変形基準点が合うやつ。
    TransformationPoint Reset


     

    そして、お年寄りにも優しくパネルの大きさに合わせて拡大する。
    TransformationPoint Big


     

    本当は、「選択中の各オブジェクトに対して一括設定する」モードと、「それら全体の選択枠に対して設定する」モードの2種類を切り替えできるようにしたかったけど、JSFLで「fl.getDocumentDOM().setTransformationPoint()」を複数選択状態で呼び出すと、Flashが落ちてしまうのでできなかった。

     

    Spark project に入れようと思っているのだが、その準備ができるまではここで。

    2008/5/23
    Spark Projectにコミットしました。
    TransformationPoint - Spark project
    http://www.libspark.org/wiki/e_s_jp/TransformationPoint

     

    ダウンロード

    2008/07/31 : Version 1.1.1に更新

    回転と傾斜変形が適用されている場合での変形点の設定バグに対応。
    回転角度が-180,-135,-90,-45,0,45,90,135,180度の場合のみ変形点を設定します。

     

    TransformationPoint.mxp 1.1.1
    http://www.libspark.org/svn/mxp/TransformationPoint/trunk/FlashCS3/mxp/TransformationPoint.mxp
    Flash CS3用です。
    ※インストールにはExtension Managerが必要です。

    ソースリポジトリ

    TransformationPoint 1.1.1 ソース
    http://www.libspark.org/svn/mxp/TransformationPoint/trunk/FlashCS3/src/

    利用方法

    「ウィンドウ」メニュー > その他のパネル > TransformationPoint

     

    一応作った時のも

    TransformationPoint 1.0.0
    tp_mxp_1_0_0.zip
    Flash CS3用です。
    ※インストールにはExtension Managerが必要です。


    TransformationPoint 1.0.0 ソースダウンロード
    tp_src_1_0_0.zip

    Related posts

    [Flash]Processingの教材をFlashで(2)

    Processingのソースを参考にして、Flashで作るsketch練習の続き。

     

    教材は引き続き、パリで行われたらしいProcessing workshopのソース。
    ダウンロードしたProcessingのソース「01_Classes」>「_08_Arbre_Fractale」をFlashにした。

    Processing workshop in Paris - code sources | v3ga
    http://v3ga.net/blog/2008/04/processing-workshop-in-paris-code-sources/

     

    再帰でフラクタルを描くやつ。画面のXマウス位置に応じて、枝の角度が変わるようになってる。

    TreeFractal_AS3_p5

    Flashで作ったけど機能としてはProcessingと同じようにできた。
    Processingのやつは再帰的に線を描画していく中で、描画に対する指定が加算されていくから、特別に座標や角度の計算を気にする必要は無い。

    
    void dessine(float x, float y, float angle) {
     	pushMatrix();
     	translate(x,y,0);
    
     	rotate(angle);
     	line(0,0,0,-longueur);
    
     	dessineFilles(float(mouseX)/float(width)*PI/5);
     	popMatrix();
    }
    

     

    それを、まぁFlashならではということで、それぞれの線はまっすぐ上向きで同じだけど、Spriteの入れ子入れ子で回転角度が加算されているような構造にしてみた。Spriteの配置位置は(0,0)から親Spriteの線の長さ分だけ上方向にずらす感じ。

    TreeFractal_AS3_01

     

    EnterFrameMouseMoveでmouseXを取って角度が変わるけど、線の描画を毎度行ってるのではなく各Spriteの角度を変化させてる。このTree型のフラクタルの枝の角度が変わるのが楽しかったので、パラメータをいじれるようにしてみた。

    今回も負荷は高め。そしてコンテンツ開始と同時に再帰再帰でフラクタルを描くから、環境によっては15秒ルールで厳しいかも。

    
    private function draw( lineAngle:Number ) : void {
     	rotation = lineAngle;
     	//scaleX = lineAngle / 180 * 2;
     	drawChildren( lineAngle );
    }
    

    なんか回転だけじゃなく、適当にsacleXとかやってみたりしたら、全く予想もしない図柄になってしまった。

    TreeFractal_AS3_03

     

    ソース:TreeFractal_AS3.zip
    ソース:TreeFractal_AS3param.zip

     

    Related posts

    Pages: Prev 1 2 3 Next