background

無理矢理シャドウキャッチ。

2016年11月11日(Fri)

十分な光量のあるHDR画像はそのままで完全な光源として使える。歪みの少ないHDR画像はそのまま背景画像として使うこともできる。撮影された視点の高さと3D内でのカメラの高さ、パノラマ球の中心の高さを合わせればパースもきっちり合わせることができる。

すると問題になるのが地面との接触部分だ。パースは合ってても実際には宙に浮いているから、影が足元に落ちない。Superflyのマテリアルはシャドウキャッチャーに対応していないから、地面に落ちる影だけをレンダリングすることもできないのだ。

161111-01

じゃあどうしよう。影だけFireflyでレンダリングしようか。ところが、Fireflyのシャドウキャッチャーや影のみレンダは、ライトによる影は描画できても、HDR画像から「光が当たっていないこと」によって生じる影は描画できない。似たようなライトセットを組んでその影を取得することもできるだろうが、今ひとつパノラマHDRIの長所が活かせない。

おおもとのCyclesレンダラではどうしているのだろう。調べてみたら、Blender界隈ではレンダリング結果を複数枚コンポジット(合成)する方法を紹介していた。ということはマテリアルでシャドウキャッチはできないのだろう。そしてCyclesが対応していないということは、Superflyが対応する見込みも少ないということだ。

仕方ないので、後処理で無理やり影を抽出することにする。自分が使っているのはPhotoshop CC 2017。

161111-02

用意する画像はこの4枚。それぞれ(A)被写体と背景、(B)被写体と背景と地面、(C)背景と地面、(D)被写体のみのアルファチャンネル。このうち、少なくともBとCは設定を変えずにレンダリングすること。でもってAが最終的に使用する被写体の画像になる。影を描画する地面はとりあえず拡散色のみの真っ白にしておく。試してないけど地面に近い色を塗っておいた方がいいかもしれない。

わざわざAとBを分けてレンダリングしなくても、Bを切り抜けばいいんじゃないかと思うだろう。しかし地面を表示すると、地面からの照り返しによって下方向からの照射が変わってしまう。

161111-03

それに透過や反射が設定されていた場合は結局Aを別レンダして合成することになる。なので結局3枚+αが必要になる。ちなみにA~CはHDR(.exr)で保存、DはPhotoshop形式(.psd)で保存している。

ではまずBとCをPhotoshopで開き、C(背景と地面)をコピーしてB(被写体と背景と地面)の上に重ねる。もちろん32bitモードのままで構わない。で、上層のCのレイヤーの描画モードを除算にする。

161111-04

すると同じ色のピクセルは白(=100%)に、下のレイヤーより明るい色のピクセルは暗い色になる。つまり背景画像や地面の影響を取り除いた、影の成分だけを抽出できる。そこでこの二枚のレイヤーを結合して(B÷C)、A(被写体と背景)の上に重ね、さらに描画モードを乗算にする。

161111-05

これで影を重ねることができた。影以外の余計な部分も重なってしまっているので、まず大まかに影が落ちていない不要な部分を選択し消去する。

161111-06

それからD(被写体のみのアルファチャンネル)を選択範囲メニューの「選択範囲を読み込み」で反転して読み込み、マスクを作成する。

161111-07

あとは細かいところを修正する。形状によっては若干マスクと影の隙間が開いて見える場所があるので、影レイヤーのマスクを選択した状態で属性パレットの「選択とマスク...」ボタンをクリック。

161111-08

「エッジをシフト」スライダーを動かしてマスクのグレーな部分を調整し、目立たなくなったところでOKをクリックして完成。

161111-09

あとはレイヤーを統合して露出補正とか。

161111-10

これだけの作業なら32bitモードのままで完結できる。HDRで保存して32bitモードで操作するとのメリットは、白よりも明るい値を扱えること。つまり被写体によって生まれた影だけでなく、被写体から拡散反射によって明るくなった照り返し部分も同時に乗算することができる。あとは合成後に露出調整できることかな。

161111-11

