Modulo Kineticにはピクセルワークスペースを切り取る機能としてレンダーサーフェースがあります。このRender surfaceはV-Nodeの出力に利用したり、3DオブジェクトのTexture としてマップすることでオブジェクトの面に映像を表示することや、3D空間内のプロジェクターにアサインしてバーチャル出力に利用します。
レンダーサーフェースは、Kineticにおける基本機能であり、独特な特徴となっているレンダーサーフェースのコンセプトを理解することで、Kineticのオペレーションにより早く習熟すると考えます。ここでは、Render surfaceの使い方、構造について解説します。
ピクセルワークスペースの概念

レンダーサーフェースはピクセルワークスペース全体の中から、どこをMAPするか?(切り取るか?)をX,Yのポジションに数値を入れて指定する機能です。言い換えれば、Kineticデザイナー内に存在するピクセルワークスペースの任意のポジションにレンダーサーフェースを割り当てて、その映像を切り取っています。
下記の図ではRender surface のサイズを3840×2160と指定し、その全体がプレビューに表示されていますが、Render surfaceのポジションを見ると、0, 0となっており、これはソフトウェア上では制限のないピクセルワークスペースの中から0.0 (Top Left )のポジションを3840 x 2160 の大きさで切り取っているという意味です。

わかりやすくするために、プレビューの右上にある・・・アイコンをクリックしてEdit ガイドラインを選択し、右下のウインドウに表示されるプレビューセッティング内で+キーを押して2つのガイドラインを表示してみると、縦と横それぞれ0ピクセルとすると3840 x 2160の画像全体が0、0のポジションにあることがわかります。

レンダーサーフェースで指定するポジションと同様に、タイムライン内にメディアをドラッグ&ドロップすると、メディアはプレビューで示されるピクセル空間にレンダリングされます。レンダリングされた映像はピクセルワークスペース内を自由に動かすことができ、レンダーサーフェースを、この映像を配置した位置に移動させることでレンダーサーフェースを通して出力することができます。レンダーサーフェースが配置された位置の映像コンテンツのポジションをずらすと、当然ながらレンダーサーフェース全体には映像が出力されなくなります。(オレンジの枠がRender surfaceの範囲)
このセッティングではV-Node4出力を1台セットアップし、アウトプットを4つ設定しています。V-Nodeには1つのRenderSurfaceが3840 x 2160のサイズで割り当てられ、V-Nodeの全体出力サイズもレンダーサーフェースと同じサイズにしています。

この設定では単一の4Kサイズコンテンツを全体に表示する上では問題ありませんが、1920x 1080の4つのコンテンツを任意の出力で再生したい場合、コンテンツは正しいポジションに指定しないと意図した出力で再生されません。


上図のようにタイムラインに置いた個々のメディアは、V-Nodeの4つの出力 左上1、右上2、左下3、右下4のそれぞれに出力するために、タイムラインのプロパティー欄でそのポジションを出力したいエリアに指定して出力します。
3D空間を使った事例から

上の例のような3面を囲われた空間で、且つフロアーにも映像を出力したいという場合、先の田の字で分割したV-Nodeのポジションでは映像をうまく配置できません。レンダーサーフェースのポジションは3DキューブのUV-Mapのような展開図の位置にあるべきです。

V-Nodeの出力名は下記のように設定しました。
- Output1 Left side (赤)
- OUtput2 Front (緑)
- Output3 Right (青)
- OUtput4 Floor (黄)
Outputのカラーに合わせてソリッドコンテンツの色を揃えて、タイムラインに配置しましたが、プレビューにあるように展開図を模して並べると、青のコンテンツだけが表示されなくなります。
この例ではレンダーサーフェースの横のサイズをあと1920ひろげる必要があり、レンダーサーフェースのサイズを横幅 5760 x 2160に変更します。結果、V-nodeの個々のアウトプットにおけるMAPポジションも変更する必要が出てきます。
図にある通り、この例では青のコンテンツの位置にOutput3のMAPポジションを変更する必要があることがわかります。V-nodeのOutput3を選択し、ピクセルワークスペースの切り取り位置(XとY)を正しい位置に変更します。


3D空間のプロジェクターにOutputをMAP
先の図にある通り、平面の壁オブジェクトを3D空間に配置したので、この壁にプロジェクションを行い、実際の出力がどう見えるのかシミュレーションをするため、3D空間にプロジェクターを追加し、その出力ソースをV-NodeのOutputに設定します。
それぞれのプロジェクターのソース欄にV-NodeのOutputをドラッグ&ドロップすることで、実際の出力と同じ映像が3D空間内でも反映されます。ここではレンダーサーフェースのコンセプト解説をテーマにしているため、プロジェクターの設定詳細については言及しませんが、V-NodeのOutput一覧を表示し、そのウインドウから直接、任意のOutputの行をProjectorのプロパティー内にあるソース欄でドラッグ&ドロップするだけで、Outputのプロジェクターへの関連付けが完了します。

V-NodeのOutputが割り当てられたプロジェクターの出力は、当然ながらOutputのワープ補正が3D空間内でも表現されるため、3D空間内でワープ補正の調整が可能になるとともに、プロジェクターの位置、角度、レンズのシミュレーションが実現します。

上記の状態で、4Kサイズのコンテンツをプレビュー画面内のレンダーサーフェースに配置すると、4面全てに正しい位置で映像が出力されるのがわかります。3D空間内の3面の壁は16:9に比率を合わせて設定したため、W:8m H:4.5mになっていますが、フロアは8mの正方形になっており、プロジェクションは半分程度の範囲にとどまっています。

Kineticで取り扱う動画や写真といったコンテンツ自体は2Dです。それを配置するピクセルワークスペースは、制限のない平面の空間として認識できます。ここに映像を配置するとき、レンダーサーフェースを配置した位置が出力のための窓であり、レンダーサーフェースの位置にコンテンツは存在しなければなりません。
そして、レンダーサーフェースで定義された範囲をV-NodeのOutputで切り出すことで、リアル出力を行うことができます。今回のケースのようにキューブ状のオブジェクトへのプロジェクションにおいても、映像ソース自体は2Dであり、正しい比率とピクセルサイズで映像を配置する際に、UVマップのような形で映像を確認できるプレビュースクリーンとレンダーサーフェースは、役に立つ機能です。