無料動画編集ソフト「AviUtl」のWiki

lua.txtの内容

関数obj.effect([name,param1,value1,param2,value2,...])
解説指定のフィルタ効果を実行します。メディアオブジェクトのみ使用出来ます。
引数なしで呼ぶとスクリプト以降のフィルタ効果を実行します。
引数nameエフェクトの名前を指定します。
param1エフェクトのパラメータの名前を指定します。
value1エフェクトのパラメータの値を指定します。
zoom拡大率(1.0=等倍)
alpha不透明度(0.0=透明/1.0=不透明)
param?,value?の組み合わせは必要な分だけ指定できます。
※トラックバー、チェックボックス以外の設定のparam,valueは
オブジェクトファイルのエクスポート等で出力された時の名前や値になります。
※名称が変わるトラックバーはエクスポート等の出力での名前を参照して下さい。
※ディスプレイスメントマップの形状指定で"type"を0,"name"を"*tempbuffer"に
指定するとtempbufferを形状として読み込みます。
obj.effect("色調補正","明るさ",150,"色相",180)

解説

obj.effect関数は、現在objテーブルに読み込まれているオブジェクトに、フィルタ効果(エフェクト)を掛けます。
フィルタ効果は、例えば「ぼかし」や「色調補正」などが例に挙げられます。
この「objテーブルに読み込まれているオブジェクト」は、obj.load?関数で変更することが出来ます。

描画

obj.effect関数の引数は以下のように指定します。
obj.effect(フィルタ効果名, パラメータ名, 値)

例えば、色調補正を使ってコントラストを変更する場合は、以下のように指定します。
obj.effect("色調補正", "コントラスト", 150)

このパラメータ名とは、フィルタ効果を実際に追加したときに表示される「トラックバーの名前」のことです。
パラメータ名は正確に入力しなければなりませんので、「"コントラスト"」ではなく「"コントラスト"」と入力する必要があります。


なお、設定するパラメータは幾つでも大丈夫です。
--3個のパラメータを指定する例
obj.effect("色調補正", "コントラスト", 150, "明るさ", 50, "彩度", 80)

トラックバーではないパラメータの指定

例えば、「ノイズ」を表示してみるとこのような感じになっています。


この左下にある「合成モード」や「ノイズの種類」は、トラックバーではないパラメータとなります。
またトラックバーの中にも、設定によって名前が変化するものもあります(ディスプレイスメントマップの変形X、変形Yなど)。
これらのパラメータ名は、内部では表示名とは異なった名前が指定されています。
obj.effect関数で使用する場合は、このパラメータの正確な名前を調べる必要があります。

その方法の1つとして、「エイリアスを作成」するという方法があります。

タイムライン上で右クリックをシて、「エイリアスを作成」をクリックするとエイリアスが作成できます。
生成されたEXAファイルをテキストエディタで開くと、このような値になっています。
[vo]
length=51
[vo.0]
_name=ノイズ
強さ=100.0
速度X=0.0
速度Y=0.0
変化速度=0.0
周期X=1.00
周期Y=1.00
しきい値=0.0
type=0
mode=0
seed=0

この「_name」がフィルタ効果の名前です。
下の方にある「type」や「mode」のような値は、それぞれ「ノイズの種類」や「合成モード」となっています。
ですので、これらを変更する場合は、以下のように入力します。

--合成モード:輝度と乗算、ノイズの種類:Type3 に指定する場合
obj.effect("ノイズ", "type", 2, "mode", 1)

ディスプレイスメントマップに仮想バッファを使用する

obj.effect関数でディスプレイスメントマップを使用する際に、「マップの種類」に仮想バッファを使用することが出来ます。
パラメータ「name」に「*tempbuffer」、「type」に「0」を指定すると、仮想バッファが図形としてマッピングに使用されます。

--シーンを使用したときとは挙動が異なるので注意
obj.effect("ディスプレイスメントマップ", "name", "*tempbuffer", "type", 0)

以下が、この方法を用いたサンプルです。
obj.load("framebuffer")
obj.setoption("drawtarget","tempbuffer", obj.screen_w, obj.screen_h) --描画先を仮想バッファに設定
obj.draw() --仮想バッファに、ぼかした円を描画

obj.load("framebuffer") --フレームバッファを読み込む
obj.effect("ディスプレイスメントマップ",
   "type", 0,
   "name", "*tempbuffer",

   "サイズ", obj.screen_w,
   "param0", 500,  --変形X
   "param1", 500   --変形Y
)

obj.setoption("drawtarget","framebuffer") --描画先をフレームバッファに設定
obj.draw() --描画

コメントをかく


利用規約をご確認のうえご記入下さい

紹介掲示板

フリーエリア

ここに管理者がHTMLやJavascriptを記述することができます。
ここに貼るアイテムを思い付いた人は管理者までご連絡ください。

どなたでも編集できます