アルゴンUE4/UE5&アプリ開発日記

UE4/UE5の機能やプラグインを紹介します。初心者や中級者向けになってます!!

【UE5】SceneCaptureで動的にテクスチャに投影

SceneCaptureで動的に色つけたいね!( ・`д・´)

今回はSceneCaptureを活用して動的に書く方法を、
簡単に記載していきたいと思います。
だいぶ前ですが簡単なSceneCaptureの記事もあります。

◎参考資料

https://www.youtube.com/watch?v=299LOiYvfi4&t=2543s

機能別サンプル:Blueprint_RenderToTarget

※UE5.4.3で検証しています。
※投影する処理を紹介していきます。
※画像をクリックまたはタップすると大きくできるので活用ください。

投影処理の作成

実際に投影処理を作成していきます。

まずは描画ターゲットを作成していきます。

描画ターゲットの作成

描画ターゲットの設定としてサイズを256の設定と、
描画情報を赤色のみの設定にします。

描画ターゲットの設定変更

続いてレンダリング用のマテリアルを作成します。
いつも通りコンテンツブラウザを右クリックして追加します。

マテリアルの追加

続いてマテリアルの方の動作を作成していきます。
まずはベースカラー側の動作を作成します。

基本処理としてはLerpでAが描画前のテクスチャで、
Bが描画ターゲットで塗られた箇所に適応される色になっています。
Alphaの方にどの箇所にBの色を展開するのを指定している形になります。

※テクスチャはStarterContentのテクスチャを活用しています。
 特に指定は無いので自由に設定いただければと思います。

マテリアルのベースカラー設定

描画ターゲットはテクスチャと同様にTextureSampleに指定可能なので、
TextureSampleに指定してあげてください。

TextureSampleに描画Targetを指定

続いてNormal側の側の処理を作成します。
ベースカラーと同じ処理になります。

Normal側の処理

マテリアルの設定は以上になります。
続いてBP側の設定をしていきます。
コンテンツブラウザの右クリックしてブループリントクラスを選択します。

コンテンツブラウザの設定

ブループリントクラスの中にもいくつか種類があります。
今回はアクタを選択します。

アクターを選択

アクタを選択して作成したら各種設置をしていきます。
まずはマテリアルを設定するスタティックメッシュと、
投影用のカメラであるSceneCapture2Dをアクタ上に配置します。

Actorの設定作業を行う

配置したスタティックメッシュの設定で今回Hitイベントを活用するので、
スタティックメッシュの当たり判定の設定を変更してあげます。
変更したのは下記になります。

・SimulatePhysics:ON
・Mass:動かないように400
・Simulation Generates Hit Event:ON
コリジョンプリセット:Physics Actor

StaticMeshでの設定変更

スタティックメッシュについては以上になります。

続いてテクスチャ側の変数を作成してあげます。
テクスチャレンダーターゲット2Dの変数を作成してあげます。
オブジェクト参照で作成します。

テクスチャーレンダーターゲット2Dの作成

変数として作成してあげたら最初のほうで作成した描画ターゲットを、
デフォルト値として指定してあげます。

デフォルト値を描画ターゲットに設定

これで変数や各種コンポーネントの配置設定に関して以上になります。

それでは実際に処理を作っていきましょう。
起動時に動作するBeginPlayの処理は下記になります。

1.最初のほうで作成したLerpのマテリアルをStaticMeshに設定
2.投影テクスチャの投影状態を初期化

BeginPlay時の動作を行っていく

続いてキャラクターがStaticMeshの場所を移動した際に、
その移動した場所に投影されるようにしてあげます。

下記は操作キャラが配置したスタティックメッシュにあたっている間、
投影カメラからキャラクターに向かってライントレースを飛ばしています。

ライントレースを飛ばすまでの処理

次にそのLineTraceに当たった箇所にDrawPolygonで、
当たっている箇所にTextureRenderTargetに色付けする処理になります。

LineTraceにあたった場合の動作

これで一旦処理は完了ですがFindCollisionUVを活用するためには、
プロジェクト設定の「検索結果のUVをサポート」をチェックを入れます。
これを入れないとFindCollisionUVが適応されません。

検索結果のUVをサポート

これでプロジェクトの設定やBPの設定は完了です。
レベル上に配置して実際に動かしてみましょう。
移動した箇所が水色のところになっています。

結果の確認

実際に動画で撮影したほうがわかりやすいかなと思ったので動画も撮影しました。

以上で今回行った動作の説明は以上になります。

・目次に戻る

最後に

ここまで見ていただきありがとうございました。

他にもVirtulTextureを活用したパターンでも作成可能です。

https://www.youtube.com/watch?v=YwNJUTz2L-U&t=3s

色々な作成方法を知っておくと実現可能な事が増えて行くのかなと思います。

次はアニメーション周りをやりたいところではある・・・

・目次に戻る