Lua スクリプト for YMM4

YukkuriMovieMaker4 の映像エフェクト「Lua スクリプト」の公式ドキュメントです。 このエフェクトでは、Lua のコードで映像を毎フレーム加工できます。座標・回転・拡大率・不透明度の制御から、 ピクセル単位の画像処理、図形やテキストの生成、ほかのエフェクトの呼び出しまでを、1 つのスクリプト欄で行えます。

標準のスクリプトエンジンは LuaJIT で実行するネイティブレーンで、 決まった形のピクセル処理は CPU カーネルや GPU カーネルへ変換されます。 GPU カーネルは初回に CPU カーネルとの一致を検証したうえで自動選択します。 Lua 5.2 互換の MoonSharp はフォールバックとして使われます。 詳しくはエンジンと高速化を参照してください。

このドキュメントは、プラグインの実装そのものに基づいて記述しています。 変数・関数・定数の名前と挙動は、スクリプトエディタの入力補完に表示されるものと一致します。

このドキュメントの構成

最小の例

エフェクトを追加した直後に入っている既定のスクリプトは、フェードインです。

obj.alpha = math.min(time * 255, 255)

obj.alpha に値を代入すると不透明度が変わります。time はアイテム先頭からの経過秒数です。 スクリプトはフレームごとに実行され、obj の値を書き換えると描画へ反映されます。

できることの全体像

分野主な API参照
座標・回転・拡大率・不透明度の制御obj.x, obj.rz, obj.zoom, obj.alpha ほかobj
時間・フレーム情報time, frame, obj.t, timelineframeグローバル変数
アニメーション補間・波・ノイズ・色anim.lerp, anim.ease_in_out, anim.noise, anim.hsv_to_rgbanim
他アイテムの参照・キャラクター名・セリフobj.getobjectobj の関数
音声波形・スペクトラムの取得obj.getaudioobj の関数
ピクセル操作obj.getpixel, obj.setpixel, obj.getpixeldataピクセル操作
画像加工(塗り・領域・畳み込み・拡大縮小)obj.fill, obj.getpixelregion, obj.putpixelregion, obj.convolve, obj.resizeobj の関数
図形・テキスト・画像・動画・シーン・模様の読み込みobj.load, obj.setfontobj の関数
他エフェクトの適用・描画obj.effect, obj.brush, obj.draw, obj.drawpolyobj の関数
シーン・環境情報scene.width, ymm4.is_savingscene / ymm4
パラメータ UI の定義--track@, --check@, --color@, --dialog:パラメータ指定子
高速化エンジンの選択--!native, --!cpu, --!gpuエンジンと高速化
導入と使い方 →