Quartz Composer
作者 | アップル |
---|---|
最新版 |
4.6
/ 2011年11月18日 |
対応OS |
Mac OS X v10.4(バージョン2.0) |
サポート状況 | 開発中 |
種別 | ビジュアルプログラミング言語 / ソフトウェア開発ツール |
ライセンス | プロプライエタリ |
公式サイト | http://developer.apple.com/graphicsimaging/quartz/quartzcomposer.html |
Quartz Composerはノードベースのビジュアルプログラミング言語で、グラフィックデータ処理のためにMac OS Xの開発環境の一部として提供されている。
Quartz ComposerはOpenGL(GLSLなど)、OpenCL(MacOSX10.6以降)、Core Image、Core Video、JavaScript、およびその他の技術をシンプルなビジュアルプログラミングの形で提供する。 Appleはオペレーティングシステムに深くQuartz技術を埋め込んでいる。Quartz Composerで作成したコンポジションは、任意のQuickTimeアプリケーションでスタンドアロン再生することができます(ただし、MacOSX10.4以降)。例えばiTunesのビジュアライザ、スクリーンセーバなど。Quartz ComposerはアプリケーションとしてCocoaまたはCarbonを通してGUI部品を埋め込むことが出来ます。このソフトは少なくとも32MBのVRAMを搭載したグラフィックカードが推奨されます。Quartz ComposerにはiPhone SDKが含まれていますが、iOSデバイスでコンポジションを実行する方法は現在ありません。
パッチ
Quartz ComposerによるQuartzプログラミングはパッチをつなぐことで実現される。パッチとは、他のプログラミング言語のルーチンと同様で、基本処理単位である。これは実行され結果を生成します。パフォーマンスを向上させるため、パッチはその出力が必要なときにのみ実行される遅延評価のアプローチに従います。パッチの3つのタイプがあります:出力、データ処理、そしてMIDIやオーディオ、キーボード、マウス、その他入力を受け付ける外部入力です。パッチのコレクションはマクロと呼ばれ、一つに融合することができます。マクロは、入れ子になったサブルーチンを編集することができます。
レンダリング順を制御するため、各レンダラにはレイヤーが割り当てられる。レンダラパッチの右上に番号が割り振られていて、高ほうから低い方へ順次レンダリングされます。レンダラは無効にしたり有効にしたりできます。使用されていないレイヤーをオフにすると、多くの場合、性能が上がります。
いくつかのパッチは下位にパッチを内包することが出来ます。そのパッチに適用されるパラメータの変更は下位のパッチにも適用されます。照明、3D変換、およびGLSLシェーダがそうです。このようなパッチは丸みを帯びた形ではなく、角が四角い形で示されます。
バージョン3.0では、コンポジションを仮想パッチとして利用できるようになりました。これにより、ユーザは、それぞれのコンポジションに重複コピーを作らずに作成した機能を再利用することが出来ます。Quartz Composerのエディターでは、ユーザーが簡単に配布するために、"フラット"なコピーを(完全に中で展開する仮想パッチ)保存することができます。バージョン4.0ではさらに拡張され、目的の仮想パッチがホストにない場合にフォールバックとして使用するための仮想パッチの"フラット"コピーが保存されます。これは、大幅にコンポジションの配布を簡略化します。
Leopardでのリリースでネットワーク機能が大幅に強化されました。これによりネットワークを介してデータの同期ができます。そして、OpenSound Controlのサポートが追加されました。
プラグイン
バージョン3.0では、Xcodeのテンプレートを使ってカスタムパッチを書くことが出来き、"セーフモード"の概念が導入され、危険なパッチの読み込ませないようになった。これは危険または安全でない操作を実行する悪意のあるコンポジションを防ぐことができます。 ただしAppleのXcodeのテンプレートを使用したカスタムパッチがいつも安全なわけではありません。
バージョン2.0より、カスタムパッチのプラグインを開発することは可能であったが、APIは公開されていませんでした。テンプレートは、この手順を簡略化するためにリリースされました。
隠しオプション
Quartz Composerエディターで、optionキーを押しながら"Preferences..."を選択すると、の3つタブのオプションが追加されます。これらのオプションは、システムの設定、エディタの設定、およびQuickTime統合設定です。 ここに含まれるオプションで特記すべきは、拡張ツールチップ、ソフトウェアレンダリングと、フレームレート無制限のレンダリングがあります。マルチサンプルアンチエイリアシングのオプションはバージョン4.0で追加されました。これによってエディタ内でアンチエイジングが有効になります。ただしGPUが対応している必要があります。
データ型
QCは以下のデータ型を使うことが出来る:
- Boolean - 0 または 1
- Index - 0から2147483647までの正の整数
- Number - 倍精度浮動小数点型
- String - unicode文字列
- Color - RGBA、CMYKまたはグレースケール値
- Image - 任意のサイズの2D画像
- Structure - 入れ子の構造体配列
- Virtual - 上記どの型でも保持できる
バージョン4.0より以下の型も追加された:
- Mesh - 3次元座標に配置された頂点の集合とその法線、それらのテクスチャと色
- Interaction - コンポジションにおいて、インタラクティブにユーザーの入力を受け付けるための値のない型
型変換
データは通常、別の型に変換することができます。 Quartz Composerでは、パッチ間の接続の色は変換について示します。黄色の接続は、変換が行われていません。オレンジは変換によるデータの損失の可能性(例えばNumberからIndex)を示し、赤色は難しい変換を示します(ImageからBooleanなど)。
コンポジション
Quartz Composerエディタで作成された書類は、コンポジションと呼ばれます。これは、バイナリのプロパティリスト(XMLバージョンもサポートされている)で、拡張子は.qtz UTIはcom.apple.quartz-composer-compositionです。パッチや、その接続、その入力ポートなどの状態はコンポジションファイルに保存される。
この節の加筆が望まれています。 |
コンポジションプロトコル
バージョン3.0では、コンポジションプロトコルの概念が導入されました。このプロトコルは、それぞれの目的を達成するため必要となる的確な入力や出力などのテンプレートを提供します。以下のプロトコルは、最初から用意されています:
- Graphic Animation - これは入力も出力も必要としない、しかしスクリーンに必ず描画される。これはKeynoteのようなアプリケーションで背景のアニメーションとして使うのに便利である。
- Image Filter - フィルタによって画像を変化させます。Render In Image環境を使わないとImage Filterでレンダラーは許可されません。
- Graphic Transition - 元の画像から一定の間隔で次の画像へ遷移するトランジションを生成します。
- RSS Visualizer - RSSフィードを解析して表示します。
- Screen Saver - Finderのためのスクリーンセーバー
- Music Visualizer - iTunes内で使用するためのミュージックビジュアライザ
バージョン4.0で新しいプロトコルが一つ追加されました。
- Mesh Filter - 入力されたメッシュを変形
正式にプロトコルを追加する方法はありません。しかし将来的には、これを可能にする文書化されていない方法があります。
この節の加筆が望まれています。 |
ランタイム
プロトコルに加えて、コンポジションでは異なるランタイムを利用することができます。 Leopardでは、Tigerのランタイム(32ビット)と、 よりよいLeopardランタイム(32ビット、または64ビット)を利用できます。エディタは使われているパッチが危険か、Tigarで使用できないかを表示出来ます。これは互換性を保のに役立ちます。
リポジトリ
バージョン3.0ではコンポジションリポジトリが利用可能になりました。アプリケーションで処理や効果のコンポジションを共有して利用できるようにします。
- /System/Library/Compositions - システム中核のコンポジション(ユーザーは通常、これらを変更することはありません)
- /Library/Compositions - すべてのユーザーが使えるコンポジション
- /Users/username/Library/Compositions - ログインしたユーザーのみが使えるコンポジション
リポジトリに追加するには、単純にコンポジションファイルをこれらの場所に入れるだけである。
この節の加筆が望まれています。 |
コンポジション比較
Quartz Composer 3.0においてコンポジション比較(compare compositions)が可能になりました。ユーザーが任意の二つのコンポジションにおいて、入力やレンダリングされた出力や画像を比較することが出来ます。
関連ソフトウェア
Quartz Composerは多くの点でMax/MSPに似ている。しかしMax/MSPはどちらかというと音声の処理に重点を置かれている。 QCは、音声やMIDI信号に反応する映像のコンポジションを作成することができ、それをQuickTime対応アプリケーションから再生できることから、VJ達から大きな関心を集めた。
Quartz Composer Visualizer
この節の加筆が望まれています。 |
Automatorのサポート
いくつかのAutomatorアクションは、Leopardで追加されました。
- 画像ファイルにQuartzコンポジションフィルタを適用
- QuartzコンポジションをQuickTimeに変換
- 画像ファイルにQuartz composerをレンダリング
歴史
Pierre-Olivier LatourはQuartz Composerの元となるPixelShox Studioを開発した。
外部リンク
書籍
チュートリアルおよび記述
- Quartz Composerプログラミングガイド アップル
- Cocoaはやっぱり!
- Quartz Composer tutorials
- kineme.net QC Wiki
- George Toledo's Programming and Design Blog
- cybero's Quartz Composer JavaScript guide, blog & other Quartz Composer tutorials
メーリングリスト
コンポジション
- ZUGAKOUSAKU
- kineme.net Composition Repository
- Quartz Composer Composition Directory
- GLSL, CoreImage & OpenCL Quartz Composer files from toneburst on machinesdontcare
- George Toledo's Programming and Design Blog
- QuartzCompositions.com Forum and Composition Repository
カスタムパッチ/プラグイン
- vade v002 プラグインとエフェクト
- Kineme QCカスタムパッチ
- _1024 plugins by Francois Wunschel
- Tom Butterworthプラグイン
- Tamas NagyによるCoGeプラグイン
- George Toledo's Programming and Design Blog ( a variety of official and non-official api plugins and Xcode projects )
- I Love QC New Site dedicated to learning Quartz Composer, making files and supporting the Pearson Education book Learning Quartz Composer
- Google Quartz Composer Patches
- Paolo Manna QC LuaPlugin