ラベル 3DCG考察 の投稿を表示しています。 すべての投稿を表示
ラベル 3DCG考察 の投稿を表示しています。 すべての投稿を表示

2012年1月12日木曜日

■リニアワークフローと3DCGのガンマ補正のはなし

■リニアワークフローとか3DCGのガンマ補正の話 メモ


■理解する上で一番大切なことは
3DCGのソフトが、ライトなどの光を計算する場合、その計算式はリニアで行われているということ。それはつまり、いままでの方法でレンダリングした画像は、なんとリニアスペースで作られた画像そのものだった、ということ!

■問題は
自然界を見ている人の目も、写真も、リニアスペースで作られた画像(自然界の光)をそのまま見ているわけではないってところ。
感度が違う。

比較的暗いところの方が、網膜の神経は敏感。明るいところでは明るさの差をあまり感じ取れない。逆に暗すぎても分からなくなる。
懐中電灯を太陽の光の中で使っても明るくてらしたところが分からないのはそのせい。暗い中ではすぐ分かるのに。

■さらにややこしくなった原因 = テレビモニターのガンマ
人の目が自然界を見た時と同じようにテレビモニターを見たときも自然に感じるためには、テレビモニターも自然界と同様に、リニアスペースで色を発光させる必要がある。
しかし、モニターを作る時の技術的な問題から、モニターは光をリニアで表示できない特性を持って生れてしまった!

■撮影したリニアな画像をガンマ補正する
そこで、カメラで撮影した映像をテレビで見るときに自然に見えるようにするために、あらかじめ撮影した画像にテレビの発光特性と逆の特性を持たせて、テレビの特性をうち消すことにした。

■逆ガンマ
リニアカラースペースのものをガンマ2.2の特性をもつモニタで自然のままの色で表示するためには、モニタに送る信号に0.45の逆ガンマをかける。するとモニターはガンマ2.2の特性を持つので、強制的に発光する光には2.2のガンマがかかり、元のリニアスペースの色と同じになって自然に写る、という寸法。

■ノンリニアスペースとリニアスペース
  • ノンリニアのもの
    • 人の目
    • アナログフィルム(銀塩フィルム)
    • テレビやPCモニター(最近のものはsRGBを採用していて、これはガンマ2.2)
    • プリンター
  • リニアのもの
    • デジタルカメラのRAWデータ形式
    • HDR画像フォーマット(32bitの浮動小数点系のものはそう)

■3DCGソフトでは光をリニアスペースで扱う
何も設定していなければ、3DCGソフトでは光をリニアスペースでレンダリングする。
これが落とし穴。CGのライティングでできる陰影は、人が普段感じている自然な光よりも中間色が落ち込み、コントラストが高くなる。
ソフトウェアのガンマの扱いはそれぞれ違うので、何をしているのかを理解しなければいけない。実はリニアワークフローそのものを理解するよりもこれが難しい気がする。

■ガンマ補正?
ガンマ補正を行うと、最も明るい色と最も暗い色はそのままで、中間色が変更される。Photoshopのトーンカーブと同じ原理。2.2などの数値はガンマ曲線にかかる係数のことで、曲線のゆがみを規定する。
フィルムや人の目のガンマ係数はだいたい2.2らしい。これは暗い光に対して敏感で、明るくなるにつれて感度が鈍くなるような曲線だ。


■導入してみたい理由

1.フォトリアルな絵を作るためには光を正確に再現するべきで、そのためには現実に即したワークフローを採用すべきだから
1.ライティングに対して人間が感じる自然なコントラストはガンマ2.2であるから
1.ガンマ2.2で作業をするとガンマ1.0での作業より中間色の明るさが増すのでライティングの手数を減らせるのではないかと期待するから
1.今後のスタンダードになりうるから
1.上記理由から、より柔らかい光の演出を作りやすく、空間を感じさせるような絵作りに向くと思うから
1.後処理でレベル補正をする際に、中間色がしっかり出ているので劣化を押さえながら色を転ばせることができそうだから

これは実際の世界をカメラで撮影する作業工程と同じ。写真のフィルムや人間の目などのアナログ媒体は、光を非線形で捉えている。例えば、写真に映っている色で明るさが2倍違う領域同士は、本来の撮影場所では数字的には2倍以上の差がある。「露出量(EV)」は数字が2倍になれば明るさも2倍になるが、これは2倍に明るくなる露出量を2倍に表記しているにすぎず、本来の光の強さが2倍の強さとは限らない。つまり、光そのものは線形で表されるが、目や写真に写る色は非線形に補正されているということだ。銀塩フィルムや人間の目は光に対してほぼ同様の感度を持つ。デジタルカメラは、センサーが捉えるリニアな色をガンマ補正して従来のフィルムや人が感知している色に合わせているのだ。
CGソフトで作成している絵は実際の世界と同じで、光の強さをそのまま格納しているリニアスペースである。リニアワークフローではこれを撮影(レンダリング)するときにガンマ補正をかけて、本来人間が知覚している色で出力する。