Photoshopによる合成は単に差分を抽出するだけなので、HDRIを使わない場合やライトを任意で追加した場合にも使える。もちろんFireflyレンダにも使えるので、覚えておいても損はないんじゃないかな。

というわけで、ちょっと手間暇かかるけど影の合成もできますよ、というお話。



HDR保存のススメ

2016年11月04日(Fri)

なんというか、一つのことを説明しようとすると、その手前のこともちゃんと書いておかないといけないような気がして。書いてたら長くなっちゃうから少しずつ区切ろうとしたら、いつの間にか書くのを忘れてたりして。

そんな感じの小ネタ。

Fireflyのレンダリング設定にあったトーンマッピングやガンマコレクションは、Supeflyのレンダリング設定には存在しない。Superflyは物理ベースのレンダラだから、ガンマ補正しないという選択肢自体が存在しない、という解釈でもいいんじゃないかなと思う。

とはいえ、その機能を多用していた人にとっては、無くなってしまうと困惑してしまうものだ。トーンマッピングなんかはその一つだろう。通常のモニタが表示できる赤緑青各色256階調16,777,216色の範囲を超える、明るすぎる部分をほどよく表示可能な範囲内におさめてくれる機能である。

161104-1

じゃあSuperflyは256階調を超える明るさを表現できないのか、すべてのピクセルが黒から白の範囲内に収まるようにライティングしなければならないのか、というと、そんなことはない。

画像を保存するときにHDRI、すなわちRadiance形式(.hdr)またはOpenEXR形式(.exr)を選択すればいいんである。

161104-2

FireflyでもSuperflyでも、内部の計算自体はリニアなデータで行なわれている。というかレンダラは本来リニアな光のエネルギーを計算するものである。レンダリングウィンドウに表示されたレンダリング結果は、そのリニアな計算結果に(必要ならガンマ補正をかけて)モニタが表示できる各色256階調だけを表示しているにすぎない。当然JpegやPNGなど従来の画像形式で保存できるのも、切り取られた256階調だけだ。

HDR(High Dynamic Range)は、従来の各色256階調、8bitに収まらない広範囲のデータを扱う形式だ。HDR形式で保存された画像をHDRI(High Dynamic Range Image)と呼んだりする。Radiance形式は一番広く普及している形式、OpenEXR形式はさらに高精度かつ多くのデータを保存できる形式だ。どちらもPoserから出力する分にはそんなに違いはないので、自分の使っている画像処理ソフトが対応している形式を選べばいい。

PhotoshopでRadianceまたはOpenEXRファイルを開くと、自動的に32bitモードになる。

161104-3

で、イメージメニューの色調補正>HDRトーン...やフィルタメニューのCamera RAWフィルター...を使って、「RAWデータを現像するように」思い通りの露出に変換する。

161104-4 161104-8

要するに、Superflyでは「トーンマッピングは画像処理ソフトでやってね」ということだ。

たとえば、こんな感じのレンダリング結果があったとしよう。

161104-5

窓から光が入り込んで、室内を照らしているようなシーンだ。正直パストレーシングがものすごく苦手とするシーンである。なにせ開口部が狭いから、レイがなかなか光源にたどり着かない。途中で死ぬから値が収束しない。収束しないということはノイズが減らないということである。なので開き直ってピクセルサンプルを上げ、さらに拡散反射の反射回数を増やし、光源の強度をがっつり上げる。ある程度光が回らないといくら計算回数を増やしてもなかなか収束しないので、まずは室内に光が回るようにする。

すると当然、明るい部分は思いっきり色飛びしてしまう……という感じのレンダリング結果。

しかし色飛びしているように見えても、HDRIならちゃんと中身は保存されている。Photoshopで開いて、32bitモードを16bit(または8bit)モードに変えてみよう。

161104-6

HDRトーン機能が起動して、HDRIをいかに256階調の範囲内に収めるか(=トーンマッピング)、その方法を尋ねてくる。

161104-7

HDRトーンはもともと、画像をゴテゴテといわゆる「HDR風」に補正する機能ではなくて、HDRIをトーンマッピングする(ついでにノイズ軽減や強調なんかもできる)機能だったわけだ。

