Quartz Composerにどっぷり!
インタラクティブ

今回のテーマ

今回のテーマは、インタラクティブです。ユーザの操作によって変化するコンテンツを作ってみましょう。

推奨環境 この解説は、以下の環境を前提に作成し、動作確認等を行っています。ご確認ください。

改版履歴

マウスでぐるぐる

Quartz Composer のパッチにはユーザ操作を受け付けるためのインタラクティブなパッチがいくつかあります。例えば、以前に扱ったものでは、Mouse パッチがありましたがマウスの座標を取得できるものでした。今回は、その3Dバージョンともいうべき Trackball パッチを扱います。

Trackball パッチは、マウスを使ってウィンドウに表示されているグラフィックをグルグルと回せるようにするパッチです。マクロパッチになっていますので、中に入っている子供のパッチを回すことになります。Settings には、Tracking Sensibility という感度設定があります。大きくすると、小さなマウス操作で大きく回転します。Inertia は、慣性で、マウスボタンを離した後に、慣性で回り続けるようにできるものです。Friction は、逆に摩擦の強さを決めるもので、強くすると止まるのが早くなります。Input Parameters の Rotation Origin X/Y/Z は、回転の中心を決めるものです。

いつものように、カエルを Image Importer パッチで表示し、その後ろにカエルからの噴射物を表示するように Particle System を使います。噴射させるものとしては、 Lenticular Halo パッチを使います。これは、明るいものの周りに見えるリング状の光を表現するものです。下向きに噴射するように、Y 方向の初速度をマイナスの値にします。また、Blending は Add にします。Add は、描画する際にすでに背景に描かれているものに描画する色を足していくため、くりかえしていくと白に近づいていきます。つまり、ひじょうに明るくなるという特徴があります。

結果はこんな感じです。マウスボタンを押した状態でマウスを動かすとぐるぐる回せます。

勝手に回っといて

マウスで動かせるのもいいですが、何もしないときも勝手に回って欲しい場合のために、同様の3Dの回転を行なわせるためのパッチもあります。3D Transformation パッチです。これも子供を持つことが出来るマクロパッチで、子供を3D座標で回転や移動ができます。今まで作ったものを子供として中にいれます。そして、今回は、Interpolation パッチの Result を Rotation Y に入れて左右に回転させています。

こうすると、普段何もしていないときは回転し、マウスボタンを押したときは Trackball の制御が働いてユーザが回転させることが出来ます。

キーボードで噴射

次にキーボードからの操作も受け付けるようにします。使うのは、Keyboard パッチです。Settings で、受け付けるキーの種類を決めることが出来ます。それぞれのキーの出力ポートからは、キーを押しているときのみ True が出力されます。

このサンプルは、カーソルの上のキーを押している間のみ噴射するものを、Sunbeams に切り替えるというものです。以前解説した Multiplexer パッチを使って、Lenticular Halo パッチと切り替えています。

声で爆発

マイクからの音声レベルを扱う Audio Input パッチというものがあります。これを使うと、声や周りの音に反応するものが作れます。使い方は簡単で、Volume Peak ポートから音のピーク値が 0.0 〜 1.0 で出力されますので、それを適当な大きさに変えて使います。今回は、Math パッチで、値をちょっと大きくして Particle System の Max Size に入れています。

つまり、大きな音がすると、Particle System で作られる粒子が巨大化するのです。例えばこんな感じ。ほとんど爆発状態です。

サンプル
Quartz Composerのファイル

再生には QuickTime 7.0 以降が必要です
オーディオメータを作る

Audio Input パッチの Spectrum ポートからは、周波数別の音の大きさが出力されています。これを使ってオーディオメータを作ってみましょう。

Audio Input パッチの Spectrum ポートから出てくるデータは、Structure の形式で、"band_N" というキーで取り出すことが出来ます。"band_N" の N のところには、 0 〜 11 の値がはいります。これを順番に取り出すには、以前扱った Iterator パッチを使います。Iterator パッチで、繰り返し回数を 12 にします。で、この Iterator パッチの中には以下のようにパッチを配置します。

要素的には新しいことはほとんどありませんが、ポイントは、"band_N" という文字列を作るのに String Printer パッチを使っているところでしょうか。"band_%@" という Format String を指定して、Iterator Variables の Current Position を入力しています。あとは、取り出した音の大きさを、Sprite パッチの Height に入力して高さを変えるようにしているだけです。

サンプル
Quartz Composerのファイル

再生には QuickTime 7.0 以降が必要です
クイックリファレンス