■デジタル画像とガンマ補正
普段取り扱っている画像はすべてガンマ補正が画像の色に焼き込まれている状態である。デジタルカメラで撮影した画像はほとんどがsRGB空間で補正されており、これはガンマ2.2に相当する。パソコンで描いた絵もそのモニターのガンマで最適化されている。例外なのは写真の生データであるRAWとHDR画像で、これらはガンマが1.0となっている。RAWの場合は編集ソフト側で撮影時のデータからガンマ補正がされるが、データそのものはリニアで保存されている。

■3DCGソフトで扱うテクスチャの問題
このようにすでに補正されているテクスチャを貼付けている場合(ほぼすべてがそうなんだけど)、ライトによる陰影はガンマ補正がされていないために問題となる。リニアワークフローを採用しようと思ってソフト環境をガンマ2.2にすると、ライティングは正しくガンマ1.0 -> 2.2 となるのに対し、テクスチャなどの既に補正されているものはさらにガンマ補正をすることになってしまうからだ。

■逆補正を行ってテクスチャをガンマ1.0に補正する
そのために、リニアワークフローで作業する場合には作業環境をリニアスペースに保つために補正されているテクスチャに逆ガンマ補正を行う。ガンマ2.2の画像を1.0にするには単純に1/2.2 = 0.4545… を掛ければ良い。
こうすることですべてがリニアスペースのカラーとなり、ライトへの反応も正しくなる。注意すべき点は補正するべきテクスチャはカラーに関係のあるものだけだということ。diffuse、specularColor、reflectionMapなどで、bumpやdisplacementには逆ガンマは不要。そもそもそれらはリニアスペースだから、明るくなってしまう。

■補正なし=ガンマ1.0の作業環境から補正あり=ガンマ2.2の作業環境へ
「リニアワークフロー」という単語で初め勘違いしていたのは、私自身の認識としては作業はリニアではなく、ガンマ補正がされているガンマ2.2の状態で行うということだ。3DCGソフトにもいろいろあるので、扱い方はそれぞれだが、リニアなのは内部的な話であって、レンダリングされる画像はばっちしガンマ補正されてる。つまり、この言葉の意味するのは「レンダリングする直前までの行程をリニアスペースで行う」という意味での「リニアワークフロー」である。3DCGソフトでの作業環境で起こる大きな変化は、全体的にマテリアル等が白っぽくなるという点だが、これはライトの光量を考えるとむしろ正しい結果だといえる。
これまでのCG制作でガンマ補正をしていない状態というのは、デジタルカメラで撮影した画像をガンマ補正せずにリニアスペースで見ていたということと同じで、最終的に補正を行って光を正しく(人間の目と同等の感度で見るという意味で)再現しよう、というのがリニアワークフローの中核である。
ただし、従来通りの方法でもライトをうまく使って光量そのものをあげれば十分に美しい絵を作ることができるのでリニアワークフローを採用しなければならない、というほどのことでは無いかもしれない。
唯一気に留めておきたいのは、テクスチャなどの素材は補正されているが、ソフトでライティングされて生まれる陰影は補正されていないということだ。このギャップを良しとするか、違和感を覚えるかはこれまた人それぞれかもしれない。


■導入にあたってのあれこれ
モニターをガンマ2.2に設定する。最近のモニターは大抵がsRGBを採用しているので問題は無いはず。MacでもOS10.6以降はデフォルトでガンマが2.2になっている。
テクスチャ素材に逆ガンマを掛ける必要がある。これは自動化スクリプトを作る等すればさほど問題ではない。さらに、これまでの色を数字で再現できなくなる点での慣れが必要になる。
リニアワークフローではレンダリングするまで正確な色は表示できない。ただしこれに関しては今までとさほど変わらないと思う。
カラーピッカーで選ぶ色はライティングによって初めて正しい色を返すということ。
真っ白と真っ黒に近い色はこれまでとさほどかわらない。中間色が大きく持ち上がる。
なんだかんだ言ってもやることは意外と単純で、複雑なプロセスは無い。理解が大事。
Maya2011からはMentalRay限定でカラープロファイルを設定できるようになっている。これによってテクスチャに逆ガンマ補正を掛けたり、レンダラーの出力ガンマを設定しなくてもすむようになっている。レンダリングが重くなるそうだが、未検証。従来通りのsoftwareRendererは手動で行う必要があるが、swではそもそもリニアワークフローで制作しないだろうなぁ。そういう理由でswには未対応なのだろう。ただ、手動でリニアワークフローを構築した場合と、カラープロファイルを指定して補正をする場合とでは若干手動のほうが明るくなる理由が分からない。
MentalRayの場合はgamma設定をframeBufferで指定すると、自動的にカラーテクスチャにその値で補正を掛けてくれる。簡単に試した結果、bumpMapには補正が入っていなかった。
露出系のユーティリティと併用するのが一番良い結果を生むらしい。ただ、建築などのビジュアライズと違い、メディアアートはそこを省いても良さそうである。
主に、光の回り込みを柔らかく表現したい場合、自然に感じられるような光の挙動を作りたい、という場合に導入を検討すればよい。

