LoginSignup
4
1

More than 3 years have passed since last update.

UE4 Editor上のBlueprintでテクスチャアセットを自動生成する

Last updated at Posted at 2020-11-19

UE4.25.4のEditor上のBlueprintでSceneCaptureComponentで撮影した画像をテクスチャアセットとして保存してみたのでそのやり方をメモしておきます。

以下のような512x512のテクスチャを自動で生成していきます。
背景部分は透明になるようにしています。
capIcons.PNG

撮影用のアクタ

以下のような撮影用のアクタを作成し、マップに配置しています。

capActor.PNG

  • StaticMesh:撮影対象
  • CaptureImageComponent2D:イメージの撮影用SceneCaptureComponent2D
  • capimagecapture2d.PNG
  • CaptureDepthComponent2D:ScneneDepth撮影用(デプスによって背景を透明にする)のSceneCaptureComponent2D
  • capdepthcapture2d.PNG

アルファ値を取得する別の方法

以下のような方法もあるみたいです。
デプスじゃなくてこちらを利用してもいいかもです。
[UE4]アルファ付きキャプチャー画像の簡単作成|株式会社ヒストリア

RenderTargetの設定

撮影用アクタのBeginPlayで以下のようにRenderTargetを設定しています。

capRenderTarget.PNG

TargetGammaを2.2にしているのは以下の記事を参照しています。
[UE4]インゲーム画像キャプチャに便利なノード「Export to Disk」の紹介|株式会社ヒストリア

デプス用のRenderTargetについて

最初RGBA8にしていたらRにちゃんと値が入っていませんでした。
RGBA32fで正常にデプスが取得できました。

背景を透明にする用のマテリアル

イメージとデプスのテクスチャから背景が透明なテクスチャをDrawMaterialtoRenderTargetで生成するための以下のマテリアルを作成します。

capmaterialSetting.PNG

capMaterial.PNG

撮影処理

撮影アクタでの撮影処理のBlueprintは以下のようになります。
StaticMeshを良い感じに設定してこの撮影処理を実行していきます。

bp.PNG

DrawMateriltoRenderTargetでのアルファ値

DrawMaterialtoRenderTargetについては以下を参照
ブループリントおよびレンダー ターゲットでテクスチャを作成する方法 | Unreal Engine Documentation

DrawMaterialtoRenderTargetを何の気なしに使うとアルファ値を正しく使ってくれずにすべて透明になったりしました。
下記のサイトを参照して以下のようにしています。

  • 使用するマテリアルのBlendModeはAlphaCompositeにする
  • Opacityは通常と反転させて扱う(1が透明、0が不透明)
  • 事前にRenderTargetは(0, 0, 0, 1)でクリアする

Draw Material To Render Target node has inverted alpha - UE4 AnswerHub

RenderTargetCreateStaticTextureEditorOnlyについて

RenderTargetアセットを右クリックしてCreateStaticTextureをするようなことができます。
作成したアセットはSaveしておかないとEditorを再起動すると消えてしまうようです(何回かやらかした)。

NameをIcons/TextureなどとするとContentフォルダ以下にIconsフォルダが作られTextureアセットが中に生成されました。
名前のみだとBlueprintと同じ階層にアセットが生成されるようでした。
すでにアセットが存在するとプレフィックスがついてインクリメントされていきます。

4
1
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
4
1