Quartz Composer

Quartz Composerとは



Quartz Composerは、macOSの開発環境の一部として提供されている、ノードベースのビジュアルプログラミング言語です。主にグラフィックデータの処理に用いられ、OpenGLOpenCLCore Image、Core Video、JavaScriptなどの多様な技術を、シンプルで直感的なビジュアルプログラミングの形で利用できます。

Appleは、Quartz技術をオペレーティングシステムに深く組み込んでおり、Quartz Composerで作成したコンポジションは、QuickTimeに対応したアプリケーションでスタンドアロン再生できます。例えば、iTunesのビジュアライザやスクリーンセーバーなどがその例です。また、アプリケーションにGUI部品として埋め込むことも可能です。

ただし、macOS 10.15 Catalina以降では非推奨とされており、互換性のために残されています。

パッチによるプログラミング



Quartz Composerにおけるプログラミングは、「パッチ」と呼ばれる基本処理単位を繋ぎ合わせることで実現されます。パッチは、他のプログラミング言語におけるルーチンのようなもので、実行されると結果を生成します。パフォーマンス向上のため、パッチは出力が必要な場合にのみ実行される「遅延評価」のアプローチを採用しています。

パッチには、主に以下の3つのタイプがあります。

出力パッチ: 結果を出力する
データ処理パッチ: データの加工や変換を行う
外部入力パッチ: MIDI、オーディオ、キーボード、マウスなどの外部からの入力を受け付ける

複数のパッチをまとめたものは「マクロ」と呼ばれ、入れ子構造の編集も可能です。

レンダリングの順序は、各レンダラーに割り当てられたレイヤーによって制御され、番号が高いものから順にレンダリングされます。レイヤーの有効/無効を切り替えることで、パフォーマンスを向上させることも可能です。

また、一部のパッチは他のパッチを内包でき、上位パッチのパラメータ変更は下位パッチにも適用されます。例えば、照明、3D変換、GLSLシェーダーなどが該当します。

バージョン3.0からは、コンポジションを仮想パッチとして利用できるようになり、機能の再利用が容易になりました。エディターでは、仮想パッチを完全に展開した「フラット」なコピーを保存することも可能です。バージョン4.0では、仮想パッチがホストにない場合に備えて、フォールバック用のフラットコピーを保存できるようになりました。

Leopardのリリースではネットワーク機能が強化され、ネットワーク経由でのデータ同期やOpen Sound Controlのサポートが追加されました。

プラグインによる拡張



バージョン3.0では、Xcodeのテンプレートを使ってカスタムパッチを作成できるようになりました。また、「セーフモード」の概念が導入され、危険なパッチの読み込みを防止することで、悪意のあるコンポジションによるセキュリティリスクを軽減できるようになりました。ただし、Apple純正のテンプレートを使用しても、カスタムパッチが常に安全であるとは限りません。

以前のバージョン(2.0)からカスタムパッチのプラグイン開発は可能でしたが、APIは公開されていませんでした。テンプレートのリリースによって、この手順が簡略化されました。

隠しオプション



Quartz ComposerエディターでOptionキーを押しながら「環境設定...」を選択すると、3つのオプションタブが追加されます。これらのオプションは、システム設定、エディター設定、QuickTime統合設定に関するものです。

重要なオプションとしては、拡張ツールチップ、ソフトウェアレンダリング、フレームレート無制限レンダリングなどがあります。マルチサンプルアンチエイリアシングのオプションはバージョン4.0で追加され、エディター内でのアンチエイリアシングが有効になりました(GPUの対応が必要)。

データ型



Quartz Composerでは、以下のデータ型が利用できます。

Boolean: 0または1
Index: 0から2147483647までの正の整数
Number: 倍精度浮動小数点数
String: Unicode文字列
Color: RGBA、CMYK、グレースケール値
Image: 任意のサイズの2D画像
Structure: 入れ子構造の構造体配列
Virtual: 上記のいずれかの型を保持可能

バージョン4.0では、以下の型も追加されました。

Mesh: 3次元座標に配置された頂点の集合、法線、テクスチャ、色
Interaction: コンポジションにおけるユーザー入力を受け付けるための値のない型

データの型変換も可能です。接続線の色によって変換の有無やデータ損失の可能性が示されます。

コンポジション



Quartz Composerエディターで作成されたファイルは「コンポジション」と呼ばれます。コンポジションはバイナリプロパティリスト(XML形式もサポート)で、拡張子は.qtz、UTIは`com.apple.quartz-composer-composition`です。パッチやその接続、入力ポートの状態などがコンポジションファイルに保存されます。

コンポジション内には画像を埋め込むことができ、自己完結型のコンポジションを作成できます。動画ファイルをエディターにドラッグすると、動画ファイルへの参照が作成されます。

コンポジションには、作成者、著作権、説明などのメタデータを格納できます。また、JPEG、JPEG2000、GIF、PNG、TIFFなど、幅広い画像ファイル形式に対応しています。

コンポジションプロトコル



バージョン3.0では、コンポジションプロトコルの概念が導入されました。プロトコルは、目的を達成するために必要な入出力などのテンプレートを提供します。標準で以下のプロトコルが用意されています。

Graphic Animation: 入出力なしで画面に描画されるアニメーション。Keynoteのようなアプリで背景アニメーションとして使えます。
Image Filter: 画像を変化させるフィルター。Render In Image環境でのみレンダリングが許可されます。
Graphic Transition: ある画像から次の画像へ遷移するトランジションを作成します。
RSS Visualizer: RSSフィードを解析して表示します。
Screen Saver: Finder用のスクリーンセーバー
Music Visualizer: iTunes内で使用するミュージックビジュアライザ

バージョン4.0では、Mesh Filter(メッシュを変形するフィルター)が追加されました。

プロトコルを正式に追加する方法はありませんが、将来的にドキュメント化されていない方法で可能になる可能性があります。

ランタイム



コンポジションでは、プロトコルに加えて異なるランタイムを利用できます。Leopardでは、Tigerランタイム(32ビット)とLeopardランタイム(32ビットまたは64ビット)を利用できます。エディターは、使用中のパッチが危険か、Tigerで利用できないかを表示し、互換性の維持に役立ちます。

リポジトリ



バージョン3.0では、コンポジションリポジトリが導入され、アプリケーション間でコンポジションを共有できるようになりました。

リポジトリの場所は以下の通りです。

`/System/Library/Compositions`: システムの中核コンポジション(通常、ユーザーは変更不可)
`/Library/Compositions`: すべてのユーザーが利用できるコンポジション
`/Users/username/Library/Compositions`: ログインしたユーザーのみが利用できるコンポジション

コンポジションをリポジトリに追加するには、対応する場所にファイルを置くだけです。

コンポジションの比較



Quartz Composer 3.0では、コンポジション比較が可能になり、2つのコンポジションの入出力やレンダリング結果を比較できます。

関連ソフトウェア



Quartz Composerは、Max/MSPやPure Dataに似た部分がありますが、これらは音声処理に重点が置かれています。Quartz Composerは、音声やMIDI信号に反応する映像コンポジションを作成でき、QuickTime対応アプリで再生できるため、VJから関心を集めました。

Quartz Composer Visualizer



AutomatorサポートやSyphonサポートなど、他のソフトウェアとの連携も可能です。

歴史



Quartz Composerは、PixelShox Studioを元に開発されました。

外部リンク



Quartz Composerに関する様々な書籍、チュートリアル、コミュニティ、プラグインの情報が、多くの外部リンクで提供されています。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。