11.

UE5のCreate Render Target 2Dの使い方|動的な描画先テクスチャの作り方

編集

Create Render Target 2Dは、ゲームの実行時(ランタイム)にRender Target(描画先となる2Dテクスチャ)を動的に生成するノードです。あらかじめコンテンツブラウザでアセットを用意しておかなくても、Blueprintから指定した解像度・フォーマットの空のRender Targetをその場で作り出せます。生成したRender Targetは、Scene Capture 2Dのキャプチャ先や、Draw Material to Render Targetなどの描画ターゲットとして使い、その結果をマテリアルやUIのテクスチャとして利用します。本記事では、このノードの引数と戻り値、基本的な使い方の流れ、典型的な用途、そしてアセットを事前作成する方法との違いや注意点までを解説します。

この記事の要点
  • Create Render Target 2Dは、実行時にRender Target(描画先テクスチャ)を動的生成するBlueprintノード。
  • 主な引数はWidth / Height(解像度)とFormat(ピクセルフォーマット)。戻り値はTexture Render Target 2Dオブジェクト。
  • 生成後はScene Capture 2DDraw系ノードで中身を描画し、マテリアルやUIのテクスチャとして参照する。
  • ミニマップ・鏡や水面の反射・ゲーム内カメラ映像・スクリーンショットなど、動的なビジュアルで活躍する。
  • 解像度を上げすぎるとVRAM(GPUメモリ)と描画負荷が増える。毎フレーム生成し直さず、一度作って使い回すのが基本。

Render Target 2Dとは

Render Targetとは、エンジンが「描画先」として書き込めるテクスチャのことです。通常のテクスチャ(インポートした画像など)が読み取り専用の静的なデータであるのに対し、Render Targetはカメラのキャプチャ結果やマテリアルの描画結果をリアルタイムで受け取れる、いわば「動的に中身が変わるキャンバス」です。GPU上に確保されるため、書き込んだ内容をそのままマテリアルのテクスチャとして読み出して画面に表示できます。

Texture Render Target 2Dはその名のとおり2次元(平面)のRender Targetで、ミニマップや鏡など平面的な用途に使います。これに対して周囲360度をキャプチャするCube版(Texture Render Target Cube)も存在しますが、本ノードが扱うのは2Dの方です。

このノードの引数と戻り値

Create Render Target 2Dノードの入力(引数)と出力(戻り値)は次のとおりです。なお、引数の既定値や公開状況はUE5のバージョンで差があるため、エンジン上で実際のピンを確認してください。

ピン 役割
WidthInteger生成するRender Targetの横の解像度(ピクセル)。
HeightInteger縦の解像度(ピクセル)。
FormatRender Target Format(enum)ピクセルフォーマット。色の精度やチャンネル数を決める(後述)。
Clear ColorLinear Color生成直後にRender Targetを塗りつぶす初期色。
Auto Generate Mip MapsBooleanミップマップを自動生成するかどうか。
Support UAVsBooleanコンピュートシェーダー等からの書き込み(UAV)を許可するか。通常はオフ。
Return ValueTexture Render Target 2D生成されたRender Targetオブジェクト。以降の処理で参照として使う。

このノードは内部的にはKismet Rendering Library(描画系の関数ライブラリ)に属する関数で、指定した寸法で初期化された新しいRender Targetを返します。返ってきたReturn Valueを変数に保存しておき、描画やマテリアルへの受け渡しに使い回すのが基本的な流れです。

Format引数の主な選択肢

Formatはテクスチャ1ピクセルあたりの色の表現方法を決めます。代表的なものは次のとおりです。フォーマットによってメモリ使用量と精度が変わります。

  • RTF_RGBA8: 各チャンネル8ビット(RGBA)。一般的なカラー表示向けで、メモリ効率が良い標準的な選択肢。
  • RTF_RGBA16f: 各チャンネル16ビット浮動小数点。HDRや高精度が必要な場面向け。
  • RTF_RGBA32f: 各チャンネル32ビット浮動小数点。最も高精度だがメモリ消費は大きい。位置情報など高精度データの格納にも使われる。
  • RTF_R8 / RTF_R16f / RTF_R32f: 赤1チャンネルのみ。マスクや高さ、スカラーデータの格納に向く。

用途に対して精度が過剰なフォーマットはメモリと帯域の無駄になります。通常の見た目用ならRGBA8、HDRや計算用途で精度が要るならRGBA16f以上、という選び方が目安です。

使い方の流れ

Render Targetは「①作る → ②中身を描く → ③表示・利用する」の3ステップで使います。Create Render Target 2Dが担うのは①の部分です。

  1. 生成する: Begin PlayやコンストラクションなどでCreate Render Target 2Dを呼び、Width / Height / Formatを指定してRender Targetを作る。戻り値を変数に保存する。
  2. 中身を描画する: 生成したRender Targetを描画先として渡す。代表的な方法は次の2つ。
    • Scene Capture Component 2Dの「Texture Target」に設定し、シーン内のカメラ映像をキャプチャする。
    • Draw Material to Render TargetBegin / End Draw Canvas to Render Targetで、マテリアルや図形・テキストを直接描き込む。
  3. 表示・利用する: 描画されたRender Targetを、マテリアルのTexture Sample(Texture Object)に渡してメッシュに貼る、またはUMG(UI)のImageブラシに設定して画面に表示する。

