Flow-Developers

Raspberry Pi, Raspbian, python, ROS, IoT, 電子工作, 機械学習, Deep learning, ライフハック

UE5でNDIを受信して、ImagePlateに貼る

UE5のImagePlateは、CineCameraActorの画角と連動するので便利です。このImagePlateにNDI映像を貼る手順について書きます。

  • ImagePlateのプラグインをONにする(UE5を再起動する)

  • NDIのプラグインをONにする(UE5を再起動する)※NDIのインストール方法は参考文献を参照ください。

  • ImagePlateをレベルに配置する

  • ImagePlateをCineCameraActorに紐づける。ImagePlateの位置と回転をカメラと正対するように調整する

  • NDI Media Reciverを作成する(受信するNDIデータと参照するDI Media Texture 2Dをこれで指定できる。名前は任意でOK)

  • NDI Media Texture 2D を作成する(これにNDI映像が画像テクスチャとして貼られる)

  • NDI Media ReciverにNDI Media Texture 2D を指定する

  • ImagePlateに貼り付けるための空のMaterialを作る(名前は任意でOK)

  • 上記で作った空のMaterialに先に作ったNDI Media Texture 2Dを紐づける(ImagePlateは通常のMaterialしか貼れないので、NDI Media Texture 2Dを貼りなおす感じ)

  • NDIはRGBAにも対応しているので、Material設定で「Output Alpha」をONにしておく。そうするとOpacity(AplhaCHの繋ぎ先)が出来る

  • Material設定は、Material Domain -> Post process, Blend mode -> Translucent, Shading model -> unit, Two Sided=onにしておく。これでRGBAを受けられるので、RGBをEmmisive colorに、AlphaをOpacityに繋ぐ

  • ImagePlateに上記で作ったMaterialを紐づける(参考画像では、NDI_Materialという名前にしている)

  • (手続き的な事実として) NDI Receive Actorをレベル上に配置しておかないとNDIが上手く受信できないので、配置する

  • NDI Receive ActorをCineCameraActorの画角外の遠いところに置いておく(NDIを上手く受信するために手続き的な事実として置いているだけなので)

  • Game Playすると、NDI受信した映像が正しくImagePlateに反映される

  • ImagePlateの位置Xを前後させれば、CineCameraActorの位置からとある距離にImagePlateを置くことが出来、それが2D映像の位置となる

  • ビューポートの解像度を1080以上に設定することも忘れずにやっておく

以上で、UE5でNDIを受信して、ImagePlateに貼ることが出来る。

参考文献

dev.epicgames.com

ndi.video

riragon.com

zenn.dev

m-designx.com