Flow-Developers

Raspberry Pi, Raspbian, python, ROS, IoT, 電子工作, 機械学習, Deep learning, ライフハック

UE4でカラーコレクションする(実践編)

はじめに

  • UE4でのカラーコレクションについて.
  • 色再現の異なる複数のカメラデバイスとCGを合成する場合に必要. www.unrealengine.com


LUTCalc

  • .cubeの3DLUTが生成できる.
  • ここで生成した3DLUT.cubeをUE4上で正確に反映させたい. cameramanben.github.io

UE4のLUTテクスチャ

  • UE4では,256x16のLUTテクスチャを使って, カラーコレクションを行うことが出来る. docs.unrealengine.com

LUTテクスチャのリファレンス

  • LUTテクスチャは0-255のRGB階調(Linear値)を16分割した画像.
  • UE4公式からDownload出来るが,内容を理解すため, コード化した.

f:id:flow-dev:20200310080538p:plain https://docs.unrealengine.com/Images/Engine/Rendering/PostProcessEffects/UsingLUTs/RGBTable16x1.png gist.github.com

LUTテクスチャのGammaとGamut

  • UE4上で動作検証した結果,デフォルト設定だと以下の通り.
  • UE4上はsRGB空間のRGB値扱いになっているので,その差分を3DLUT.cubeで生成すればよい.
  • LUTCalcで,Gamma:All->Linear/γ->sRGB(γ2.2), Gamut:All->sRGBを入力とする(出力はお好みで.)
Gamma Gamut
sRGB(γ2.2) sRGB

REDGamma4, REDColor4をターゲットに生成したLUTテクスチャ

  • REDGamma4, REDColor4をターゲットにLUTテクスチャを生成した.
  • UE4でテクスチャが適正露光になっている状態. ポストプロダクションはすべてオフ.

f:id:flow-dev:20200310082549p:plain

LUTテクスチャをUE4に取り込むときの注意

  • LUTテクスチャのpngファイルを取り込み後, Level Of Detailの設定を以下とする.(これをしないと正確に反映されない)
Level Of Detail
Mip Gen Settings -> NoMipmaps
Texture Group -> ColorLookupTable

f:id:flow-dev:20200326101414j:plain

UE4上で現像した結果

LUTなし(デフォルト色)
f:id:flow-dev:20200310082710p:plain
LUTあり(REDGamma4/REDColor4)
f:id:flow-dev:20200310082757p:plain

UE4とLUTCalcの結果を比較検証

  • UE4のLUTなし(デフォルト色)をUE4スクリーンショットした画像をLUTCalc上にLoadして,LUTCalc上でREDGamma4/REDColor4を掛ける.同一ソース画像を,UE4上でLUT現像した画像と,LUTCalc上でLUT現像した画像の比較結果.
  • Look上でほぼ一致していることを確認.

f:id:flow-dev:20200310083231p:plain

まとめ

  • LUTCalcで生成したLUTをUE4上で再現することが出来た.
  • これで,色再現の異なる複数のカメラデバイスとCGを合成する場合のカラーコレクションが容易となる.

付録

  • 出力値確認用のカラーチャート f:id:flow-dev:20200326101718p:plain

  • ffmpegで3DLUTを充てるコマンド

ffmpeg -r ntsc-film -i %d_img_rgb.png -y -threads 0 -b:v 100M -g 1 -vsync 1 -pix_fmt yuv420p -vcodec libx264 -r ntsc-film -vf lut3d="REDGamma4_REDColor4_0-Native.cube" output.mp4

参考リンク