概要
After Effectsの日本語UIで作成したエクスプレッションを、英語UIでも壊れにくい matchName + propIndex 参照へ変換するJSXツールを作りました。
日本語UIで作ったAEPを英語UIで開いたとき、エフェクト名やプロパティ名の違いによってエクスプレッションエラーが出ることがあります。
GitHubで公開しています。
問題
日本語UIで、たとえば以下のようなエクスプレッションを書いていた場合です。
thisComp.layer("CONTROL").effect("ドロップシャドウ")("不透明度")
日本語UIでは問題なく動いていても、英語UIでは "ドロップシャドウ" や "不透明度" という表示名が解決できず、エクスプレッションエラーになることがあります。
方針
After Effectsには、UIに表示される名前とは別に matchName があります。
そこで、日本語UI名に依存した参照を、以下のようなUI言語に依存しにくい参照へ変換します。
変換前:
thisComp.layer("CONTROL").effect("ドロップシャドウ")("不透明度")
変換後:
thisComp.layer("CONTROL")("ADBE Effect Parade")("ADBE Drop Shadow")(2)
ADBE Effect Parade、エフェクトの matchName、そして propIndex を使って参照する形です。
作ったもの
以下の2ファイルを同じフォルダに置いて使います。
AE_matchName_convert_all_comps_v1.jsx
ae_effect_props_ja_en_merged.csv
JSXは、現在開いているAfter Effectsプロジェクト内を走査します。
プロジェクト内の全コンポ
→ 全レイヤー
→ 全プロパティ
→ expressionありのプロパティ
→ CSV辞書で見つかった参照だけ置換
変換例
変換前:
thisComp.layer("CONTROL").effect("ドロップシャドウ")("不透明度")
変換後:
// Original:
// thisComp.layer("CONTROL").effect("ドロップシャドウ")("不透明度")
// UI-independent:
// ドロップシャドウ > 不透明度 | ADBE Drop Shadow (2)
thisComp.layer("CONTROL")("ADBE Effect Parade")("ADBE Drop Shadow")(2)
元の式はコメントとして残すようにしています。
変換できるもの
CSV辞書にある、日本語UI標準名のエフェクト参照を変換します。
例:
.effect("ドロップシャドウ")("不透明度")
.effect("ドロップシャドウ")("柔らかさ")
.effect("塗り")("カラー")
.effect("塗り")("不透明度")
.effect("スライダー制御")("スライダー")
.effect("カラー制御")("カラー")
変換しないもの
CSV辞書で見つからない参照は変更しません。
例:
.effect("Angle")("ADBE Angle Control-0001")
.effect("Distance")("ADBE Slider Control-0001")
.effect("Transform 1")("ADBE Geometry2-0002")
また、エフェクト名を手動でリネームしている場合も対象外です。
effect("色コントロール用")("カラー")
標準の日本語エフェクト名ではないため、今の仕様では判断しません。
使い方
- AEPファイルを必ずコピーする
- コピーしたAEPをAfter Effectsで開く
-
AE_matchName_convert_all_comps_v1.jsxとae_effect_props_ja_en_merged.csvを同じフォルダに置く - After EffectsでJSXを実行する
- JSXと同じフォルダに出力されるログを確認する
- 英語UI / 日本語UI の両方でエクスプレッションエラーが出ないか確認する
注意
このツールは、現在開いているAfter Effectsプロジェクト内のエクスプレッションを書き換えます。
本番AEPに直接実行しないでください。
必ずコピーしたAEPで試してください。
実行直後であればAfter Effectsの「取り消し」で戻せますが、保存後の復旧を保証するものではありません。
検証
実案件コピーで検証したところ、英語版After Effectsで出ていたエクスプレッションエラーが解消され、日本語版After Effectsで開き直してもエラーが出ないことを確認しました。
ただし、すべてのプロジェクトやすべてのエフェクト参照での動作を保証するものではありません。
補足
このツールは、ChatGPTと相談しながら、コードの大部分を生成・整理してもらって作りました。
GitHub