LoginSignup
0
2

More than 1 year has passed since last update.

【Unity】SpoutSyphonの紹介 ソフト間の動画転送をクロスプラットフォーム化

Last updated at Posted at 2021-05-21

はじめに

Unityの映像をTouchDesignerやOFなどにリアルタイムで転送させたい。
要はVJみたいなこと。しかも、Win/Mac両方で

どうやるか?

WindowsだとSpout、MacではSyphonが有名。
ただ、Win/Mac両方で〜となると、SpoutとSyhonの入れ替えが必要。
入れ替えるの面倒くさい。。。

ということで、OS判定で切り替わる SpoutSyphon という仕組みを作りました。


少し解説

Unity用のSpoutはこちらが解説が詳しいです。
TouchDesignerでの受信方法も書いてあります。

Unity Japanのkeijiroさんが素晴らしいUnity用プラグインを公開されているので、それをOS判定で切り替えます。詳しいインストール手順はSpoutSyphonのReadMeをご覧ください。

KlakSpout
KlakSyphon

用語の統一

SpoutSyphonを作るにあたって、用語をSpoutのものに統一しました。
送信側をSender、受信側をReceiver としました。
(Syphonではそれぞれ ServerとClient)
senter_receciver.png

機能の統一

機能も統一しました。こちらは2つの良いとこどりをしています。

キャプチャモード

キャプチャモードとして、CameraCaptureModeRenderTextureMode がありますが、KlakSyphonではMetalとの相性のため RenderTextureMode が使えません(2021年5月現在)。明示的にするため、SpoutSyphonではCameraCaptureModeのみサポートしています。

Senderセレクター

KlakSpoutはUnityEditor上の機能が充実していて、Senderを選択するセレクターがあります。
SpoutSyphonでは、ランタイム上にプルダウンメニューのセレクターを表示するようにしました。
スクリーンショット 2021-05-14 17.01.43.png

SenderName

SpoutSyphonでは、Syphonの命名規則を取り入れ「AppName:SenderName」となります。
(通常のSpoutでは「AppName」は付かない)

UnityEditor上で再生している場合は、「Unity:SenderName」となります。
これにより、SenderNameの重複を避けやすくなります。また、もしフルSenderNameが重複した場合は受信できなくなるので、エラーログを出すようにしました。

拡張した機能

より使いやすくするために。

解像度の指定

フレームレートを安定させるために、Sender/Receiverの解像度を変えたいことがあります。
SpoutSyphonでは、インスペクターで解像度を指定できるようにしました。指定した解像度のレンダーテクスチャーは自動生成されるので、あらかじめレンダーテクスチャーを用意しなくてよくなりました。

AutoConnect

SpoutSyphonでは、Receiverで指定したSenderNameに自動接続します。この時、AppNameは評価しません。通常、ReceiverからPullする必要がありますが、AutoConnectをOnにすると接続するまでポーリングし続けるので、SenderからPushすることが可能です。
receciver_autoConnect.png

おわりに

元々は、Spout用に作った AutoConnect 機能をSyphonに移植しようとしたのが始まりでした。結果として、クロスプラットフォーム化することで、今後も拡張機能を追加しやすい仕組みになったと思います。
また、SpoutSyphonのスクリプトをアタッチするだけで使えるようになっているので、WinだけMacだけの人にもオススメです。

使ってみた感想などをいただけると励みになります。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2