|
1 | | -# v1.9.3 - Lua スクリプト for YMM4 |
| 1 | +# v1.9.4 - Lua スクリプト for YMM4 |
2 | 2 |
|
3 | | -`obj.effect` が呼び出すエフェクトを、AviUtl/AviUtl2 のエフェクト名・パラメータ名から |
4 | | -YMM4 の映像エフェクトへ対応づける互換マップを追加したリリースです。対応関係は |
5 | | -宣言的な互換マップに集約し、`obj.effect` の解決をこのマップ駆動へ置き換えました。マップに |
6 | | -宣言されたエフェクトとパラメータだけが解決され、AviUtl と同じ尺度で渡した値は宣言された |
7 | | -変換を経て YMM4 のプロパティへ反映されます。 |
| 3 | +v1.9.3 で追加した AviUtl/AviUtl2 互換マップによる `obj.effect` の解決を見直したリリース |
| 4 | +です。v1.9.3 では `obj.effect` を互換マップ駆動へ置き換えた結果、互換マップに宣言の無い |
| 5 | +名前が解決されなくなっていました。本リリースでは解決を二段階方式にし、互換マップを優先しつつ、 |
| 6 | +宣言の無い名前は従来どおり YMM4 のエフェクト名・キーワードで直接解決するように戻しました。 |
| 7 | +あわせて互換マップの読み込みを例外安全にし、退避の経路を段階的に整理しました。 |
8 | 8 |
|
9 | 9 | --- |
10 | 10 |
|
11 | 11 | ## 新機能・機能改善 |
12 | 12 |
|
13 | | -### 1. AviUtl/AviUtl2 互換マップの追加 |
| 13 | +### 1. obj.effect の解決を二段階化 |
14 | 14 |
|
15 | | -AviUtl/AviUtl2 のエフェクト名・パラメータ名と、YMM4 の映像エフェクト・プロパティの |
16 | | -対応関係を宣言的な互換マップとして追加しました。 |
| 15 | +`obj.effect` のエフェクト解決を、互換マップを優先する二段階方式にしました。 |
17 | 16 |
|
18 | | -- マップは埋め込みリソースの XML として保持し、エフェクトごとに対象エンジン |
19 | | - (AviUtl・AviUtl2・両方)・対象エフェクト・パラメータの対応を宣言します。 |
20 | | -- パラメータには倍率とオフセットの変換を宣言でき、AviUtl と同じ尺度で渡した値を |
21 | | - YMM4 のプロパティへ正しく反映します。 |
22 | | -- 対応関係は YMM4 自身が AviUtl の `.exo` へ書き出す変換の逆として定義しており、 |
23 | | - 往復しても結果が一致します。 |
24 | | - |
25 | | -### 2. obj.effect の互換マップ駆動化 |
26 | | - |
27 | | -`obj.effect` のエフェクト解決を、互換マップ駆動へ置き換えました。 |
28 | | - |
29 | | -- マップに宣言されたエフェクトとパラメータだけを解決し、宣言の無いものは適用しません。 |
30 | | -- パラメータは AviUtl のパラメータ名で指定し、マップを介して YMM4 のプロパティへ |
31 | | - 変換します。 |
32 | | - |
33 | | -### 3. 対象エンジンの指定子 |
34 | | - |
35 | | -互換マップの対象エンジンを切り替える指定子を追加しました。 |
36 | | - |
37 | | -- `--!aviutl`(既定)/`--!aviutl2` で対象エンジンを選び、対象に一致するエントリ |
38 | | - だけを解決します。 |
| 17 | +- まず互換マップを参照し、AviUtl/AviUtl2 の名前として宣言したエフェクトは、 |
| 18 | + パラメータ名の対応と倍率・オフセットの変換を経て YMM4 のプロパティへ反映します。 |
| 19 | +- 互換マップに宣言の無い名前は、従来どおり YMM4 のエフェクト名・キーワードで直接解決し、 |
| 20 | + パラメータ名はプロパティ名・表示名と照合します。「ウェーブクリッピング」など YMM4・ |
| 21 | + コミュニティのエフェクトを名前で呼ぶ使い方が再び動作します。 |
39 | 22 |
|
40 | 23 | --- |
41 | 24 |
|
42 | 25 | ## 互換性・後方互換 |
43 | 26 |
|
44 | | -- `obj.effect` の解決方式が変わりました。従来はエフェクト名・キーワードとの照合と |
45 | | - プロパティ名の直接設定で適用していましたが、本リリースからは互換マップに宣言された |
46 | | - エフェクトとパラメータのみを解決します。マップに宣言の無いエフェクト・パラメータは |
47 | | - 適用されません。 |
48 | | -- 対象エフェクトが YMM4(およびコミュニティプラグイン)に読み込まれていない場合や、 |
49 | | - 適用に失敗した場合は、そのフレームでは元の映像をそのまま出力します(ログへ一度だけ |
50 | | - 警告を出力)。従来のエラー時挙動と同様です。 |
| 27 | +- v1.9.3 で互換マップに宣言の無い名前による `obj.effect` が解決されなくなっていた問題を |
| 28 | + 修正し、YMM4 のエフェクト名・キーワードによる直接呼び出しを従来どおりに戻しました。 |
| 29 | +- 解決は段階的に退避します。互換マップを読み込めない場合や、マップに宣言した対象 |
| 30 | + エフェクトが読み込まれていない場合は、その名前を YMM4 の名前として直接解決します。 |
| 31 | + 直接解決もできない場合や適用に失敗した場合は、そのフレームでは元の映像をそのまま |
| 32 | + 出力します(ログへ一度だけ警告を出力)。従来のエラー時挙動と同様です。 |
51 | 33 | - スクリプト言語・実行エンジン(MoonSharp / LuaJIT)・エディタの既存挙動は変わりません。 |
52 | 34 |
|
53 | 35 | --- |
54 | 36 |
|
55 | 37 | ## 内部実装 |
56 | 38 |
|
57 | | -- 互換マップは埋め込み XML リソースとして保持し、読み込みは .NET 標準の |
58 | | - `System.Xml.Linq` のみで行います。外部ライブラリの追加はありません。 |
59 | | -- マップの対象エフェクトは型名で解決し、`EffectFactories` から構築した型レジストリと |
60 | | - 突き合わせます。対象が読み込まれていない場合は解決せず、元の映像を出力します。 |
61 | | -- 互換マップは YMM4 の `.exo` 出力(`CreateExoVideoFilters`)の逆変換として構築し、 |
62 | | - パラメータ名・倍率・オフセットを宣言値として保持します。 |
63 | | -- 対象エンジンの指定子は `--!aviutl` / `--!aviutl2` を解析し、未指定時は `--!aviutl` |
64 | | - として扱います。 |
65 | | -- 互換マップの解決・変換・対象エンジン判定に対するテストを追加しました。 |
| 39 | +- 互換マップの読み込みを例外安全にし、リソースの欠損や XML の破損が起きても空のマップへ |
| 40 | + 退避します。互換マップの不備が `obj.effect` 全体を停止させることはなく、直接解決は |
| 41 | + そのまま機能します。 |
| 42 | +- 解決に用いる型名のレジストリと、エフェクト名・キーワードのレジストリは、 |
| 43 | + `EffectFactories` の一度の走査でまとめて構築します。マップの対象型が見つからない場合は |
| 44 | + 名前による直接解決へ退避し、いずれも見つからない場合のみ当該エフェクトを適用しません。 |
0 commit comments