開発環境 Cコンパイラ
今回はVisual C++ 2008 Express Edition SP1を使ってプラグイン作成を行います。僕は通常VisualStudio 2005を使用してますが、入門という事で無料の VC++2008です。ちなみに最新版はVisual Studio 2010になります。実はコンパイラはプラグイン開発では特に何でもいいです。作成されるバイナリコードのターゲットが変わるだけでBCCでもGNU-Cでも作成は可能です(makefile作るのが非常に面倒ですが)Visual C++ 2008 Express Edition SP1のダウンロードはここから出来ます。Visual Studio 2008 SP1でかなり大きなファイルになります。
Visual C++の使い方は必要なものしか説明しません。
インストールは特に問題はないと思いますが、C++は当然としてC#もインストールしておけば、後々楽になります。これら以外はインストールする必要はありません。
AfterEffects SDKの入手
SDKはAdobeのサイトから入手可能です。できれば可能な限りのすべてのバージョンのSDKを入手しておきましょう。最新になればなるほど基本機能の解説が省かれているので古いバージョンのドキュメントが結構役に立ちます。3.1付属のSDKが一番分かりやすかったですが、6.5のSDKからがあれば十分です。
AE CS5 sdk
AE CS4 sdk
AE CS3 sdk
AE7 sdk
AE6.5 sdk
今回はSDK CS3をターゲットにします。
SDK CS4へはソース変更なしで対応可能ですので、必要な人はCS4でもOKです。CS5はまだ未確認ですが、かなり問題が発生すると思います(64bitアプリ対応のため)
SDKのインストール
インストールはデフォルトでかまいません。CドライブのProgram Filesへインストールされるのが嫌な人は、違うパスを指定してください。特に問題はありません。
Documentaionフォルダには唯一の資料であるSDK_Guide.pdfがExamplesフォルダにはプログラムに必要なヘッダー・ソースコードがあります。
Examplesフォルダは、インストール直後のものをバックアップしておきましょう。
プラグイン作成に必要な情報はすべてこの中にあります。特にHeadersフォルダ内のファイルにはコメントとして必要な情報があります。SDK_Guide.pdfには載っていないので注意です。
さあ!コンパイルだ!!
今回のターゲットはEffectフォルダ内にあるSDK_Noiseをコンパイルしてみます。Effectsプラグインの勉強するならまずこのプラグインを攻略するのが近道です。というかほかのプラグインサンプルは必要があれば見る程度でOKです。よくSDKのサンプルがコンパイルできないと相談受けますが、安心してください。僕もすべてのソースをコンパイルできません(まぁ原因がはっきりしてるので無視してるだけです。原因はSDKにはありませんのでAdobeのせいにしないように)
以下のリストがSDK_Noiseの全ソースファイルです。
SDK_Noise.h | ヘッダーファイル。 |
SDK_Noise.cpp | C++のソースコード。プラグインのメイン。 |
SDK_NoisePiPL.r | リソースファイル。PiPLリソースを作成する為の定義ファイル。 |
win/SDK_Noise.vcproj | VC++のプロジェクトファイル |
win/SDK_Noise.sln | VC++のソリューションファイル。 |
win/SDK_NoisePiPL.rc | rファイルをコンパイルして作成された中間ファイル。 |
ソリューションファイルをVC++で開くとVisual Studio変換ウィザードが表示されますので、変換してください。
途中バックアップをとるか聞かれますが、どちらでもかまいません。完了ボタンでウィザードを終了します。
次にプロジェクトのプロパティを修正します。
リンカ・全般の出力ファイルを”..¥SDK_Noise.aex”に書き換えます。
デフォルトでは環境変数で指定されたパスへ作成されたバイナリを保存してますが、ここでは、SDK_Noiseフォルダへ保存するように相対パスで指定します。
これで準備は完了です。
リビルドを実行しエラーが無ければコンパイルは成功です。といいたいのですが、実はこの段階でよく分からないエラーでコンパイル後のリンクが失敗する事があります。
win/Debug/BuildLog.htmを見ると分かるのですが、リソースのコンパイル時に使用するPiPLtool.exeが実行時にエラーを起こしてるはずです。出力logには表示されないのではまりがちですが、PiPLtool.exeがVC++ 2003のランタイムライブラリ(msvcr71.dll)を呼び出す為です。msvcr71.dllは、”Program Files/Adobe”の中を検索するといっぱいあるのSYSTEM32フォルダか”Examples\Resources”へコピーしてください。
これで、SDK_Noiseは無事にコンパイルできるはずです。
出力パネルが上記の通りになっていれば、フォルダの中にSDK_Noise.aexが作成されています。
失敗する場合は、出力パネルのエラー表示とwin/Debug/BuildLog.htmを確認してください。
プラグインの動作確認
作成されたSDK_Noise.aexをAfterEffectsのPlug-insフォルダへコピーして動作確認をします。上記の様に表示されれば成功です。
ここまで出来れば、プラグイン開発の準備はほとんど終了です。
画像処理プログラムの経験があれば、もうソースをどんどん弄ってプラグインを作りましょう。
注意!
SDKのサンプルではプロジェクトの構成(ターゲット)がDebugになっています。Debugでコンパイルされたプラグインバイナリは、VC++がインストールされているPCでしか実行できません。公開配布は絶対にしないように(過去間違えて配布してしまって偉い目にあった)また、VC++ 2008で作られたプログラムバイナリは実行時にMicrosoft Visual C++2008 再頒布可能パッケージが必要になります。それはVC++がインストールされたフォルダ(C:\Program Files\Microsoft Visual Studio 9.0\VC\redist)かここからダウンロードできます。
まとめ
今回はプログラム経験者なら無視してもいいレベルの内容ですね。まぁ僕のところにくる問い合わせメールの内容がほとんどコンパイルの仕方なので。この記事を読んでコンパイルが出来なかったらメールかコメントください。僕自身が見逃している部分があるかもしれませんので。
次回は、超簡単なプラグインを実際に作ってみます。
新着記事 : アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! http://bit.ly/aRyBLr
RT @aeusers: 新着記事 : アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! http://bit.ly/aRyBLr
アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! | AEP Project http://bit.ly/bdJpPQ
へーーーーーーーーーーー。AFのプラグインをVSで作ったりもできるんだ。(・∀・) それは面白そう。 http://bit.ly/dizgLe
アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! | AEP Project: 開発環境 Cコンパイラ今回はVisual C++ 2008 Express Edition … http://bit.ly/dp1xfs
暇見つけて挑戦してみよう RT @AEUSERS: アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! http://bit.ly/buu0QG
こういう始めの一歩的な記事は大変助かる! RT @AEUSERS アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! http://bit.ly/cK3KtZ #aejp
クライアント様の方で動作しなかった原因がわかりました。すごく助かりました。ありがとう!
tmvVhf osxutwwkvbst, [url=http://lbrrpetceyko.com/]lbrrpetceyko[/url], [link=http://sdkybdsclrtu.com/]sdkybdsclrtu[/link], http://jtwyimdswmms.com/
ジブン用メモ:adobeCSプラグイン作成方法。 http://bit.ly/iLrvaV
はじめまして
64bit環境 + Visual C++ 2010 Express とCS4 SDKで試してみたのですが
色々つまづいてしまって何がなんだか・・・。
出来れば64bit版での開発などについても書いていただけると嬉しいです。。
返事が遅れてすみません。
僕自身の開発環境がまだ32bitなので64bit環境での詳しい解説はまだできません。ごめんなさい。
CS4ということで多分32bitターゲットのプラグイン開と思いますが、特に手順は変わらないはずです。
VC++2010 expressでも32bitターゲットなら特に問題なくビルドが出来るはずです。ただ、PiPL.exeが32bitアプリなのでCS5のSDkのものと差し替える必要があると思います。
けん吾庵さんのWebが参考になると思います。
http://kengolab.net/prog/AEPlugin/
ここははじまりか。ていうかプラグイン製作・・・・か興味がないこともないけど。http://t.co/IAdpLdUm
参考にしたサイト http://t.co/JIQqMxFq 64bitでビルトする為の参考サイト http://t.co/As9b9ivs http://t.co/2GcfForS
アニメ制作者のためのAfterEffectsプラグイン作成入門(第1回) SDKをコンパイルしてみよう! http://t.co/7UJQFvlN
@shime_nawa そうだよ。SDK落としてプログラミング、しよう!http://t.co/sZ4j3Tp6
インストール先についての補足。
下記はCS5.5SDKで動作確認しています。
rファイルのコンパイラであるPIPLtools(SDKのResourceフォルダ参照)はパスの中に「.」が含まれているとそこが拡張子と判断するようです。
例「D:\Project.AE\Example\Effect\SDK_Noise」
上記例のような場合、「D:\Project.AE」というファイルを変換対象として認識します。
そのため、.を含まないフォルダを用意する必要があります。(かなり特殊な例ですが嵌まりました・・・・・・)
SDKのインストール先はドライブ直下に「AESDK」等の特殊な文字を含まないシンプルなフォルダにした方が無難です。
余談ですが、この手の外部ツールのエラーはビルドログにはcmdがエラーが返したこと、ファイルが参照できないことぐらいしか表示されずエラー原因がかなりわかりづらいです。
最終的にはPIPLtoolsをコマンドライン上から実行してエラー内容を確認しました。
さらに補足。
日本語環境(CP932)では下記のようなエラーがでる場合があります。
———————————————-
1> AEGP_SuiteHandler.cpp
1>D:\AEPlugins\Headers\PR_Public.h : error C2220: 警告をエラーとして扱いました。’object’ ファイルは生成されません。
1>D:\AEPlugins\Headers\PR_Public.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
1> SDK_Noise.cpp
1>D:\AEPlugins\Headers\PR_Public.h : error C2220: 警告をエラーとして扱いました。’object’ ファイルは生成されません。
1>D:\AEPlugins\Headers\PR_Public.h : warning C4819: ファイルは、現在のコード ページ (932) で表示できない文字を含んでいます。データの損失を防ぐために、ファイルを Unicode 形式で保存してください。
————————————————
これはPR_Public.hの中のコメントにCP932で表現できない特殊記号が含まれているため発生している警告のようです。
これを解消するには、警告をエラー扱いにしないことか(プロジェクトプロパティ>全般>警告をエラーとして扱う=いいえ)、特定の警告を無視することか、ヘッダーファイルの該当コメントを削除する。もしくは別のエンコーディングで上書き保存してしまうことが必要です。
ソースコードの改変がなく重篤な警告を見落とすことがない、特定の警告を無視する方法がお勧めだろうか?
連投で申し訳ないですが実行環境の記載をば。
Windows7(64bit)+VS2010ProSP1+CS5.5SDKの環境で開発し、Windows7(64bit)+AfterEffectsCS5.5で動作を確認しています。
私の環境ではVC++2008Express+CS5.5のサンプルだとプロジェクトプロパティが開けない等の不都合があり、VS2010を採用しています。
CS5.5のSDK Guideにはサンプルでは「Windows7(64bit)」と「VisualStudio .net 2008」と名指しされているので問題ない環境のはずなのですが……