デフォルトだと「方法」がローカル割り付けになってて、階調をそれなりに収めてくれている。窓の外に実はスカイドームが配置されてたり、鎧戸が水色だったり、レンダリングウィンドウで表示されなかった情報がキチンと保存されているのがわかる。

あとは、自分の好みになるよう露出調整すればいい。ちなみに「方法」を露光量とガンマにして値をいじらなければ、元の色飛び状態で変換できる。

いったん16bitや8bitモードに変換してしまうと、当然ながらHDRで保存されていた細かなデータは失われてしまう。この変換は不可逆なので、モードを変換するときは後悔しないよう慎重に行おう。変換後のデータはpsd形式で保存し直して、元ファイルは残しておいた方がいいかもしれない。変換せず32bitモードのままでも構わないんだけど、使える機能が限定されるので本格的に加工するなら最初に露出調整して現像してしまうのがいいと思う。

161104-10

HDRトーンではなく、Camera RAWフィルタを使うこともできる。やることはHDRトーンとほとんど同じだけど、こちらは部分的にマスクをかけたり、より細かい調整が可能だ。自分が操作しやすい方を使えばいいんじゃないかな。あんまりゴテゴテと補正をかけるとリアルさは失われてしまうので注意。

161104-9

もともと階調飛びしないようなライティングやシーンなら、もちろんどの画像形式で保存しても中身は変わらない。けど、現実世界のカメラで撮影するにも苦労するような、明暗差が激しいシーンを作る時にはHDRは特に有効だ。階調飛びを気にせず「現実的な数値」でライティングし、HDRIでリニアなデータのまま保存し、画像処理ソフトで「現像」する、というような流れになるのだと思う。

じゃあ「現実的な数値」とは何かというと、それはまた別の話になるので、またいずれ。



赤っぽい裸々。

2016年10月30日(Sun)

こんな感じの肌色に、

161030-1

赤っぽいムラを乗せてー、

161030-2

青っぽいムラを乗せてー、

161030-3

肌色のベースが完成。あとは、色調補正してごちゃごちゃ描き込んでこんな感じ。

161030-4

リアル目指すなら写真切り貼りした方がいいんだろうけど、そんなわけでもないので。

あとは、バンプは100%表示でこんな感じ。

161030-5

手描きなんでけっこういい加減だったりする。で、体のスペキュラマップはこんな感じ。

161030-6

あと粗さマップ。

161030-7

このへんはざっくりとした数値の指標になればいいので、解像度自体はかなり低め。

まあ参考……というわけでもないんだけど。

ちなみに「不気味」「気持ち悪い」と絶不評のSuperflyマテリアルプレビューおじさん、あれジオメトリはP6 Jamesを流用してるらしくて、UVが一致する。ということは

161030-8

ベースフィギュアが細かい方のじぇーむずであるところのAさんは、この通りテクスチャがジャストフィットするんである。うーん大勝利。とはいえ、顔以のマテリアルが不気味で気持ち悪いことに変わりはないんだけど(笑)。



とぅーす。

2012年01月13日(Fri)

Photoshopで千鳥格子模様を作ってみる。ちなみに千鳥格子は英語でHound's Toothと呼ぶらしい。犬の歯が並んだ様子に似ているからとかなんとか(そうかー?)。

120113-01

まずPhotoshopを開いて新規ファイルに新規レイヤーを作成。塗り色を白にしてタテヨコ1:2の長方形に塗る。ここでは10×20ピクセルにしている。背景レイヤーは見やすいよう黒く反転しておく。

で、レイヤースタイルで陰影をつけていく。

120113-02

だいたいこんな感じ。白バージョンができたら、レイヤーをコピーして黒バージョンを作る。完全に黒にすると布目が生かされないので、少し色を乗せておく。具体的にはレイヤースタイルのカラーオーバーレイで焦げ茶色に着色。でその他のレイヤースタイルを微調整。

120113-03

できたら他のレイヤーを非表示にしてレイヤー統合するなり、command+shift+Cとcommand+Vでコピーするなりしてレイヤースタイルを統合。いっぱいコピーするんで。

