Skip to content

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 27 Jun 16:31
· 4 commits to main since this release

v1.4.0 - Lua スクリプト for YMM4

AviUtl のアニメーション効果スクリプト(.anm 系)に対する部分互換層を追加した
リリースです。座標・拡縮・回転・不透明度の変形と乱数を用いる範囲について、追加の
記述変更なしで AviUtl 向けスクリプトを実行できるようになりました。


新機能

1. AviUtl スクリプトの部分互換

AviUtl のアニメーション効果スクリプトのうち、本プラグインの変形・ピクセルモデルへ
無理なく写像できる範囲を実行できる互換層を追加しました。スクリプトに AviUtl 固有の
記法が含まれない場合、この互換層は一切介入しないため、従来のスクリプトの挙動は
変わりません。

  • スクリプトヘッダの解釈: コメント形式のパラメータ宣言を解釈し、スクリプト本体が
    参照する変数を実行前に定義します。これまでは単なるコメントとして無視され、参照変数が
    nil になり実行できなかったスクリプトが動作するようになります。
    • --dialog:項目名,local 変数=既定値;… … 各項目の宣言部を本体の先頭へ展開します。
    • --color:0xRRGGBB … 変数 color を指定色で定義します。
    • --check0:項目名,既定値obj.check003)を既定値で定義します。
    • --param:任意のLua文 … 記述した Lua 文をそのまま本体の先頭へ展開します。
    • --track0:--track3: … 値は従来どおり obj.track0obj.track3 から参照します
      (ラベル・範囲・既定値の UI 反映は行いません)。
  • @ による複数セクション: 1 つのスクリプトに @名前 で複数の効果が定義されて
    いる場合、先頭のセクションのみを実行します。

2. obj.rand の追加

AviUtl 互換の決定論的な整数乱数 obj.rand(st, ed [, seed [, frame]]) を追加しました。
指定範囲 sted の整数を返し、seedframe が同じであれば常に同じ値を返します。
frame を省略すると現在のフレームを用います。従来エンジン(MoonSharp)と高速ランタイム
(LuaJIT)で同じ値を返すため、エンジンの自動振り分けによらず結果が一致します。


注意事項

  • 描画・フィルタ・ファイルアクセス系の関数(obj.load / obj.draw / obj.drawpoly /
    obj.effect / obj.copybuffer / obj.setoption / obj.setfontrequireio 等)は
    本体の描画パイプラインへの統合を要するため、この互換層では対象外です。これらを呼び出す
    スクリプトは意図どおりには動作しません。
  • --track0:--track3: のラベル・範囲・既定値はエフェクトパネルの UI へ反映されません。
    トラックバーの値は従来どおり Track0〜Track3 のスライダー値が使用されます。
  • エンジンに依存しない小数の乱数が必要な場合は、従来どおり anim.rand を使用してください。

内部実装

  • スクリプトを実行可能な Lua へ変換する前処理を追加し、MoonSharp・LuaJIT の両実行系へ
    一貫して適用しました。変換結果はソース単位でキャッシュし、毎フレームの再解析を避けています。
  • obj.rand の数値コアを C# と LuaJIT で同一アルゴリズムとして実装し、両者がビット単位で
    一致することを等価性テストで検証しています。
  • AviUtl 固有の記法を含まないスクリプトでは前処理がソースをそのまま返すため、既存スクリプト
    および既存の実行・キャッシュ経路に対する影響はありません。