2011年3月18日金曜日

記号化、形式化、デザイン

アニメーションは記号だよ、という話をどこかで聞いた。その話はまた別の機会にするとして、アニメーションはそれ故に止まっている人が映っていても、見ている人はその人が人形だとは思わず、生の人間であると認識する。それは作り手がそのキャラクターが生きていると表現しているから。生きている人間の記号をそのキャラクターで表現しているから、とも言える。絵って、そもそもがそういうものだ。

記号化するというのは、現実を観察して得た印象を何か別の形で表現すること。




「記号」とは

社会習慣的な約束によって、一定の内容を表すために用いられる文字•符号•標章などの総称。言語も記号の一つと考えられる。広く交通信号などから、象徴的なものまでを含む。また、文字と区別して特に符号類をいうこともある。




と辞書にある(macの)。

社会習慣的な約束、というのは「みんなの共通認識」ってことだろう。




3DCGが拙いのは、複雑なオペレーションの過程で記号化することを忘れてしまうこと。「現実に見えるままを再現する」と「現実から受ける印象を表現する」とでは大きな違いがある。しっかり記号化して、演出することを意識していかなければ。

2010年11月23日火曜日

ライティング Tips

【Lighting Tips ライティングティップス】

■減衰を利用する

・奥行きを出したいとき
・やわらかい光を表現するとき(反射光など)

などなど。

2010年11月5日金曜日

遠近感について

【遠近感について】

■空間の広さを出すためには

1.意識する
これは遠い、これは遠い、、
と、感覚を持ち続けること

2.大きさの変わらない物を使う
影のぼけ足は変わらないので、遠くから見ればみるほどエッジが立つ
雲や水などの自然のもののディテールは一定である

3.パースを感じる構図にする
目には
重なるものは後ろ
小さくなっていくと離れていく
かすれていくと離れていく
動きがゆっくりな物は遠い
と感じることを利用する

4.「遠い=彩度が低い」は間違い
空中のチリが見えるため、遠いものは霧がかる。つまり、空気遠近法とは空中のチリを描くことに他ならない。単純に彩度が低くなるわけではない

2010年9月8日水曜日

3DCG制作の効率化でアドレナリンを出す

【気持ちをこめる】
この前デッサンでゴーヤを描いた。
1粒1粒のぼこぼこに存在感を与えるには時間が足りない。

でも質量を持たせるには書き込まなければならない。
時間の無い中、粒を紙に浮き上がらせるために手を動かす。

この状況でたぶん脳みそが切り替わったと思う。言語中枢が麻痺して、手が思考を始めるような感覚。粒のニュアンスを表現するために、頭で分かっている粒の情報を、理解や解釈の過程を通り越して手に反射神経的に伝達している感覚。
頭が手についていかないというか、何手も先が分かるけど手が追いつかないというか。
逆のことを言っているけどたぶん両方が本当。

絵を書いていて、気持ちが入り込むときはアドレナリンが出ている気がする。


3DCGの制作ではこういうことは起こりにくい。まず頭の思考スピードにまったくといっていいほどパソコンの操作がついてこない。だから、手から帰ってくるフィードバックが脳みその処理能力を上回っていかない。かなり効率的な操作方法を開発して、その作業に従事するときはこの限りではないが。

であるから、作業の効率を追求することは、表現者としてはやらなければならないことだと思う。
表現したいニュアンスを出すためには脳を右脳で働かせる必要があるからだ。

その点、実はパソコンは人間の処理能力を大きく超えた作業が可能だ。最近のCPUはマルチタスクが基本であるし、並列処理に関しては人間はパソコンに追いつけない。
要は使い方、といってしまえば一言で終わるが、その使い方が一番難儀なのである。