プログラミングツールとしてのQuartz Composer。

Mac OSX10.4 Tigerから付属したQuartz Composer

いろいろできるのが売り。かなり触っているはずなのにこのブログではまだ書いてなかったなとおもい、ちょっとニッチな話題でご提供。

モーショングラフィックスツールとしてのQuartz Composerについては未来派図画工作が最強。サンプルデータもダウンロードできて非常に勉強になる。本も出したし。

Quartz Composer Book ?クォーツ コンポーザー ブック?

Quartz Composer Book ?クォーツ コンポーザー ブック?


一方、本来的な使い方、Macソフトに簡単にグラフィックスを付加できるプログラミングツールとしての使い方はおざなりになっている感ある。少なくとも日本語のコミュニティで充実したものは見つからない。実際使ってみるとかなり使いやすい。以前、公開したSimpleVJもQCにただインターフェースビルダーでGUIをつけただけだ。


まず、XCode 3.0では大幅にQuartz Composerとの連携が改善されている。Quartz ComposerXCodeで何ができるのか、を知るにはサンプルを見るのが一番早い。

ディレクトリ"/Developer/Examples/Quartz Composer/Applications"以下に大量のサンプルがある。hoge.xcodeprojをダブルクリックしてXCodeを開き、全てコンパイル&実行することをおすすめする。


基本的なQuartz Composerの使い方については、いろんなサイトをみて頂くとして、XCodeとリンクさせる一番の肝はinputとoutputの設定だ。
patchを右クリックorControl+クリックすると"Published Inputs"なり"Published Outputs"という項目がでる。階層化されたパッチないでこれをつけると、QC内部で、階層的なプログラミングができるのだが、Root階層でパブリッシュした場合、XCodeからそのパラメーターをいじれるようになる。outputの場合は値や画像を取得できる。
f:id:asus4:20090517165943p:image



QCとXCodeで入出力できる値のタイプはQuartz Composer Programming Guideによれば、





Table 1-1  ポートの型および対応するクラス

ポートの型

クラス

Boolean(ブール値)、Index(インデックス)、Number(数値)

NSNumber

Color(色)

NSColor

Image(画像)

NSImage、CIImage

String(文字列)

NSString

Structure(構造体)

NSArray、NSDictionary


だ。

f:id:asus4:20090517172926p:image
パッチを繋ぐ線が黄色の場合は型がマッチしている。赤色の場合はマッチしていない。対応表を見れば分かるように、Bool,Index,Numberの繋ぐ線は、自動的に型変換されてもうまくいく。画像ではcolorのアウトプットをstringのインプットにつなげているが、

[NSColor stringValue];

と同じ値が取り出される事になる。





全てのキー、値は
f:id:asus4:20090517174057p:image
OSX10.5からはXCode上で確認できる。

- (IBAction) changeSlider:(NSSlider*)sender
{
	[qcView setValue:[sender floatValue] forInputKey:@"slider"];
}

といった感じで、あの独特のObjective-Cの使い回しで記述していくことになる。パブリッシュされたポートはinputKeyなり、outputKeyに文字列で。メッセージを送ることになる。


これで簡単にインターフェースビルダーとかからQCをいじれるようになる。

…と思っていたのだが、
実は10.5から、Quartz Composition Parameter Viewなるクラスが登場し、インターフェースビルダーでヒモで繋ぐだけで、簡単にinputポートにアクセスできるようになった。

ってことで、それについてはまたいつか書きます。