AfterEffectsプラグインの作り方
第3回 色々と操作するには?

 コンポやフッテージ等を操作したいとき、まずはプロジェクトウィンドウから対象を検索しなければなりません。
 1.プロジェクトハンドルの取得(ProjDumper.cppの370行目)
   まずはこれをAEGP_GetProjectByIndexで取得します。
 2.最上位アイテムハンドルの取得(ProjDumper.cppの371行目)
   AEGP_GetProjectRootFolderで取得します。(AEGP_GetFirstProjItemだと下記3のアイテムが取得できます)
 3.次(一番上)アイテムの取得(ProjDumper.cppの289行目)
   実際はその次が一番上のアイテムなのでAEGP_GetNextProjItemで取得します。
 4.全アイテムの検索(ProjDumper.cppの280行目)
   取得したアイテムがNULLになるまで3をループすればプロジェクトウィンドウの全アイテムを検索したことになります。
 3で取得したアイテムハンドルを使って、色々と処理することができます。

次回は、アイテムハンドルで色々な値を取得したいと思います。

AfterEffectsプラグインの作り方 
第2回 プログラム構成

 さて、プログラムの構成ですがサンプルを見ながらの方が分かりやすいので、ProjDumper.cppを見てください。

EntryPointFunc

 一番下にあります。これはAFが起動したときに呼ばれ、どこのメニュー(AEGP_Menu_~)に登録するか、起動する関数等の設定を行います。

CommandHook

 EntryPointFuncで登録したクリックしたときに起動する関数で実際の処理を書きます。ここで注意が必要なのが他のメニューがクリックされた場合もこの関数を通るということです。なので、サンプルを見ると分かりますがcommandとAEGP_GetUniqueCommandで取得した値を比較し、同じであれば処理しています。

 もう一つ気を付けたいのが”*handledPB=TRUE”です。これを入れないと再度関数が呼ばれてしまいます。

UpdateMenuHook

 メニューの項目を有効・無効にする判定を行います。コンポが選択されていたら有効、されていなかったら無効、というように使います。

 以上の3つあれば機能します。
 また、このファイルで気付いた方もいると思いますが、1つのaexで複数の機能を入れることができます。なので、機能ごとにファイルを分けた方が良いでしょう。

次回は、実際の値の取得方法等を書こうと思います。

AfterEffectsプラグインの作り方
第1回 環境作成

 業務でAEのプラグインを作ることになりまして、グーグル先生に聞いてみたのですが、これが思いのほか情報が少なかったです。
 そこで、自分用のメモという意味も含め、情報共有していきたいと思います。
 まずは環境です。
Windows10、VisulaStudioCommunity2019、AfterEffects2020
 以下のページからSDKをダウンロードして適当なフォルダに解凍してください。
https://www.adobe.io/apis/creativecloud/aftereffects.html
 その中に”BuildAll.sln”というファイルがありますので、起動してください。そのソリューションの中に多くのサンプルのプロジェクトがあります。そのままビルドできますが変な場所に出力されるので、出力ディレクトリを変更するかAE_PLUGIN_BUILD_DIRのパスを設定してください。
 あと、ビルド時にPR_Public.hでワーニングが出ますが、5行目の文字化けを消せばそれは消えます。
 それと、構成プロパティ→デバッグ→コマンドにAFのexeを指定すれば、デバッグ実行時にAFが起動して、プラグインのブレイクポイントで止まります。
 全部のサンプルを見たわけではありませんが、ProjDumperはプロジェクトの内容をテキストファイルに出力してくれるので勉強になると思います。

次回は、プラグインの構成について書こうと思います。