引き続きAfterEffectsのスクリプト作成をGPT4さんと一緒に行っていきます!
前回はコンポジション名の変換でしたが(前回スクリプト内容の詳細書いてないな・・・)
今回はエクスプレッションの一部を置き換えるスクリプトを作ったときの流れを。
きっと皆さん困っと事があるエクスプレッションの「スライダ」「スライダー」問題!(笑)
それもあるけど、割とちょいちょいエクプレッションの一部を一括で置換えたいことがあるので、それに対応できる置換スクリプトを作成しました。
スクリプトの概要
今回GPT4さんに作ってもらったスクリプトの概要は以下です。
①プロジェクト全体、もしくは選択中のプロパティのエクスプレッションを対象にする。
②エクスプレッション内の一部の文字を置き換える
③除外に指定した文言は置換の際に対象から除外される。
①はチェックボックスの切り替えを指示しました。
「プロジェクト全体」のチェックボックスがオンだとプロジェクト内のすべてのエクスプレッションが多少に、「選択中のプロパティ」だと選択中のプロパティのみを対象に処理を行います。
「選択中のプロパティ」モードはそこだけ変えたいというよりは、全体に掛ける前に確認する為のものというイメージでつけました。
②こちらはテキストボックスに入力してそれらを置換するようにしてました。
置換前「テキストボックス」 ➡ 置換後「テキストボックス」 で置換処理を行います。
置換前「スライダ」 ➡ 置換後「スライダー」 みたいなイメージです。
③は置換前の文言を含むが、置換の対象としたくないときに指定できるように設けました。
「スライダ」「スライダー」問題でもあるのですが、エフェクトプロパティーの「スライダー」はシステム側で名称が決まっているので変更できなません。
そのため為、システム側で変更があると一括で変更されてしまうのですが、エフェクト名はユーザーが自由に指定できるので、旧「スライダ制御」は現「スライダー制御」に自動で置き換わらないことがあります。
その場合は以下の例の「スライダ制御」の部分は「スライダー制御」になってしまうと困るので、「スライダ制御」を除外項目に指定しておくとそのままにできるという感じです。
例)wiggle(thisLayer.effect(‘スライダ制御’).param(‘スライダ’), thisLayer.effect(‘スライダ制御’).param(‘スライダ’))
割りと参照レイヤー変えたりするときにレイヤー名とコンポ名が似通ったりしていると使えます。
GPT4さんとの制作
置換と除外の処理はコンポ名のところで概ねできていたので、UIの指定や置換のベース自体は割りとさっくりできるかと思っていたのですが、そもそもの処理対象の走査のところで引っかかってしまい割りと難儀な制作になりました。
コンポ名のときも同じようなところで引っかかったので、エラーが出た際に早めに指摘はできました。
私「エクスプレッションの一部を一括で置き換えるスクリプトが作りたいんんですけどできます?
以下、詳細ゴニョゴニョ」
GPT4「かしこまりました。要件を満たすコードは以下です。[コードずら~]お試しください。」
私(さすが、すぐできるんだな・・・エラー)
「選択中のプロパティでもプロジェクト全体でも処理されないですね・・・走査範囲の指定がうまくいってないかもですね」
GPT「走査範囲の指定を修正しました[コードずら~]お試しください。」
という感じで結構な回数修正しました。
まず「選択中のプロパティ」モードで修正とテストをして、レイヤープロパティとエフェクトプロパティを両方指定しなければいけないと知ります。(コードは理解してません!)
ここにたどり着くまでに3時間25回制限をくらいます。
ちょっとでも前進できないかとGPT3.5でトライしましたが、前進せずにGPT4の復帰を待つことに。
そもそもプロパティがレイヤープロパティとエフェクトプロパティに別れてるなんて普通にAfterEffects使ってるだけだと知らないですよね?(え?私だけ?)
「選択中のプロパティ」モードがうまく行ったら「プロジェクト全体」モードの方はすぐでした。
こちらのスクリプトも販売しておりますので、よろしければご使用ください。
コメント