93のブロマガ

TA標準登場を使った小技 補足 と その他使用したエフェクトなど

2015/05/08 19:33 投稿

コメント:2

  • タグ:
  • AviUtl

この記事はさつきさんのスクリプトTA標準登場を使った小技集動画の補足です。

動画内で 「math.sinは 直径1の円周を~」と有りますが
どう考えても「半径」ですね!





◆ 初めての人向け コピペ用

色付きの部分に好きな数値をどうぞ。
(obj.index%2)*n --偶数文字のみ n
(1+obj.index%2)*n --奇数文字のみ n
※ %3、 %4 等にすれば鋸状の動きになります。


math.sin(math.pi/2*obj.index)*n -- n の 正負交互
math.cos(math.pi/2*obj.index)*n -- n の 正負交互 (一文字ズレ)
math.sin(math.pi/2*(obj.index+1))*n -- n の 正負交互 (一文字ズレ)
(obj.index%2-0.5)*2*n -- n の 正負交互
(-1)^(obj.index%2)*n -- n の 正負交互

((obj.index+1)%2-0.5)*2*n -- n の 正負交互 (一文字ズレ)


n * obj.index/10 --どんどん値が増える
n / obj.index/10 --どんどん値が減る
(obj.num-obj.index)/n --どんどん値が減る


(obj.index ==
0 and n) or 0 --指定文字のみ n
(obj.index ~= 0 and n) or 0 --指定文字以外 n
(obj.index <= 0 and n) or 100 --指定文字以上 n ,それ以外 100
(obj.index > 5 and n) or 100 --指定文字未満 n ,それ以外 100


rand(min,max,obj.index,0) --minからmaxまでランダム
rand(min,max,-obj.index-1,0) --minからmaxまでランダム
※ (seed値がマイナスだとレイヤー移動してもシードが変化しません)


n
*math.cos(rand(0,math.pi*2,obj.index,0))
n*math.sin(rand(0,math.pi*2,obj.index,1))
--出現方向角度を完全にランダムにしたい場合これをX,Y距離にセットで使います
--z軸はただのランダムで十分です

更に距離をランダムにするには n をランダムにする必要があるので
この場合は一旦スクリプト制御で変数を作っておいた方がいいです。

local n = rand(min,max,obj.index,0)
nX = n*math.cos(rand(0,math.pi*2,obj.index,0))
nY = n*math.sin(rand(0,math.pi*2,obj.index+1,0))
-- nX ,nY を x距離、y距離へ。


その他説明しきれていないTips

obj.alpha を借りる
TAに限らず透明度を変化させるスクリプトは全てobj.alpha と言う値を出力しています。
obj.alpha は (透明) ~ 1 (不透明) という扱いやすい範囲の値で、
これをスクリプト制御やダイアログの入力に使えば
TAと合わせて他のアニメーション効果やエフェクトも連動、という事も簡単に可能です。
単純に obj.alpha * 200 と入れるだけで
透明度に合わせて0~200に変化する値が獲得できます。
(1-obj.alpha) * 200 で簡単に動作反転出来るのも魅力です。

※オブジェクトの透明度トラックバーとAviUtl標準フィルタの「フェード」は
obj.alphaと言う値を出しませんのでご注意ください。
すべてのスクリプトが実行された後に掛かる特別仕様みたいです。

obj.h と obj.w
obj.h と obj.w はオブジェクト本体にある拡大率 obj.getvalue("zoom") の影響を受けますが
スクリプトによる拡大率obj.zoomに対しては無関係のようです。
純粋にオブジェクトのピクセルサイズを獲得する場合は関数obj.getpixelを引数なしで使います。
ただしこれはスクリプト制御を使わないと縦幅は獲得できません。
w,h = obj.getpixel() -- 受け取る変数が二つ必要なのでダイアログだと一つ目の戻り値wだけ
w = ({obj.getpixel()})[1] -- このようにすると任意の位置の引数が取れます
h = ({obj.getpixel()})[2]




□やたらとカラフルにする

  • スクリプト制御で単色化を使う
