調べてもそう簡単にはわからない内容。C++を使用する。
英語ができるUnreal C++の使い手なら調べて分かるかもしれんが、BP勢は死ぬ。
ちなみに僕はC++を使えないも同然の初心者。4、5日ざっと勉強した程度。
ここではC++が使える人に向けた説明をする。僕は使えないけど。
使えない人のための記事もおいおい書く。
そのときはちょっと複雑なものを実装しながら色々とカバーしようかな。
##ヘッダーファイル
当然レンダーターゲットのヘッダーファイルはインクルードする。
#include "Engine/TextureRenderTarget2D.h"
で、適当に関数を宣言する。
変数型 関数の名前(UTextureRenderTarget2D* RenderTarget, 以降任意);```
##Cppでする処理
###レンダーターゲットリソース
レンダーターゲットのピクセルの情報はUTextureRenderTarget2Dではなく、
FTextureRenderTarget2DResourceというものに格納されている。
したがって適当に変数を宣言して、引数からそいつを呼びだして格納する。
作った関数に以下のコードを記載することでそれができる。
```FTextureRenderTarget2DResource* Resource;
Resource = (FTextureRenderTarget2DResource*)RenderTarget->GameThread_GetRenderTargetResource();```
###RGBA値の取得
テクスチャの各ピクセルは配列のインデックスで、色の情報なんかはその配列の要素として格納されている。
それを取り出すために、まずこっちの方で色だけの配列を宣言する。
```TArray<FLinearColor> Color;```
その配列にRenderTargetResourceのRGB値をそのまま流し込むには以下のコードなどを使う。
```Resource->ReadLinearColorPixels(Color);```
レンダーターゲットリソースの関数にこういうのがあって、引数にFLinearColorのTArrayを入れるとその配列に色を代入していく。
色は今回FLinearColorを使ったが、FColorでも同様にいける。
Colorは一次元の配列なわけだが、これは左上のピクセルから順に色情報が格納されているので、
例えば(X, Y)のピクセルの色が欲しければ、
```float HogeHoge = Color[X + Y * Resource->GetSizeX()]```
でいける。
あとは適当に色を処理して出力すればいい。
僕はDepthを取得してそれを利用して「目に見えている空間(ヴォイド)の体積」を算出した。