KSU_視点とパース/マルチプロジェクション
https://scrapbox.io/files/69f04e43fc4464f697d492fe.png
第4回はいよいよ複数画面投影をする上での、事前技術の習得を行います。
今まで行ってきたメソッドを活用して複数の画面に連続した映像を出力することを目標にします。
今日は実際に複数画面出力できる環境を用意しているので、複数画面出力を実践しながら特性を掴んで次回以降の制作に活かしていきましょう。
https://scrapbox.io/files/6a02f5235c3c134ed43186fd.png
---------------
▼今日やること
・複数画面の出力方法/シミュレーター(2画面)
・複数画面での出力作品の制作(2画面を実際に投影してテストしてみましょう。)
・本番環境シミュレーター作成(課題)
壁面投影における複数画面があることの特徴
奥行きを物理的に表現できる
鑑賞者の視野角を利用することができる
画面を大きく取れる
投影面の凹凸など物理的なテクスチャ情報を入れ込む事ができる。
などなど、通常のディスプレイではできない表現が可能になります。
また、映像が投影されることにより空間が生まれることになります。
単純に映像を投影して映像作品の提示ではなく、空間を生み出すことを意識することで表現の幅が増えるようになります。
(コラム) 鑑賞者の視野角と映像との関係性
https://scrapbox.io/files/69fe96a75c3c134ed4273944.png
https://scrapbox.io/files/69fea3b45c3c134ed42757c1.jpg
→単一投影面は鑑賞者の周辺視野には映像が入ってこない。一方で複数投影面では周辺視野に映像が入り込むため、集中的に見なくても鑑賞者の無意識的な部分にアプローチすることができるようになります。
例えば前から後ろに流れていく表現なども、映像が途切れず周辺視野まで動くため映像の中に鑑賞者が入っている感覚を得る事ができるようになります。
空間映像表現とは、実際の鑑賞者の視野角の限界まで表現の幅を広げることで"空間"を生み出す事ができる映像表現であるといえます。
複数画面を使ったプロジェクト
----------
マルチプロジェクション
まずは、TouchDesignerにおける画面出力の考え方をおさえていきます。
(事前知識1) Designer modeとPerform mode
TouchDesignerには2つのモードがあります。Designer ModeとPerform Modeです。
オペレーターを操作してネットワークを編集するのがDesigner Modeでいままでみなさんが操作していたModeです。
Perform Modeはオペレーターの編集画面を消して描画したい映像だけを出力するModeです。
Perform Modeでは、Desiger Modeで処理をしていたリアルタイムでの処理結果のプレビューを非表示にしたり描画に特化した最適化がなされるため処理速度が早くなる特徴があります。
そのため、制作物の発表など本番ではPerform Modeでの出力ができるようにしておくことが必須となります。
Perform Modeへの切り替え方法
キーボード(Win) : F1
キーボード(Mac) : F1
マウス:左上のPerform Modeボタンを押す
Perform Modeになっている状態でEsc(エスケープ)キーを押すとDesigner Modeに切り替わります。
https://scrapbox.io/files/6a00408a5c3c134ed42aba21.jpg
TouchDesignerを立ち上げて最初の状態でPerform Modeへの切り替えをするとネットワークエディタが非表示になり上の画像だけが表示されるようになります。
また、Window Placement Dialogというメニューからでもこの操作をすることができます。
Window Placement Dialogは左上のメニューのDialogのWindow Placementをクリックして呼び出します。
https://youtu.be/imx0HuHYDB0
(事前知識2) TouchDesignerでの階層の考え方
TouchDesignerにはPCのディレクトリ(フォルダの位置)のような階層構造があり、その中にオペレーターを配置しノードで接続することでネットワークを構築しています。
TouchDesignerを立ち上げて一番最初に立ち上がるネットワークエディタの上部のパスを見てみると、/project1となっていることが分かります。つまり初期状態ではproject1という階層の中にいるということになります。
https://scrapbox.io/files/6a0035965c3c134ed42aa5b3.jpg
>>>/project1が格納されている上層のディレクトリがあるようなので、上層ディレクトリに移動するために、この状態でズームアウトしてみると画像のように、
https://scrapbox.io/files/6a0035b15c3c134ed42aa5dd.jpg
project1というnameのContainer COMP
perform1というnameのWindow COMP
localというnameのContainer COMP
のある階層に移動します。そして改めて階層を見ると、/ >>となっていることが分かります。
先程のwindow placementでの操作はこのperform1というWindow COMPを操作していたことになります。
ディレクトリを分けなければ動作しないということはありませんが、ディレクトリ構造をうまく使いながらネットワークを整理することで可視性が向上し、何かトラブルが発生したときや追加で編集をしたいという時に目的の処理にたどり着きやすくなるため、階層を意識しながらネットワークを構築していくことをおすすめします。
---------------
それでは以下の練習を通じてマルチプロジェクションを実践してみましょう。
練習 :1 Window COMPを使って複数画面に映像を投影する。
TouchDesignerで映像出力する方法としてWindow COMPを使用していました。
window compは出力したい映像をパフォーマンスモードで出力したりするオペレーターで、全画面再生はwindow compのパラメーターのopen perform windowというボタンを押して全画面表示を行っていたかと思います。
投影したい映像を選択して、window compに反映して出力をしていきますが複数画面であっても基本的にはその方向でwindow compの数を増やして、どのモニターに映すかを選択すれば複数画面への投影が出来ます。
以下の動画を参考にしてまずは2ウィンドウでの映像出力処理を練習してみましょう。
https://youtu.be/02LRI9EEe7A
・SOPを高速に複製して描画する"Instancing(インスタンシング)"について
SOPオブジェクトをcopyなどで増やしたりすると処理速度が大きく落ちてしまうなど、SOPはCPUで計算されているため大量のオブジェクトを取り扱うことには向いていません。しかしたくさんの3Dモデルデータを描画したいという場合にはInstancingを活用します。
Instancingとは、1つの3Dモデル(SOP)を基にして、GPUの力で数千〜数百万ものコピーを高速に描画する技術のことです。
動画内では、物理判定のあるSphere SOPをInstancingで複製し跳ね回る挙動を作ることに活用しています。
基本的なInstancingの使い方としては、以下のように設定することで3Dモデルのコピーと描画を行います。
SOPの準備: 元となる3D形状(Box、Sphereなど)を作成。
Geometry COMPの作成: Geometry COMPを配置し、上記SOPを読み込む。
インスタンスの有効化: Geometry COMPの「Instance」タブで「Instancing」をONにする。
データ接続: 「Default Instance OP」に、位置データ(CHOP)などを接続し、対応するパラメータを割り当てる。
慣れるまで少しとっつきにくい機能ですが、Instancingを活用することで表現の幅が一気に広がるので、ぜひ活用してみてください。
---------------
練習 2 : 複数Camera compで奥行きを考慮したプロジェクションを実装してみる。
練習1では、平面的な表現を複数画面に投射するという内容でしたが、次は実際に3Dでの挙動をつくり消失点のある表現を行う際のプロジェクションの方法を練習します。以下の動画を参考にしてまずは消失点のある映像出力処理を練習してみましょう。
https://youtu.be/y1yj0GAY47s
★Point: パースが途切れないように設定をする。
camera COMPオペレーターには、FOV angle(視野角)の設定項目があります。この視野角を設定することにより奥行き感など空間的な設定をすることが出来ます。一面だけの投影であればただ設定するだけでいいのですが、2面以上の投影になると画面端をきっちり合わせなければ映像の連続性がなくなってしまいます。
そのため、camera COMPの設定をパラメーター連動型とすることで、FOV angleの設定を変更しても3面がきれいに連続性を維持するように設定することが出来ます。
設定には三角関数を応用した計算式を入力する必要があります。
練習2で使用しているカメラ位置の設定式は以下となりますので、参考としてみてください。
正面カメラにおけるtzの位置設定式
code:正面カメラtz
math.tan(math.radians(90 - op('FOV') 0 / 2)) * op('rectangle1').par.sizex / 2 https://scrapbox.io/files/6a02dfea5c3c134ed4315044.png
右壁面カメラにおけるtxとtzの位置設定式
code:右壁面tx
op('rectangle2').par.sizex / 2 - math.tan(math.radians(90 - op('FOV')0/2)) * op('rectangle2').par.sizex / 2 code:右壁面tz
op('rectangle2').par.sizex / 2
https://scrapbox.io/files/6a02e9185c3c134ed43167df.png
左壁面カメラにおけるtxとtzの位置設定式 (右壁面の画面中心の設定を逆にするだけ)
code:左壁面tx
op('rectangle2').par.sizex / 2 + math.tan(math.radians(90 - op('FOV')0/2)) * op('rectangle2').par.sizex / 2 code:左壁面tz
op('rectangle2').par.sizex / 2
-------------------
実験! :実際に2画面投影をしてみよう!
練習1や練習2で作成したプロジェクトファイルを改良して複数面投影の特徴を体験してみてください。
今回は2画面での出力となりますので、2画面投影する前提で映像作成を行ってください。
スピーカーセットも用意していますので音も流すことが出来ますので、必要であれば使用してみてください。
投影における設定は以下を参考にしてみてください。
▼投影用の設定
PC設定 : プロジェクターとPCを接続した時に画面拡張モードにしてください。
TouchDesginer設定 (画像のように設定すると全画面表示をすることが出来ます。)
Display : 投影するディスプレイを選択します。
opening Size : 全画面投影する場合はFillを選択します。
Borders : クローズボタンなどのウインドウ枠の表示/非表示を選択します。
https://scrapbox.io/files/6a02ed465c3c134ed4317621.png
-----------------
練習 3 : 複数画面出力をシミュレートする
複数画面出力は実際に機材などをセッティングしなければならず、現場での設営時間が限られているなど検証が困難な場合があります。その場合は事前にTouchDesignerでシミュレーションシステムを作成し、どのように映るかなどを手元で検証することが出来ます。
練習3では、TouchDesignerで複数画面投影のシミュレーターを作成し、見え方の検証などを実践してみましょう。
練習2で使ったphong MATに作成した映像をcolor MAPに反映させることで、映像がテクスチャとして読み込まれ3D空間上でプレビューすることができるようになります。
また、今後の課題制作においても実際に投影できるタイミングが限られていますので、シミュレーターを作れるようにしておきましょう。
https://youtu.be/rsQ2bC8iaT4
----------
課題
3面プロジェクションのシュミレーションシステムを作成してみましょう。
次週以降制作するテーマを考えてきてください。(提出物なし)