120113-04

黒の方も統合しておく。

120113-05

ネットで調べた縫い方を参考にパーツを並べていく。optionキー(Windowsの場合はAltキーかな)を押下しながら移動ツールでドラッグするとレイヤーがコピーされるので、グリッドを適当な大きさに設定して、吸着するように設定しておくと並べやすい。

120113-06

黒も同じように並べる。

120113-07

並べ終わったら白と黒のレイヤーを統合。1パターン分(ここでは80×80ピクセル)を選択してコピー&ペーストでファイル全体に並べる。1パターンのサイズでガイドを作っておくといいかも。

120113-08

この段階で画像を統合して、色調補正に入っていく。

120113-09

編み目がキツい感じなので、調整レイヤーのトーンカーブで明暗をちょっと強調。さらに新規レイヤーを作成して50%グレーに塗りつぶし、ノイズを加えて描画モードをオーバーレイに変更。不透明度を調整してキッチリした編み目の輪郭を崩す。

120113-10

だいたいこんな感じ。できたら1パターン分のサイズを選択して(なるべく端っこじゃなくて真ん中から選択する)編集メニューからパターンを定義する。

120113-11

適当に名前をつけて登録。

120113-12

さて、このままだともちろん布目が大きすぎるので縮小する。

新規ファイルを作成、イメージサイズは作ったパターンの大きさの倍数で、なるべく大きめ。ここではパターンが80×80ピクセルなので、2560×2560ピクセルにした。

120113-13

塗りつぶしメニューで作ったパターンを指定して塗りつぶし、画像解像度で好みの大きさに縮小。

120113-14

25%の640×640ピクセルに縮小したところ(等倍表示)。なんとなく千鳥格子っぽくなったかな。これを布地のベースに使う。

houndstooth80x80

パターン作るのが面倒臭いにょ、という人のために1パターンのPNG画像。このPNG画像のみ、特に権利は主張しないので使いたい人は適当にコピーしてください。

で、なんでイキナリ千鳥かというと。

120113-15

クリスマスカラーじゃないのを作りたかったので。布地画像をイメージマップノードで適当に繰り返して大きさを調整したところ。

120113-16

ざっくりDHなんか生やしてみたりして。



ガンマのはなし その4

2011年06月25日(Sat)

8. カラープロファイル

Macユーザはモニタガンマを1.8に設定しているかもしれない。印刷業界に関わっている人は色温度を5000Kに合わせているかもしれない。プロの写真家はAdobe RGBのモニタを使用しているかもしれない。自分と異なる環境で作られたデータを見る場合、製作者の意図した色で表示されていない可能性がある。しかし、それでは安心して画像データを見ることはできない。どうにかして環境に依存せず色を再現することはできないものか。

考え方は二通りある。一つはすべての機器の色を規格化して、統一してしまおうという考え方だ。これはつまりsRGBのカラースペース(色空間)そのものである。(ちなみにsRGBのガンマ値が2.2と言われているのは、あくまで「ガンマ値2.2でおおむね近似できる」という意味である。sRGB自体はもう少し複雑なカーブを描く。)

しかし、sRGBはもともと廉価なモニタを基準に策定された規格だ。商業用の広い色域を持つ機器まで、低い基準に合わせろというのは乱暴な話である。

もう一つの考え方は、画像ファイルにそのデータが作られた環境を記録しておき、表示する機器がその環境を考慮して色を再現する、という考え方である。

たとえば、こんな環境の人たちがデータをやりとりする場合を考えてみよう。

データのやり取りで起こる色のずれ

表示する側がその画像の製作環境を知っていれば、製作者の見ていた色を再現することができる。この「どんな色空間やガンマ値で作られたか」という情報をカラープロファイル(ICCプロファイル)という。プロファイルは発音を変えればプロフィール。言わば身上書である。その中には、製作者の色空間をL*a*bやXYZといった絶対的な色空間に変換するためのデータが記録されている。

カラープロファイルの概念