// 概念的な処理の流れ(擬似コード)

MyRT = CreateRenderTarget2D(Width=512, Height=512, Format=RTF_RGBA8)

SceneCapture.TextureTarget = MyRT  // このRTにカメラ映像を描く

Material.SetTextureParameter("Screen", MyRT)  // 描いた結果をマテリアルで表示

典型的な用途

  • ミニマップ: 真上に置いたScene Capture 2Dの映像をRender Targetに取り込み、UMGのImageとして画面隅に表示する。
  • 鏡・水面の反射: 反射用カメラの映像をRender Targetへキャプチャし、鏡面マテリアルのテクスチャとして使う。
  • ゲーム内カメラ映像・モニター: 監視カメラやバックミラーなど、別視点の映像をワールド内のスクリーンに映す。
  • スクリーンショット・サムネイル: キャプチャ結果のRender Targetをテクスチャや画像ファイルとして書き出す。
  • プロシージャルな描き込み: Draw系ノードで足跡・ダメージ・落書きなどをRender Targetに蓄積し、マテリアルで反映する。

アセットとして事前作成する方法との違い

Render Targetは、本ノードで実行時に作る方法のほかに、コンテンツブラウザで右クリック →「Render Target」アセットを事前に作っておく方法もあります。両者は中身は同じTexture Render Target 2Dですが、性質が異なります。

観点 Create Render Target 2D(実行時生成) アセットとして事前作成
解像度・フォーマット実行時に変数で動的に決められるアセットに固定(事前設定)
必要な数プレイヤー数や状況に応じて可変に作れるあらかじめ用意した数だけ
マテリアルからの直接参照変数経由でセットする必要があるマテリアルに直接ひも付け可能
管理のしやすさコードで管理(破棄の考慮も必要)アセットとして可視・再利用が容易
向いている場面数や解像度が動的に変わる場合固定的・少数で済む場合

解像度やフォーマットを状況に応じて変えたい、必要な枚数が実行時まで決まらない、といったケースでは本ノードの動的生成が有効です。逆に、固定の1枚をマテリアルへ直接ひも付けたいだけならアセットを事前作成する方がシンプルです。

落とし穴と注意点

注意点 内容
解像度とメモリRender TargetはGPUメモリ(VRAM)を消費する。解像度を倍にすると面積は4倍になりメモリも増える。表示サイズに見合った解像度に抑える。
フォーマットの過剰指定通常の見た目用にRGBA32fを使うとメモリと帯域を浪費する。必要な精度に合わせて最小限のフォーマットを選ぶ。
毎フレーム生成しないTickなどで毎フレームCreateを呼ぶと、その都度新しいRender Targetが作られ無駄が大きい。一度作って変数に保持し、再利用する。
更新頻度の制御Scene Captureは負荷が高い。常時更新が不要なら、必要なタイミングだけキャプチャする設定にして負荷を下げる。

FAQ

Q. 作ったRender Targetをマテリアルに表示するには?
A. マテリアル側にTexture Object(テクスチャ)パラメータを用意しておき、Blueprintで作成したマテリアルインスタンスにSet Texture Parameter Valueで戻り値を渡します。そのマテリアルをメッシュやUIに適用すれば、Render Targetの中身が表示されます。

Q. Render Targetが真っ黒・何も映らないときは?
A. 「描画する」ステップが実行されていない可能性が高いです。Scene Captureの「Texture Target」に作成したRender Targetを設定しているか、キャプチャが実行されているか、対象がカメラの画角内にあるかを確認してください。それでも不明な場合は公式ドキュメントの確認を推奨します。

Q. 解像度はどう決めればよい?
A. 最終的に画面へ表示されるおおよそのピクセルサイズが目安です。小さく表示するミニマップに4Kは不要です。256~1024程度から始め、見た目とパフォーマンスのバランスを見て調整するとよいでしょう。

まとめ

Create Render Target 2Dは、実行時に描画先テクスチャを動的生成するためのノードです。Width / Height / Formatで仕様を決めて生成し、戻り値のTexture Render Target 2DをScene CaptureやDraw系で描画して、マテリアルやUIで利用します。ミニマップ・反射・カメラ映像・スクリーンショットなど用途は広い一方、解像度とメモリ・フォーマット選択・毎フレーム生成の回避といった点に気を配ることで、品質と性能を両立できます。引数の既定値や挙動の細部はUE5のバージョンで差があるため、最終的な確認はエンジン上のノード表示と公式ドキュメントで行ってください。

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. Event BeginPlay
  2. Event ActorBeginOverlap
  3. Event Tick
  4. on component begin overlap
  5. On Component Hit
  6. CameraBoom(Spring Arm)
  7. Get Player Character
  8. Nav Mesh Bounds Volume
  9. AI MoveTo
  10. Pawn
  11. Create Render Target 2D
  12. Take High Res Screenshotノード
  13. Sphere Reflection Capture
  14. Event Tickノード
  15. ウィジェットのキャンバスパネル
  16. DefaultSceneRoot
  17. FloatingPawnMovement
  18. Set World Rotation
  19. Event Any Damage
  20. Set World Rotation
  21. VInterp To
  22. Get Socket Transform

最近更新/作成されたページ