Flow-Developers

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

UE5でComposureを使って、BlenderのCycleみたいにShadow Catcher(影をレンダリングする)を作り、背景画像プレートに影を落とす

BlenderのCycleでレンダリングすれば、Shadow Catcher(影をレンダリングする)は簡単なのですが、UE5で同じようなことをやる方法が、Composureを使うと良かった(それ以外にまともな方法がなかった)ので書きます。

  • (Blenderでも同じですが)影を落とすためには、床が必要なので作ります

  • ComposureだとAplhaチャネルを作るために、壁も必要なのでそれも作ります。Planeを選択して「Eキー」を押して、「Altキー」を押しながら回転すると複製が簡単です

  • CineCameraActorを配置しておきます(後工程で、Composureと連動させるためです)

  • Windows -> Virtual Production -> Composure Compositingと選択して、Composureを設定するWindowを開きます

  • Windows -> Layersと選択して、Layerを設定するWindowを開きます (ImageやCGのレイヤをこれで作れます)

  • 空のPlaneに任意の画像テクスチャを貼り付けて、CineCameraActorと親子関係にすることで、カメラの向きと連動したPlateを作ります

  • Create New Compで、Composureにレイヤーを作っていきます

  • ComposureにMedia Plateのレイヤーをつくり、「media_plate1」として画像テクスチャを貼り付けます。これが合成画像の背景となります。

  • Composureに3つ、CG Layerを作ります。前景CGを定義する「FG」、影を描画する床と壁を定義する「Floor」、「FG」と「Floor]の差分を取って影を定義する「Shadow」とし、この群が合成画像の前景となります。

  • Layersに3つ、Layerを作ります。(Composureに設定するためのレイヤーです)前景CGを定義する「FG」、影を描画する床と壁を定義する「Floor」、「FG」と「Floor]の差分を取って影を定義する「Shadow」とし、この群が合成画像の前景となります。(LayerはそのActorを選択した状態で、作れます。「Floor」と「Shadow」は同じActor群で良いです)

  • Composureに戻り、上記で作成した「FG」「Floor」「Shadow」のレイヤーをInputに紐づけます

  • 「Shadow」は、Inputに「FG」「Floor」の2つを紐づける必要があります。これは影を差分として取得するためです

  • 上記までのレイヤー作成とComposureのinputへの紐づけて、合成画像を作るための素材は揃いましたが、合成画像を完成させるためには、ComposureのTransform Compositing Passesに、各素材(レイヤーをComposureのinputへの紐づけるとTexture2Dとして扱える)をどう合成するかをBluePrintで記述したMatelialを作成し、紐づける必要があります。そのためにまずM_Compositeという名で空のMaterialを作ります

  • M_Compositeと名付けたマテリアルを開き、Material DomainをPost Processにします。これはこのマテリアルが合成用であるためです(Material Domainについては参考文献をお読みください)

  • M_Compositeと名付けたマテリアルで、前景に「FG」、後景に「media_plate1」と、「FG」&「Shadow」の差分から得た影成分を合成するBulePrintを記述します。(詳細は参考文献をお読みください)

  • M_Compositeと名付けたマテリアルを、ComposureのTransform Compositing Passesに紐づけます

  • 以上の工程を得て、前景「FG」と後景に「media_plate1」と、「FG」&「Shadow」の差分から得た影成分を合成した画像が生成できました

  • ComposureのOutputを設定することで、今回生成した合成画像をどこに出力するかを選択できます。今回はViewPortに出力する設定を行いました

  • ComposureとCineCameraActorを紐づけることで、カメラと連動して動かせます

  • 無事、ViewPortにComposureで合成した画像が出力できました!

UE5でComposureを使って、BlenderのCycleみたいにShadow Catcher(影をレンダリングする)を作り、背景画像プレートに影を落とせる様にするためには、UE5におけるMaterial、BluePrint、Texture、Project settingの知識といった総合的な知見が必要で、UE5の文法がなにもわからないまま、Composureを扱うのは難しいと思います。まずは、CGのみでMaterial、BluePrint、Texture、Project settingの知識をそれぞれ蓄えてからトライすると良いと思います。

参考文献

www.youtube.com

dev.epicgames.com

dev.epicgames.com