Quartz Composer / Custom Patches
Quartz Composerのカスタムパッチを作るための情報をまとめるページです。
What's New?
- XPathPatch?を公開しました(2006-10-13)
- RESTPatchを公開しました(2006-09-28)
- Xcodeのプロジェクトテンプレートを掲載しました(2006-09-14)
もくじ
カスタムパッチの作り方
Xcode プロジェクトテンプレート
ClockSkewの情報をまとめて単純にカスタムパッチを作成できるようにXcodeのプロジェクトテンプレートを作成しました。
- まず、テンプレート用のファイルをダウンロードします。
Quartz Composer Patch.zip
- ダウンロード後解凍されたQuartz Composer Patchディレクトリを、
/Library/Application Support/Apple/Developer Tools/Project Templates/Bundle/
にコピーします。
- Xcodeの新規プロジェクト作成の際に、"Bundle"の中から"Quartz Composer Patch"を選びます。
- この状態で、ClockSkewで書かれたカスタムパッチを作るために必要なファイルや設定が完了しています。プロジェクト名.hおよびプロジェクト名.mをいじれば、基本的なパッチを作成できます。
- インスペクタペインに"Setting"ペインを表示させたいときなどはちょっとしたテクニックが必要です。のちほどまとめる予定ですが、すぐに知りたい方はパッチ例のソースを見ていただければ分かると思います。
カスタムパッチを作るための主な情報源
- ClockSkew
- 実例もあるので、とっかかりはこちらで。PatchLoader?.hの<gfpluginregistration>は<GFPlugInRegistration?>の間違いです。
- class-dump
- カスタムパッチを作るためのAPIは公開されていないので、どうにかしてQuartz ComposerのAPIを知る必要があります。そこで、このclass-dumpを
/System/Library/Frameworks/Quartz.framework/Frameworks/QuartzComposer?.framework/QuartzComposer?
にかけてやると、公開非公開関係なくクラス定義ファイルをはき出してくれます。
カスタムパッチを利用するための注意事項
- カスタムパッチを利用するためには、/Library/Graphics/Patches/以下にプラグインファイルを置きます。
- Apple公認ではないため、今後使えなくなるおそれがあります。
- 無闇やたらに利用するのは、セキュリティリスクの面からもおすすめしません。使うのは自己責任で。
Hiroakiが作成したパッチ例
自分があったら便利だなと思ったモノを適当にこねくりまわして作っています(AppleScriptPatchはeitokuさんが書いたものです)。不備・不具合などは多々あると思いますが、もしそれらを発見した場合は連絡していただけると嬉しいです。
Phidgets Inc.では、USBで接続可能な様々なセンサ群を開発・販売しています。これらのセンサはCやJavaからさわることが出来るのですが、それらのデータをQuartz Composerで取り出すためのパッチです。これらは同種の複数のセンサをUSBポートに差してもそれぞれ認識するように作ってありますが、テストが完璧ではありません。何か不具合などありましたらご連絡のほどを。Phidgetsのサイトよりドライバをダウンロード、インストールする必要があるかもしれません。
- Phidget Accelerometer Patch
- 二軸加速度センサであるPhidget Accelerometerのデータを取り出すパッチです。
- Audio Inputなどと同様、インスペクタペインの"Settings"の項でデバイスを選ぶ方式です。
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- Phidget RFID Patch
- RFIDリーダであるPhidget RFIDのタグデータを取り出すパッチです。
- 加速度センサ同様、Audio Inputなどと同様、インスペクタペインの"Settings"の項でデバイスを選ぶ方式です。
- Phidget RFIDの仕様上、複数のタグを同時に認識させることは出来ません。
- 「タグがいなくなった」という情報は取り出すことが出来ませんので、一定時間内にタグデータイベントが来なければタグがいなくなる、という判定をしています。"Time Out"ポートで時間(単位は秒)を設定できますので、調節してみてください。
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
Computer Vision関係のパッチ
- QRCode Patch
- QRCodeが映ったビデオ画像を突っ込むと、QRCode内に含まれた情報をデコードして取り出してくれるパッチです。現在調整中。
- VisualCodes? Patch
- Michael Rows氏が作られたVisualCodesの各種情報を取り出すパッチです。
- VisualCode?の回転や、画像内における座標などを取り出すことが出来ます。Java Bridgeを利用しているため、かなーり重いです。そして制限も多々存在します。現在調整中です。
- ARToolKitPlus? Patch
- ARToolKitPlusは、Washington大学と広島市立大学で作られたARToolKitを拡張したものです。
- これも紙に印刷されたタグの動きをビデオで取り込むと、タグのIDだけでなく、タグの動きを6DOFで得ることが出来ます。これもVisualCodes? Patchと同様制限も多く、現在調整中です。
その他のパッチ
- XPathPatch?
- 下にあるRESTPatchと組み合わせると、RSS Feedなどよりも柔軟にWebの情報を取ってこられます。
- 例えば、Livedoor お天気Webサービスからその日のお天気を調べてきて、天気によって表示する文言やアイコンを変える、とか、使い方は様々です。世の中のWebサービスとつながるといろんなおもしろいことができそうです。
- RESTPatchで拾ってきたXMLデータと、XMLノードを指定するPathを指定してやると、XMLから欲しいノード情報のみがフィルタされて出力されます。XPathについては@ITの記事などを調べていただくと様子がわかると思います。
- OS XではAquaPathというソフトもあるので、そいつでどういった感じでフィルタされるか試すことができます。
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- RESTPatch
- RSS Feedはあるのに、もっと一般的にWebService?が使えても良いじゃないか、ということで。
- 使い方は基本的にRSS Feedと変わりませんが、今のところ取ってこられるのがXMLの生データです。
- Yahoo!ウェブ検索でしか試していないので、なんらかの不具合があるかもしれません。
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- AppleScript? Patch
- Input Portに入ってきたStringをAppleScript?だと解釈し、命令を発行します。
- Stringをいじればいろいろなことが出来るかもしれません。
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- &ref(): The style ref(filename,pagename) is ambiguous and become obsolete. Please try ref(pagename/filename);
- XMLSocket Patch
- Input Portに入ってきたStringをXMLだと解釈して、データを投げるパッチです。
- Flashなどとお話が出来るようになるので楽しいことが出来たりします。現在調整中。
みなさんのありがたいお言葉