DisplacementMapFilterを使った水面ぽい画像表示

DisplacementMapFilterにパーリンノイズ画像を設定するよくあるサンプルです。

速度と変化量を設定して表示ボタンを押すと、左側にフィルタを適用した画像、右側にフィルタに使用している画像が表示されます。






やってることは、まずパーリンノイズのオクターブ毎に変化スピードを決めといて、フレーム毎にオフセットをそのぶん変化させてパーリンノイズ画像を作って、DisplacementMapFilterにセットするというカンジです。
以下が上記サンプルのActionScriptのソースです。
image_mcというのがフィルタを適用する元画像(ムービークリップ)です。


import flash.display.BitmapData;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.filters.DisplacementMapFilter;

// ノイズ関数の数
var octaveCnt:Number = 3;
// 乱数シード
var rndSeed:Number = Math.floor(Math.random() * 65535);
// マスク画像オフセット
var maskOffsetX:Number = image_mc._width + 10;
var maskOffsetY:Number = 0;
// パーリンノイズのオフセット値の配列
var offsetArray:Array = new Array();
// パーリンノイズの変化量の配列
var speedArray:Array = new Array();

// 変化スピード
var speed:Number;
// ゆがみの拡大率
var scale:Number;

// フィルター画像表示用ムービークリップ
var map_mc:MovieClip;
// パーリンノイズ画像
var perlinNoiseBitmap:BitmapData = new BitmapData(image_mc._width, image_mc._height);

// 表示ボタン
test_btn.onRelease = doInit;

// 初期表示
doInit();

// 表示の初期化をします。
function doInit() {
// 速度と変化量の設定
speed = Number(speed_txt.text);
scale = Number(var_txt.text);

// マップ用ムービークリップの設定
if (map_mc) {
map_mc.removeMovieClip();
}
map_mc = _root.createEmptyMovieClip("map_mc", _root.getNextHighestDepth());
map_mc._x = image_mc._x + maskOffsetX;
map_mc._y = image_mc._y + maskOffsetY;

// 変化方向の初期化
initOffsetArray();
}

// オフセット配列を変化速度配列の初期化
function initOffsetArray() {
// 関数の数だけ必要
for (var i:Number = 0; i < octaveCnt; i++) {
offsetArray[i] = new Point(0, 0);
// 乱数で変化する向きを決定
speedArray[i] = new Point(speed * (Math.floor(Math.random() * 2) == 0 ? -1 : 1),
speed * (Math.floor(Math.random() * 2) == 0 ? -1 : 1));
}
}

function onEnterFrame() {
// オフセット位置の変更
for (var i:Number = 0; i < octaveCnt; i++) {
offsetArray[i].x += speedArray[i].x;
offsetArray[i].y += speedArray[i].y;
}
// パーリンノイズ画像生成
perlinNoiseBitmap.perlinNoise(image_mc._width,
image_mc._height,
octaveCnt,
rndSeed,
false,
true,
1,
false,
offsetArray);
// 歪みフィルターを作成
var filter:DisplacementMapFilter
= new DisplacementMapFilter(perlinNoiseBitmap,
new Point(0, 0),
1,
1,
scale,
scale);
image_mc.filters = [filter];
// パーリンノイズ表示用ムービークリップに画像をセットアップ
map_mc.attachBitmap(perlinNoiseBitmap, 1);
}


2007/6/24このエントリのソースコードはFlash8でのものです。
Flash CS3で似たような処理をするものをFlash CS3で水面ぽい画像表示にエントリしました。

テーマ:Flash - ジャンル:コンピュータ

2007.03.10 | | Comments(15) | Trackback(0) | Flash/ActionScript

コメント

日額10万円保証

素敵な時間をくださるなら日額10万円以上の謝礼でも十分喜んでおられます

2008-08-01 金 17:17:34 | URL | エロ #t0u7/3A. [ 編集]

奇跡的にカワイイ美少女

ガチです!奇跡的少女と生SEX

2008-08-07 木 20:06:50 | URL | エロ #QA/MW0wU [ 編集]

高収入在宅バイト

愛あるメールをくださる方には日額30万円

2008-08-10 日 15:28:17 | URL | 在宅バイト #n3Jezd0k [ 編集]

会員制サービス

セレブ限定出張ホストサービス

2008-08-13 水 16:05:35 | URL | エロ #U6OV4.mc [ 編集]

幼女レイプの記憶

1●歳の真白なココロに刻まれたレイプの記憶

2008-08-14 木 14:04:10 | URL | 無料動画 #J8N0m4cc [ 編集]

愛人契約100万

一般男性との時間に憧れるちょっと勝気な彼女達

2008-08-19 火 13:03:47 | URL | 不倫 #lFcxmI42 [ 編集]

初めての援助交際

犯罪確定級の動画配信情報

2008-08-28 木 20:58:33 | URL | エロ #T5N..VCk [ 編集]

緊急告知

稀に見る高額交際お申し込み

2008-08-31 日 15:51:33 | URL | エロ #U.OP0Cco [ 編集]

モテ度診断

モテる度を採点中

2008-09-01 月 15:49:53 | URL | モテる #/Lk3Q3EI [ 編集]

カラダの関係には100万円

年収1億を超える女性様達

2008-09-02 火 15:11:04 | URL | 熟女 #6Sbij0U. [ 編集]

泥酔させたら乱交開始

彼氏のよりおっきーとの大絶叫

2008-09-04 木 13:35:36 | URL | 女子高生 #r70j5Z8E [ 編集]

恥ずかしい事が気持ちいい

新感覚な性感

2008-09-05 金 13:46:37 | URL | おまんこ #m5G0kfwg [ 編集]

一晩で10万円

ピュアな一面を持つセレブ女性様

2008-09-06 土 13:05:50 | URL | 不倫 #Ipz88ky. [ 編集]

お手軽在宅バイト

お家でいるだけで日給10万円

2008-09-07 日 13:26:55 | URL | 在宅バイト #5Q.aD8wk [ 編集]

性格診断アプリ

今だけ無料診断受付中

2008-09-08 月 15:05:50 | URL | パーティー #.GuasAZY [ 編集]

コメントの投稿


秘密にする

«  | HOME |  »

プロフィール

Author:HundredthMonkey
プログラマ。

ブロとも申請フォーム

この人とブロともになる

ブログ内検索

メールフォーム

名前:
メール:
件名:
本文: