C++ ときどき ごはん、わりとてぃーぶれいく☆

USAGI.NETWORKのなかのひとのブログ。主にC++。

Metasequoia と RenderMan とカラープロファイル。 It で暗く出力されちゃって途方に暮れないための手順メモ

Metasequoia + RenderMan の連携機能で遊んだら出力画像が暗くなってしまって「なんでーー😂」ってなった。そうならない方法がわかったのでメモ。

問題の現象

f:id:USAGI-WRP:20190304215513p:plain

悲しい😥

何が起きているのか?

MetasequoiaRenderMan 連携機能でデフォルトになっている出力方式の Itレンダリングし、 It で出力結果画像を Export File すると PNG でも JPEG でも TIFF でも色味が暗くなってしまう。

原因はカラープロファイルで、 It ではデフォルト状態でレンダリング結果の LinearsRGB へ変換して表示してくれている。これは It のメニューの View から設定を変更できるので、切り替えて表示を確認してみると Export File で発生した暗くなる問題の原因がこの問題に起因するものという事はわかる。

わかるのだけど、どうやら It では PNG, JPEG, TIFF での出力にカラープロファイルを埋め込んでくれたり、 sRGB へ変換した上で保存してくれたりする機能はなさそう😥

EXR ( OpenEXR )形式で Export File すれば Linear の全域をそのまま出力できるので、 Krita などで開いて PNG など最終的な出力を得れば…と、思ったのだけど、

f:id:USAGI-WRP:20190304221003p:plain

とりあえず開いてみたら真っ白でしょんぼり。レイヤーを見ると "a" の名称で真っ白なレイヤーがあり、その下に "Ci" の名称で階層化された "000", "001", "002" の3つのレイヤーがあった。

f:id:USAGI-WRP:20190304221134p:plain

どうやら Alpha, Red, Green, Blue をレイヤーとして分離出力したファイル…として認識されたらしい。他の EXR 形式対応のアプリで開いても同様だったところで EXR 形式の仕様を思い出してみてなんとなく納得した。つまり、 EXR で出力して、それを既存の一般的なラスターイメージ向けのアプリで変換するというのはめんどくさい…。できない事は無いが…😥 もちろんプログラマーさん的には変換アプリを作る事は EXR のライブラリーを使えばそんなに難しくはない…が…「既にそこにあるはずの絵」のためになぜ…という思いが…。つまりめんどくさい😥

この時点で思い付いたもっとも簡単ななんちゃって解決方法としては、「 ItPNG 出力して、画像編集アプリのレベル補正、ガンマ補正的な機能でぐいっと適当に調整する」というのもあるけれど、どうも既にできている出力画像を変換作業を手でやるめんどくささ+せっかく大域照明レンダリングしておいて情報損失しちゃうの勿体無い…というお気持ちでもんにょり。

そもそもの解決方法

問題は「 It または It から先でどうするか」だとばかり思ってしばらく悲しんでいたのだけど、「 It より前」に解決方法があった😃

f:id:USAGI-WRP:20190304222019p:plain

  • MetasequoiaRenderMan 連携機能のツールウィンドウの出力を It ではなく ファイル にする。

それだけの事だった😂

そうするとレンダリング途中経過の画像表示は行われないし、保存可能なファイル形式も BMP, PNG, JPEG, TIFF に変わるのだけど、 LinearsRGBレンダリング段階で既に完了した状態での出力となるのでカラープロファイル問題が起こらなくなる。

f:id:USAGI-WRP:20190304222338p:plain

意図した色味できれいな PNG ファイルを直接出力できました😃