カラーパレットを用意しておけばスクリプト制御で好きな色をパターン化できます。
local color = {0x245a5c, 0x7a8b79, 0xa3947d, 0xd79d85, 0xd97969} -- 幾つでも可
local pat = obj.index%#color + 1
obj.effect("単色化","輝度を保持する",0,"強さ",100,"color",color[pat])

これで順番通りに着色可能です。

カラーパターンを順送りする場合は pat のindexに何か変化する値を加算すれば…
pat = ( obj.index + math.floor(obj.time) )%#color + 1


ランダムにする場合はこう。

pat = math.floor(rand(1,#color,obj.index,0))


時間でランダムに変えたい場合は
pat = math.floor(rand(1,#color,obj.index+math.floor(obj.time),0))


※ (obj.time) を (bpm/60*obj.time) にすれば bpm合わせ
obj.time の部分は変化する値であれば何でもいいのでobj.x等でも。

先程のobj.alphaを使う、を利用して
obj.effect("単色化","輝度を保持する",0,"強さ",100*obj.alpha,"color",color[pat])
にすればTAのフェードと合わせて色が付く、等も。



□追記□
上の書き方だと滑らかな変化にはなりませんので少し工夫します。
color に好きな色を、T の部分に好きな変数を入れておけば
グルグルとカラーパレットが
回転します。ちゃんと動くか心配ですが。

local color={0xff1c5c,0xff546e,0xd48b77,0xbab382,0xd6cc8b,
0xca0b38,0xd9781f,0xc9d105,0xa3cdc1,0x2183b1}
local T = obj.time/2

local COL = function(t ,col0 ,col1)
local a={RGB(col0)}
local b={RGB(col1)}
return RGB(a[1]+(b[1]-a[1])*t , a[2]+(b[2]-a[2])*t, a[3]+(b[3]-a[3])*t )
end

local C=#color
local d,t = math.modf(math.abs(T)*(C))
local c0 = math.floor((obj.index+d)%C+1)
local c1 = math.floor((obj.index+1+d)%C+1)
obj.effect("単色化","color",COL(t,color[c0],color[c1]),"輝度を保持する",0)


  • コロラマを使ってカラフルにする
動画内のカラフルな色はティムさんのT_Color_Module内の
簡易コロラマを多用しています。

コロラマは画像の明るさ(輝度?)をカラーパレットに置き換えるエフェクトで
画像の加工や多色グラデーション、単色カラーの入れ替え等様々な使い道があります。
また金属光沢表現をする場合の定番エフェクトです。



画像はサイクル数が1の場合です。黒→白の変化で丁度パレットが一周します。
サイクル数が2なら二週、と言う塩梅です。
極座標変換すると一周して繋がっているのが解りますね。
またFシフトを移動させるとパレットが回転し、対応する色がスライドします。
Fシフトは100進める毎に一周します。(サイクル数が1未満だと一周しません。)



Fシフトを移動することで明るさに対応するパレットをグルグルと回転させ、
滑らかに入れ替える
事が出来ます。パレットは最大6色まで持てます。
簡易なだけあってパレットは均等割りなので敢えて同じ色を複数並べて偏りを持たせて使う事も。

個別オブジェクト化した図形やテキストをカラフルにするのに最も簡単な方法は
トラックバーの Fシフト をランダム移動させてしまう方法です。
この時移動フレーム数を100000等大きな数字にしてしまえば
ほぼ固定値になります。
(alt+左クリックで移動フレーム変更)

またあらかじめ白いオブジェクトに黒で単色化をかけ、
単色化の強さをランダム移動してからコロラマを掛ける方法もあります。
これだとFシフトが自由になるので此方の方が使いやすいかも知れません。

どちらにしてもランダムを使うので順番通りのカラー並びにはなりません。
規則性を持たせるには少しだけスクリプトの改造が必要です。



コメント

支店チョ。
No.1 (2015/05/24 17:25)
いつもありがとうございます!!
動画,ぜひ広告したいと思ってるんですが(笑
93 (著者)
No.3 (2015/05/24 20:08)
ありがとうございます。間違った情報もあるかと思いますので心配ですが。
簡単な事でもスクリプトを少し知っているだけで表現の幅が大きく広がりますので
何か切っ掛けになって貰えればうれしいです。
コメントを書き込むにはログインしてください。

いまブロマガで人気の記事