Lua スクリプト for YMM4
YukkuriMovieMaker4 の映像エフェクト「Lua スクリプト」の公式ドキュメントです。 このエフェクトでは、Lua のコードで映像を毎フレーム加工できます。座標・回転・拡大率・不透明度の制御から、 ピクセル単位の画像処理、図形やテキストの生成、ほかのエフェクトの呼び出しまでを、1 つのスクリプト欄で行えます。
標準のスクリプトエンジンは LuaJIT で実行するネイティブレーンで、 決まった形のピクセル処理は CPU カーネルや GPU カーネルへ変換されます。 GPU カーネルは初回に CPU カーネルとの一致を検証したうえで自動選択します。 Lua 5.2 互換の MoonSharp はフォールバックとして使われます。 詳しくはエンジンと高速化を参照してください。
このドキュメントは、プラグインの実装そのものに基づいて記述しています。
変数・関数・定数の名前と挙動は、スクリプトエディタの入力補完に表示されるものと一致します。
このドキュメントの構成
- 導入と使い方 … エフェクトの追加方法と、エディタ・パラメータパネルの使い方を説明します。
- Lua の基礎 … 変数・型・制御構文・関数・テーブルなど、Lua 言語そのものを学べます。
- obj オブジェクト … 座標・回転・拡大率・不透明度など、描画を制御する中心のテーブルです。
- anim ライブラリ … イージング・波・ノイズ・色変換など、アニメーション用の関数をまとめています。
- ピクセル操作 … 画像を 1 ピクセルずつ読み書きする方法と注意点を説明します。
- サンプル集 … そのまま貼り付けて使えるスクリプトを集めています。
最小の例
エフェクトを追加した直後に入っている既定のスクリプトは、フェードインです。
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_rgb | anim |
| 他アイテムの参照・キャラクター名・セリフ | obj.getobject | obj の関数 |
| 音声波形・スペクトラムの取得 | obj.getaudio | obj の関数 |
| ピクセル操作 | obj.getpixel, obj.setpixel, obj.getpixeldata | ピクセル操作 |
| 画像加工(塗り・領域・畳み込み・拡大縮小) | obj.fill, obj.getpixelregion, obj.putpixelregion, obj.convolve, obj.resize | obj の関数 |
| 図形・テキスト・画像・動画・シーン・模様の読み込み | obj.load, obj.setfont | obj の関数 |
| 他エフェクトの適用・描画 | obj.effect, obj.brush, obj.draw, obj.drawpoly | obj の関数 |
| シーン・環境情報 | scene.width, ymm4.is_saving | scene / ymm4 |
| パラメータ UI の定義 | --track@, --check@, --color@, --dialog: | パラメータ指定子 |
| 高速化エンジンの選択 | --!native, --!cpu, --!gpu | エンジンと高速化 |