製作者は自分の使用した色空間などの情報を、プロファイルとして画像ファイルの中に埋め込んでおく。表示側はそのプロファイルの情報を元に、画像を絶対的な色空間に変換する。で、そこから自分自身の色空間に再変換して表示する。もし表示側がカラープロファイルに対応していなければ、画像データをそのまま(自分の色空間で)表示するというわけだ。

具体的に確認してみよう。

50%グレーで塗りつぶした画像を二つ作成し、一つはsRGB(ガンマ2.2)のカラープロファイルを埋め込んで保存、もう一つは埋め込まずに保存する。この画像をカラープロファイルに対応したソフト&ガンマ1.8のモニタの環境下でそれぞれ表示させてみる。

カラープロファイルなしの50%グレー

カラープロファイルが埋め込まれたファイルは50%グレーが43%グレーに変化している。

カラープロファイルありの50%グレー

ガンマ2.2の環境で作られた50%グレーは、物理的な明るさが0.52.2で21%となる。ガンマ1.8のモニタで同じ明るさを再現するには、0.21(1/1.8)で0.43。つまりガンマ2.2の50%グレーとガンマ1.8の43%グレーは物理的に同じ明るさになる、というわけだ。

簡単にまとめるとこうなる。

1 = x12.2,y2 = x21.8
1 = y2なのでx12.2 = x21.8
2 = x1(2.2/1.8)
2 = 0.51.222 ≒ 0.4286

いちいち式を立てるのは、y=xγ以外の式を覚えるのがめんどくさいからである(笑)。

このように、カラープロファイルを使用すれば自分の環境以外での見え方を再現することができる。また、この変換はコンピュータが画像を表示する時に行われているので、データ自体には影響を与えずにすむという利点がある。難点はファイルサイズが数kbほど増えてしまうことと、表示に若干の負荷がかかることだが、現代の通信環境ではさほど問題ではないだろう。

モニタに限らず、プリンタやスキャナ、デジタルカメラといった色を扱う機器のカラープロファイルは通常製造元が用意している。ドライバをインストールするときに同時にインストールされるか、サイト等で配布しているはずだ。ただ、そのプロファイルは該当機種の平均的なデータであって、自分が所有している個々の機器の情報ではない。理想を言うならすべての機器のキャリブレーションを行って、プロファイルを自作した方が色ズレは防げる。まあこれはあくまで理想であって、現実はモニタのプロファイルを作っておくぐらいだと思うけど。

例えばMacのモニタは調整後にカラープロファイルを保存する。さんざん縞模様と灰色の一致点を訊かれたあげく、最後に保存名を決定するアレである。

Macのモニタ設定の画面

これはモニタのガンマ値を調整しているわけではなくて、モニタの素の状態でのガンマ特性(ネイティブガンマ)を測定しているのである。自分のモニタのガンマ特性が標準からどれだけ外れているかを把握しておけば、OSはそこから標準のガンマ値に補正することができる。だから数値を指定するだけで任意のガンマ値に変更できるのだ。(Windowsの場合はよく知らないので、プロファイルの作成方法とかは各自で調べて欲しい。)

さて、製作者が自分の情報をカラープロファイルにして画像に埋め込んだとする。問題はその画像を表示する側が、カラープロファイルに対応しているかどうかである。

たとえば自分の使用しているブラウザがカラープロファイルに対応しているかどうかは、このサイトがわかりやすい。
International Color Consortium

リンク先の四分割された画像の色合いが同じに見えたなら、カラープロファイルに対応していることになる。ちなみに下図は自分が調べられた範囲。

ブラウザのICCプロファイル対応状況

特にWindowsユーザで、Macのモニタガンマ1.8での見え方が気になる、というような人は積極的にカラープロファイルを利用するといいだろう。Macはデフォルトブラウザも画像ビューアもカラープロファイルに対応している。自分の環境をsRGBに合わせ、sRGBのカラープロファイルを埋込んでおけば、Macでもガンマ2.2をシミュレートした状態で表示されるわけだ。

