CamTwistとQC(序章)

Mac専用の仮想カメラデバイスソフトCamTwistは非常に高機能で便利な物ですが、Mac OS Xの中核技術であるQuartzの機能にかなりの部分を依存しています。

このQuartzの機能を開発する環境が Quartz Composer(QC)です。Quartz ComposerはMac OS Xに標準付属のデベロッパツールをインストールすると誰でも使用することができます。

Twitpic

このことは自分でQuartz Composerを使って独自のComposition(コンポジション:QCで作成したプログラムのことで、通常.qtz拡張子が付いています)を開発することで、CamTwistの機能を大幅にアップしたり、独自の使い勝手に変更することができます。

既にCamTwist用のいくつかのCompositionを公開していますが、今回は Quartz Composer の開発環境を簡単に紹介しつつ簡単な改造作業を紹介したいと思います。

(この記事の短縮URL→ http://bit.ly/fbmaEo )

Quartzの機能を開発する環境であるQuartz ComposerはDeveloper Toolsをインストールすることで使用できるようになります。Quartz Composerはビジュアル・プログラミング環境として紹介されることも多いのですが、Mac OS X上でのモーショングラフィック処理をCodeの記述を1行も無しにプログラミングすることが可能です。

Developer Tools自体はMac OS Xのインストールディスクに同梱されており、出荷時にはインストールされていません。このため必ず自分でインストールをする必要があります。Developer ToolsのインストールはAppleの指示通り行ってください。

インストールが完了すると /Developer/Applications の中にQuartz Composer(.app)があります。これを開けば新規のCompositionを作成するテンプレートが出て来ますが、その前に出来上がっているCompositionを開いて見た方が判り易いでしょう。

出来上がっているCompositionの例としては、CamTwistのEffectsフォルダの中身とMac OS X自体のライブラリの2つがあります。それぞれ、

CamTwistのEffectsフォルダ
/Applications/CamTwist/Effects

Mac OS X自体のライブラリ
/System/Library/Compositions

になります。実はCamTwistはこの両方のフォルダをEffectsの置き場として参照して居ます。このためCamTwistのEffectsフォルダに見当たらないEffectsがリストに出て来るのです。(改造版を作るとき等に思い出してください)逆にMac OS X自体のライブラリの方は他のQuartzエフェクト対応のアプリからも参照されますが、 CamTwistのEffectsフォルダはCamTwistしか参照しません。

例として「BlackAndWhite」 を見てみましょう。

このエフェクトのCompositionはCamTwist側でなくOSライブラリ側にあります。

/System/Library/Composition/BlackAndWhite.qtz

Twitpic

これをダブルクリックするとQuartz Composerが立ち上がって(通常)2つのウインドウが開きます。

Twitpic

一つはEditor画面で、こちらにパーツ(Patch)を配置したりパーツとパーツを線で結んで行く事で、映像の流れや処理を決めることができます。

Twitpic

もう一つはViewer画面で、こちらは実際に処理された結果がリアルタイムに表示されますが、単純エフェクトタイプのCompositionの場合は QC上では入力が何も配給されないのでここには何も出ません。(何かをオーバーレイするタイプは表示されます)

先ほどのEditer画面の各部の役割については以下の画像の解説を参考にしてください。

Twitpic

個々の機能Boxは「Patch」と呼ばれていますが、基本的にPatchを選択し繋ぎ合わせるだけで、高度な動画処理のルーチンができあがります。

ここで、ちょっと触れておきますと「マクロ」という概念があって、一括りの機能のPatchの一群を入れ子構造の「マクロ」内部にまとめることができます。つまり階層的な管理ができ、上手く機能毎にマクロを組めば他のCompositionで使い回すことができます。

BlackAndWhite.qtz は単純な構造なのでマクロは使用されていませんが、大抵のCompositionではマクロが多用されています。なお、中に何か入っている「マクロ」のBoxは角が尖っています。

また、上記例で入出力にそれぞれ専用のエイリアスが設定されて明示的に引き出されていますが、これは「エフェクト・タイプ」のCompositionに必須のパーツです。名称が

  • Input Image (Required)
  • Output Image (Required)

となっている部分ですが、このパーツは(確か)後で挿入できず、テンプレートで「Image Filter」を選んだ際にのみデフォルトで付いて来ます。これをうっかり消してしまうと直すのが困難です。(後から挿入する方法が有るのかもしれませんが、私は今の所知りません)

このエフェクト用のIn/OutがあるCompositionは「Image Filter」として機能しますので、ホストアプリ(今の場合CamTwist)から供給されたイメージ(リスト上の一つ上に位置するエフェクトやソース)がInput Imageに繋がり、Composition内でいろいろ処理された後にOutput Imageから次の(リスト上の一つ下のエフェクトや出力)に渡されます。

BlackAndWhite.qtz の構造をもう少し見てみますと、In/Outの間に「Color Monochrome」という角丸のBoxが繋がっています。これがQuartzのエフェクトの本体のPatchで、入力イメージを白黒化して出力する機能を持っています。

この各エフェクトや機能のPatchを選ぶ際に使用するのが「Patch Library」です。Editor左上の「Patch Library」アイコンをクリックすることでLibraryウインドウを開く事が出来ます。

Twitpic

試しにここのPatch検索に「Monochrome」と打ってみると、

  • Monochrome
  • Color Monochrome

と2つのPatchが絞り込まれます。下の「Color Monochrome」がBlackAndWhite.qtzに使用されている物と同じ物です。

Libraryリスト上でダブルクリックするかEditor画面にドラッグ&ドロップすることでPatchをEditor上に配置することができます。またPatchを選択状態でDeleteキーを押すとPatchが削除されます。(今は配置しなくていいです)

このオリジナルの BlackAndWhite.qtz は調整箇所が一カ所も無いシンプルな物ですが「Color Monochrome」Patch自体には2つの調整箇所があります。「Color Monochrome」Patchをクリックし「Parameter」アイコンをクリックしてみてください。

Twitpic

Editorの中にParameter表示画面が表示されます。

上のMacro PatchはPatch外部に表示されるパラメータです。
下のColor Monochromeは「Color Monochrome」Patchのパラメータです。

今の状態だとCamTwist側には何も調整パラメータが表示されません。

Twitpic

下にある「Color」と「Intensity」を調整できるようにするには「Color Monochrome」Patch上で右クリックをし「Publish Inputs」で「Color」にチェックを入れます。名前の変更状態になったらそのままEnterを押すと「”Color”」とだぶるクォーテーションで囲まれた名前に変わりドットが緑色に変わります。同様に「Publish Inputs」の「Intensity」もチェックし確定します。

Twitpic

これで「Color」と「Intensity」がCamTwistからコントロールできるようになりました。これを保存すれば改造版BlackAndWhite.qtzが出来上がりますが、OSライブラリ側のフォルダは書込み権限がありませんのでそのままでは保存ができません。

そこでSave As...を使って、CamTwist側のフォルダに別名保存をします。

/Applications/CamTwist/Effects

フォルダにファイル名  BlackAndWhite2.qtz で保存をしてください。ここで名前を変えておかないとリスト上で判別ができなくなりますので注意をしてください。

Twitpic

BlackAndWhite2.qtzの保存ができたらCamTwistを立ち上げてみてください。Effects List上に、

  • BlackAndWhite
  • BlackAndWhite2

が並んでいるのが確認できるでしょうか?この「BlackAndWhite2」の方を適当なカメラソースに対して割り当ててみてください。

そして「Color」をクリックして適当な色を選んでください(カラーホイールを使用するのが便利でしょう)。 純粋な白黒に対して単色に偏った白黒に変化が付けられる様になったでしょうか?

次に「Intensity」を1から0.9とか0.8などに下げて行くと単色の画面だったのが元の色味が少し混ざった画面になるでしょうか?

以上で今回の講座は終了です。

このようにQuartz Composerでは機能の追加や改造はかなり簡単な操作で実現が可能です。今回は非常に簡単な例でしたが、 各種Patchの組み合わせや内部の演算、さらに各種スクリプト(Core Image, GLSL Shader, JavaScript, OpenCL Kernel)を駆使しての高度な画像演算などが行えます。

これらのエフェクトに対して外部からMIDIやOSCで変調や操作をすることもできますし 、 Patch自体の機能を追加することも可能ですのでかなりの拡張が可能です。

今後、いくつかの例を実際に紹介して行きたいと思います。

また既に配布をしているCamTwist用の各種Effectモジュール(Composition)に関する紹介も行いたいと思います。

トラックバックURL: http://meteor.blog.avis.jp/archives/210/trackback

“CamTwistとQC(序章)”への トラックバック ( 1 )

  1. Twitter Trackbacks for 何も足さない、何も引かない : CamTwistとQC(序章) [avis.jp] on Topsy.comさんの トラックバック

    [...] 何も足さない、何も引かない : CamTwistとQC(序章) meteor.blog.avis.jp/archives/210 – view page – cached と2つのPatchが絞り込まれます。下の「Color Monochrome」がBlackAndWhite.qtzに使用されている物と同じ物です。 [...]

“CamTwistとQC(序章)”への コメント ( No )

コメント

(必須)

(必須)
(メールアドレスは公開されません)