Edited at

Unity→TouchDesigner 画面キャプチャ送信覚書

@_kiryoです。


Unity画面送信の基本

UnityとTouchDesignerをつなぐときにはkeijiroさんの下記を拝借します

keijiroさんgit

①表示したいカメラにspout(syphon)senderスクリプトを配置

②touchdesignerでsyphon/spout inのオペレーターを置く

これで簡単にTouchで受信できたのですが、解像度ががびがびでした。


綺麗に受信するチェックポイント

①syphon/spout inのcommonをuseinputにしているか

→custom resolutionではなく、useinputにして、受信したデータに依存するようにする

②spout(syphon)senderをカメラではないオブジェクトにアタッチする

→これがポイントでした。

keijiroさんのドキュメントをよく見れば(英語で)書いてあるのですが、

カメラにsenderをアタッチすると、自分が使っているディスプレイの解像度に依存してしまいます。

そのため、UnityのヒエラルキーにEventManagerなど適当なGameobjectを作って、そこにアタッチします。


render textureの設定

spout(syphon)senderをカメラ以外に設定すると、source textureという項目が現れます。aaaaa.png

unityには、テクスチャとして画面の情報をリアルタイムで保持するrender textureという機能があるようです。

①unityの画面で、マテリアルを作るときのように、assetファイルに新しくrender textureというファイルを作成します。

②作成したrenderのinspectorを表示させ、解像度をフルHDに設定します。

③表示させたいカメラオブジェクトをみると、カメラコンポーネントのinspectorに、target textureという項目があるので、そこに作成したrender textureを設定します。

Unityを再生した状態で、TouchDesignerも再生し、オペレーターの通信のトグルをonにすると、綺麗な解像度でUnityからの画面を受信することができます。

おしまい