ただし、ネット上にアップロードする画像の中で、カラープロファイルを埋込むのはあくまで写真やイラストといった、作品として独立した画像に限った方がいい。たとえばWebサイトの背景画像にカラープロファイルを埋込んだりすると、HTMLやCSSで指定する色にはカラープロファイルが指定できないので、sRGB以外の環境で見ると背景色と背景画像の色がズレてしまうからだ。

では、実際にレンダリングした画像にプロファイルを埋込んでみよう。一般的なsRGBのモニタで、キチンと調整後のプロファイルを作ってることが前提。

まず、Photoshopでは「カラー設定」で作業用ワークスペースを「sRGB IEC61966-2.1」に指定しておく。CMYKその他は印刷のプロでもない限り初期設定のままでいいだろう。こうすると、モニタの設定に関わらず、Photoshop内の画像はsRGBのカラースペースで表示されることになる。また、カラーマネージメントポリシーでは「埋込まれたプロファイルを保持」を選択、項目確認すべてにチェックを入れておくといい。うんざりするぐらい確認ダイアログが表示されるようになるので、嫌でもカラースペースを意識するようになる(笑)。

Photoshop CS4のカラー設定

Poserはカラープロファイルに対応していない。レンダリング画像にカラープロファイルは埋込まれないし、プレビュー画面はモニタのプロファイルそのままで表示されている。つまりモニタと同じプロファイルを持つことになる。ガンマ1.8で表示していればガンマ1.8を持ち、Adobe RGBで表示しているならAdobe RGBのカラースペースを持っているわけだ。なので、Poserでレンダリングした画像を開く時はモニタのプロファイルを割り当てて開くことになる。

プロファイルなし画像を開く時のダイアログ

「そのままにする(カラーマネージメントなし)」を選択すると、プロファイルは割り当てられないものの作業用ワークスペース(ここではsRGB)で開くことになる。モニタがsRGB以外のプロファイルを使用している場合は、開いた時点で色が変わってしまうので注意しよう。

ファイルを開いたあとはすぐsRGBに変換してしまってもいいし、そのままでも構わない。で、WebにUPする画像は「Web用に書き出し(またはWebおよびデバイス用に保存)」を使って、「sRGBに変換」と「カラープロファイルの埋込み」にチェックを入れる。

PhotoshopのWeb書き出し

また、Photoshopは「ビュー」>「色の校正」にチェックを入れると「ビュー」>「校正設定」で他の環境での見え方をシミュレートすることができる。カラープロファイルを埋込まない場合、この機能を使えばガンマ1.8や2.2のモニタでの見え方を確認しておくことができる。

Photoshopの色校正

モニタがAdobe RGBに対応している場合、Adobe RGBを使用するかどうかは悩みどころだ。ネットはsRGBが標準だし、Adobe RGBを表示できるユーザはあんまりいない。sRGBのモニタでAdobe RGBの画像を開くと、ソフトがカラープロファイルに対応していなければ色がズレてしまうし、対応していてもsRGBの色域外はクリップされる(前回の最後の画像のようになる)。そして、カラープロファイルに完全対応しているブラウザのシェアは悲しくなるほど少ない。デジタルカメラで撮影した写真を、自分のモニタで楽しむぐらいが今の限界じゃないだろうか(ごめん)。

カラーマネージメントは、一般のユーザにとってはまだまだ普及途上の概念だ。あと10年ぐらいしたら状況も変わって、色に関する悩みも解決しているかもしれない。それまではあんまりこだわらず、大らかな気持ちでいるのがベターじゃないだろうか。

というわけで、次回からはCGの話に戻って、いよいよリニアなんちゃらの話に移ろう。





Menu

Profile

Kyotaro

確定名:Kyotaro
ネタを探しているらしい。

Categories

Calendar

02 | 2017/03 | 03
- - - 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 -

Comments

Archives

Track back

RSS feed

Links

Search

※2011年4月6日のサーバ障害の為、エントリのアドレスが以前のものからズレています。当Blogのエントリにリンクを張っておられた方は、お手数ですがアドレスのご確認をお願い致します。

※Internet Explorer非推奨。