【 手順1 】オブジェクトを配置#
まず、
タイムライン上を右クリックして、
────────────────
メディアオブジェクトの追加 -> テキスト
────────────────
でテキストオブジェクトを配置する。
このテキストオブジェクトをモアレの本体として扱う。
使用するオブジェクトは図形などでもいいけど、
テキストオブジェクトは、
テキスト欄に「モアレ」などと入力しておくと、
タイムライン上でも [モアレ] と表示されるので、
あとで見ても分かりやすい。
【 手順2 】縞模様を描くスクリプト#
タイムラインで、
手順1で配置したテキストオブジェクトのすぐ下のレイヤーに、
────────────────
右クリック
-> メディアオブジェクトの追加
-> フィルタ効果の追加
-> スクリプト制御
────────────────
で [ スクリプト制御 ] を配置し、長さもそろえる。
これで、
この [ スクリプト制御 ] に記述したスクリプトが
テキストオブジェクトに反映されるようになる。
(※)
[ スクリプト制御 ] には、
1024 字未満のスクリプトしか記述できないため、
縞模様を描く [ スクリプト制御 ] と、
その縞模様を歪ませる [ スクリプト制御 ] に分けて記述する。
ここで配置した [ スクリプト制御 ] の設定ダイアログのスクリプト記入欄に、
まず、縞模様を描くスクリプトを記述する。
記述するスクリプトは以下の通り。
丸ごとコピーして貼り付ければいい。
--【 カスタム 】
local Dmin = 20;
local Dmax = 50;
local Vscale = 4;
local Vshift = 4;
local seed = 1;
--【 パラメータ 】
local sw, sh = obj.screen_w, obj.screen_h;
local hw, hh = math.ceil( sw/2 ), math.ceil( sh/2 );
local t = obj.time;
--【 波形 】
local wave = 1;
for i, n in pairs( { 2, 3, 5, 7 } ) do
wave = wave*math.cos( 2*math.pi*Vscale/10/n*( t + obj.rand( 0, 100, -1, i+seed )/100 ) );
end
wave = ( wave +1 )/2;
--【 描画 】
obj.setoption( "drawtarget", "tempbuffer", sw, sh );
for y=-hh, hh do
obj.load( "figure", "四角形", 0xffffff, 1 );
obj.drawpoly(
-hw, y, 0,
hw, y, 0,
hw, y+1, 0,
-hw, y+1, 0,
0, 0, 1, 0, 1, 1, 0, 1,
0.5*( 1+math.cos( 2*math.pi*( y+hh )/( Dmin+( Dmax-Dmin )*wave )-2*math.pi*Vshift*t ) )
);
end
obj.draw();
obj.copybuffer( "cache:sprite", "tmp" );
スクリプト冒頭の「カスタム」のところは、
各パラメータの数値を変更して縞模様をカスタムできるようになっており、
Dmin が縞の太さ、
Dmax が縞の太さの変動幅、
Vscale が縞の太さが変動する速さ、
Vslide が縞がスライド移動する速さ、
となっている。
seed は縞の太さが変動するパターンを変える乱数シードで、
この値( 1 以上の整数 )によって時間経過による変動のパターンが変わる。
それ以下のスクリプトコードは、
縞模様を描くための処理になっているので変更不可。
【 手順3 】縞模様を歪めるスクリプト#
手順2の [ スクリプト制御 ] のさらに1つ下のレイヤーに、
もう1つ [ スクリプト制御 ] を長さを揃えて配置する。
この [ スクリプト制御 ] には、
描画済みのスクリプトを歪ませるスクリプトを記述する。
記述するスクリプトは下記。
手順2と同様に、
丸ごと設定ダイアログの記入欄に貼り付ければいい。
--【 カスタム 】
local Vmod = 4;
local Amod = 320;
local Fmod = 0.2;
local seed = 2;
local chroma = 5;
local smooth = 150;
--【 パラメータ 】
local sw, sh = obj.screen_w, obj.screen_h;
local t = obj.time;
--【 変形マップ 】
obj.setoption( "drawtarget", "tempbuffer", sw, sh );
obj.load( "figure", "背景", 0xffffff );
obj.effect( "ノイズ", "変化速度", Vmod, "周期X", Fmod, "周期Y", Fmod, "seed゙", seed, "mode", 1 );
obj.draw();
--【 描画 】
obj.copybuffer( "obj", "cache:sprite" );
obj.effect( "色ずれ", "type", 4, "ずれ幅", chroma );
obj.effect( "ディスプレイスメントマップ", "param1", Amod, "ぼかし", smooth, "type", 0, "name", "*tempbuffer", "元のサイズに合わせる", 1 );
このスクリプトも、
冒頭の「カスタム」のところのパラメータ値を変更して、
歪みをカスタマイズできる。
Vmod は歪みパターンが変化する速さ、
Amod は歪みの大きさ、
Fmod は歪みの細かさ、
seed は歪みパターンの時間変化の乱数シード、
chroma は色ずれの大きさ、
smooth は歪みをスムージングする強さ。
【 手順4 】画像や動画に重ねる#
以上で、モアレパターンが描画される。
この、
モアレパターンを描画している [ テキストオブジェクト ] より上側のレイヤーに、
動画や画像を配置すると、
そのうえにモアレパターンが重ねて描画される。
そのままでは、
モアレパターンが濃すぎると思うので、
モアレ本体の [ テキストオブジェクト ] の設定ダイアログで、
[ 透明度 ] のスライダー値を 90 くらいに上げてみたり、
合成パターンを「オーバーレイ」や「陰影」などに変えたりして調整する。
合成パターンについては、
「乗算」や「オーバーレイ」や「陰影」にした場合は、
背景が真っ黒だとピクセル値がすべて 0 になってしまい描画されないので注意。