読者です 読者をやめる 読者になる 読者になる

simplestarの技術ブログ

目的を書いて、思想と試行、結果と考察、そして具体的な手段を記録します。

UnrealEngine4でUTexture2Dをシステムメモリから更新する

Unreal Engine

まず Unreal Engine 4 ではマテリアルに適用するテクスチャは UTexture2D というものだそうです。(調べただけでまだ触っていない)
基本的にはGPU側で超並列演算を行うもののようですが、特別にシステムメモリのbyte配列からテクスチャの内容を更新するUpdateTextureRegions関数が定義されています。(正しく動くかは知らない、調べただけ)

関連して C++ から WebCam にシンプルにアクセスするには
www.iki.fi/sol - Code - ESCAPI
が知られていて、ライセンスフリーでカメラの解像度を決定できて
各種カメラパラメータを手動 or オートで切り替えられつつ、サンプル時におそらく argb の int 値配列を返すもののようです。(日本語が変でごめん、情報が正しく伝わればよいので、書き換えず、そのままにしてます。)

escapi は IMFSourceReaderというDirectShowの後継を利用していて、ソースも公開されていて、そのバッファを書き込んでいるコードを見ると
https://github.com/jarikomppa/escapi/blob/master/escapi_dll/capture.cpp
どうも、一段不要かもしれない for 文を回して書き込みを行っている箇所があったので
各自、ここを独自に高速化するように書き換えてカメラ画像情報を受け取れるようにすると良さそう。

あとはこれらの知識をつないで、Unreal Engine にて簡易に画像ビューア、コンピュータビジョンを用いたゲームを組めます。

実際に動かしてみないと、調査内容は信用できないので、実際に動いたら追記します。
という、ただの個人メモ