02 3DCG はじめに光ありき

CGの本を見ると、書いてある通り一遍の話題が、かなり足りないことに気付きます。
そこで、ここでは、3DCGを理解するための重要な知識を、既存の書籍にはない形で、体系的にご説明します。

はじめに、光ありき

3Dモデルのデータを利用して、2次元の絵や映像を描くことを、3DCGのレンダリングといいます。

通常の絵でしたら、絵を描くというのは、平面に線を書いたり色を塗ったりすることです。3Dモデルは、3次元の形を示すデータと、表面の色や柄をもつテクスチャ、細かい凹凸を指定するノーマルマップやバンプマップなどから作られていますが、それだけでは絵や映像にはできません。そう、平面/2次元の絵とは、根本的に異なるのです。

3DCGは、光の設定をしないと、絵にすることができません。この光は、光源/ライトが3Dモデルに照らします。
私たちの日常では、太陽があるから、光源は必ずあるという暗黙の感覚があります。しかし、3DCGの世界では、すべてコンピューター上に人が作り出した世界ですので、自然界や写真撮影と同じようにするために、光源/ライトの設定がなのです。ここでは、詳しい説明はまだしませんが、3DCGで使用する光源/Light Sourceは、4種類あり、だいたいどのような3Dのレンダラーも同様な考え方をしていますが、光源の取り扱いは、かなりソフトウェアにより違いや特徴があります。

VoxcelSample
典型的な光源の4種類

しかし、いずれにしても、光源がないと絵や動画を作ることはできません。
余談ですが、3Dプリンタの場合は、同じ3Dでも光源は関係ありません。立体を作り出すからです。

3DCGでは、光源の設定が必須です。
この設定は、写真撮影でのライティングにかなり似ています。

レンダリングを行うソフトウェアはレンダラーといいますが、レンダリングの考え方に、昔主流であったバイアス系といわれる3DCGに特有な考え方を中心にしたものと、ノンバイアス系といわれる自然界にできるだけ模したものの2種類があります。バイアス系は、昔のコンピューターの性能が低かったために考えられたものですが、特に速いというものでもありません。主にメモリ消費が少なめという感じです。現在はコンピュータ資源が豊富なので、ノンバイアス系が主流です。とはいえ、結果がすべてですので、レンダラーは作者が求める「レンダリングの質」で選びます。例として、以下に同じ3Dデータを使用して別々なレンダラにより作成した2種類のレンダリングサンプルを示します。ライティングの設定は似ていますが同一ではありません。

Poser Firefly
Poser 11 Firefly Render / バイアス系レンダラー(Poser内蔵のレンダラーです)
Poser Firefly
Poser 11 + Octane Render / ノン・バイアス系レンダラー OTYTの製品です

ノンバイアス系のレンダラーのように自然界の光の挙動をを模しているレンダラーの場合は、写真撮影でのライティングにかなり似ています。昔の方式である、バイアス系のレンダラーは、あまり似ていない独特な点が多くあります。CGの本を見ると、多くの場合でライティングは写真のライティングを範として勉強しようと書いてありますが、ライトの性格に違う点が結構あるので、ちょっとそれはどうかなーと思います…(^^;

自然を模すために、とても必要なHDR

ところで、「自然界の光」を模するということは、重要な点として、「光の強さの幅/ダイナミックレンジ」という問題があります。これを説明している本はほとんど見たことがありませんが、この理解はとても大切です。Poserというソフトウェアの開発者とメールで会話していて、ダイナミックレンジを大幅に広げて処理するHDRの意義(意味はもちろん知ってましたけど)をあまり理解していないので驚きました。

私たちが使用しているコンピュータディスプレイは、明るさで表現できるのが8ビット(256段階)のものが一般的です。これは家庭用テレビでも同じです。最近はHDRと表示されている機種であれば、10〜12ビット(1024〜4096段階)のものがあります(困ったことに、宣伝ではHDR36ビットと書いていたりしますが、これはRGB12ビットづつを合計してしまっているだけで、ちんぷんかんぷんな人が思いついためちゃくちゃな宣伝文句に過ぎず、技術的には12ビットです)。つまり、これらのデバイスは1:256〜1:4096倍の光の強度の違いを同時に表示できます。ただ、このダイナミックレンジでは、自然なものを表現するには低すぎるのです。

実際のところでは、私たちの目が見れる光の強度の幅は、目の光彩の機能を含めると1:1,000,000,000と言われています。まさに桁が6〜7桁も違います。こうした違いの詳しい説明は、こちらにありますが、ここでは概要だけをご説明します。以下に示す表は、私たちが見ることができる光の強さの差/ダイナミックレンジを説明しているものです。この資料では、ダイナミックレンジをEVという単位で書いていますが、これはカメラ/写真の用語です。1EVの違いは2倍の違いを説明しているので、コンピュータやディスプレイでいうビットと同じ意味になります。

シチュエーション/状況
ダイナミックレンジ
自然
快晴時のアウトドア
1:100000
17EV
短時間
1:10000
14EV
比較的長時間
1:1000000
20EV
撮像媒体
ネガティブ・フィルム(ネガ)
1:256〜8000
(1:256を超えると正確性は怪しい)
8〜13EV
スライドフィルム(ポジ)
1:64
6EV
CCD/CMOS(フォトダイオード)
1:256〜2000
(1:256を超えると正確性は怪しい)
8〜11EV
表示媒体
印刷
1:64
6EV
高品位プリント
1:200
7.6EV
液晶パネル
1:1000
(装置としては1:256/8EVが多い)
10EV

この表を見てもらうとわかるように、自然の状態の光を計算するためには、20EVつまり、20bitのダイナミックレンジが必要です。

3DCGは、コンピュータの歴史的に古い技術からスタートしました。そのため、初期の3DCGは光の強度は8ビットでした。当時は、このようなダイナミックレンジの必要性が理解されていなかったのです(ちなみに8ビットの光の強さで十分と考えた時代は1970年代、大昔ですね…)。しかし、現代では、このようなダイナミックレンジの違いを解決するため、内部ではここで示しているような20bit以上の光の強さのダイナミックレンジを計算できるようになっています。このような技術をHDR(High Dynamic Range / 高ダイナミックレンジ)と呼びます。

こうしたHDRの対応は、3DCGのレンダリング出力に、EXR形式やHDR形式が指定できることからもわかります。どちらの形式も、自然界の光の強さをそのまま取り扱えるダイナミックレンジで、画像や映像を取り扱うことができます。

また、ライトの取り扱いで、環境光(Ambient Light)という、周辺からの光を画像から得て3Dモデルにあてる方式の場合、この周辺の光の元になる画像はHDR画像を使用すべきなのも、ここに理由があります。旧来のJepgは8ビットしかダイナミックレンジがありませんので、環境光を作り出す元としては役不足です。

CG Explain
環境光はHDRイメージをベースに3Dデータに光を当てます

ところで、先の表を見てもらうと、ディスプレイ等のダイナミックレンジが、人の認知できるダイナミックレンジよりもかなり「狭い」ことがお分かりいただけると思います。このことは、画面等でキレイに見れるようにするためには、画面のダイナミックレンジに「合わせる」必要があることを示しています。例えば、オリジナルの絵が、画面よりも暗い方に大きく偏っていると、真っ暗になってしまいますし、明るい方に大きく偏れば、真っ白になってしまうからです。また、差が激しいと、暗い所は黒ぬけしてしまいますし、明るいところは白ぬけしてしまいます。

ここで重要なのは、ライティングとHDRコンプレッション(HDR圧縮)です。

きれいな写真を撮る、1つ目の方法 ライティング

写真を学ぶと、照明が重要であることを実感します。
照明ができていないと、まともな絵にならないからです。
その理由は、簡単です。先の表で示したように、写真で使用するフィルムやCCD(デジカメの撮影素子)のダイナミックレンジが狭いため、私たちが目で見たとおりに撮影できないからです。たとえば、モデルさんが日差しの下で、物陰にいるとします。そのまま写真にとると、モデルさんに撮影の明るさを合わせれば日の当たる場所は「白飛び」してしまいますし、明るい場所に合わせれば、モデルさんは真っ暗になってしまう場合すらあります。このような極端な場合でなくても、きれいに写真を撮ろうとする場合は、写真内の明るさを一定の範囲に収まるように、暗い場所を明るく…つまり、ライティングを行います。

Lightg Sense
モデルさんの撮影シーンです…明暗の差を管理することがライティングの大切な役割のひとつです

ライティングを行うことで、さまざまなインパクトを写真に与えることもできますので、明るさの管理がライティングのすべてではありませんが、とても大切なことで、屋外撮影であっても、きれいな写真を撮るためにはちゃっんと行うべきことの一つです。

写真が発明されてから、ライティングは長い間人の目とフィルムのダイナミックレンジの差を埋める、唯一の技術だったのですが、近年のデジタル写真技術の進歩により、もうひとつの別な対応策…HDR技術が生まれました。

HDR そのままの絵をきれいにディスプレイ等で見る技術

今では、iPhoneやスマートフォンのカメラがフツーにHDRで撮影できますので、意味は分からなくてもHDRはかなり知られていると思います。HDRの技術は、1999年に発表された論文から端を始めたもので、ダイナミックレンジの違いを埋めるために、写真撮影の場合は明るさを2-3EV変えながら撮影して、それらの絵をソフトウェアで合成して、広いダイナックレンジのデータを作り出すことと、そうした作り出したディスプレイ等よりも遥かに広いダイナミックレンジのデータを、ディスプレイ等で見やすくするためにダイナミックレンジを縮めて表示するトーンコンプレッションから成立しています。

MMOS-Mini-D_setForV4EliteA4
10ビットのダイナミックレンジのカメラで3イメージを使用するHDR撮影の例
iPhoneやスマホでは2イメージの簡易撮影が多いみたいです
3-5イメージを撮影するのが一般的で、現代では、ほとんどのカメラに自動撮影機能があります
MMOS-Mini-D_setForV4EliteA4
LDRというのはダイナミックレンジの狭い絵のことです
トーンマッピングとは、表示する媒体のダイナミックレンジに、視覚的に自然に合わせることを言います
MMOS-Mini-D_setForV4EliteA4
2008年に撮影したHDRサンプル
逆光の夕日をバックに照明なしでHDR撮影して、トーンコンプレッションで画面表示できるように変換してあります。
このトーンコンプレッションでは、人の視覚の感覚に近い形で圧縮する方式がとられていますが、
今のスマホなどではもっと簡単に、リニアに圧縮する方式が多いみたいですね
余談ですが当時にHDRを日本でしている人はほとんどなく、カメラメーカーに資料を作って渡したこともあります

3DでHDRといえば、環境光と思う人が多いかも知れませんけど

ここでご説明しているHDRのお話は、HDRの「本道」です。しかし、3Dの世界では、HDRはかなり応用分野から入っており、「環境光」として利用するところから応用されました。ですから、HDRを3Dを入口にして知った人は、ここでご説明しているHDRの話は、初めての話題かもしれません。

環境光とは、3Dのモデルに光を当てるために、点や面を光源とするのではなく、モデルを360度囲む球などの形から光を与える方式で、その光を表現するためにHDRの画像を使用するというものです。HDR画像であれば、自然の光の状態をそのまま表現することができますので、都合がよいというわけです。ただ、この方式の場合のHDRは、本来的には「自然の状態をそのまま360度HDR撮影」することが望ましく、それは実のところかなり大変です。このような環境光の利用は、映画でのレンダリングなんかでよく利用されています。以下に環境光としてHDRを利用するサンプルを示します(とはいっても、環境光だけだと色や影が自然すぎてつまらないため、環境光以外も使用しているので、あんまり「まま」ではないのですが…。

MMOS-Mini-D_setForV4EliteA4
ここで使用しているHDRの写真はヨーロッパの写真家が撮影して販売しているものを使用しています
HDR写真を使用する際は、ガンマ値が1.0なので(普通の写真は2.2です)注意が必要です。

HDRとライティングの違い

ライティングとHDRの本質的な違いは、絵を作る上では、ありません。得られる結果を同等にすることが可能だからです。とはいえ、HDR技術を使う場合は、その結果がどうなるかを理解していないといけません。なにしろ、HDRで表現されている「絵」は、そのままではディスプレイ等でそのまま確認することが出ないからです。ライティングであれば、目で見て確認できますので、そこに大きな違いがあります。

理屈で説明するよりも、サンプルでご説明することがわかりやすいですよね…以下に、非常にライトニングが厄介なパターンを示します。1枚目の絵が、私がまんまにライトニングしたものです。この絵の内容の場合ですと、絵の中のライトだけが光源になっており、非常に明るさのコントロールが難しくなっています。もしも私がHDR技術を利用しない場合は、絵の暗くなりすぎる問題を解決するために、インフィニティライト(無限遠からの光源)や、暗すぎる場所に見えないような光源をいろいろと設置して調節しないと、1枚目のような絵になります。まあ、これはこれで、ドラマチックといえばそうですが、ちょっ暗すぎてよくわからない絵ですよね。

MMOS-Mini-D_setForV4EliteA4
サンプルとして作成した、明暗が厳しい絵…このままだと、ちょっとよくわからないですね。
もしも、これが現実の世界であれば、人の目であれば、真っ暗な場所も本当はよく見えるはずです。

次に示す絵は、絵の出力をEXR形式というHDRのフォーマットで出力し、写真で使用するHDR専用ソフトであるPhotomatixのHDRトーンコンプレッション処理をしたものです。HDRトーンコンプレッション処理は、出力デバイスのダイナミックレンジに合わせて出力することができ、人の目の感覚では、こんな風に見えるという圧縮をしてくれます。今回の出力は、8ビットで表現できるようにしています…つまり普通のjpegで見る前提で、ディスプレイの特性に合わせています。すると、以下のようになります。

MMOS-Mini-D_setForV4EliteA4
Poser+Octane RenderでEXR出力にして、Photomatix Proによりトーンコンプレッションしました。
それだけなんですが、Pixivでは欧米の方から「完璧なバランスでライティングされている!!」とビックリされました。
Photoshopで絵を調べたみたいです…
そりゃそうですよね、完璧なバランスとなるように処理してあるんですから…(^^;

2枚目の絵では、下段のライトの色がオレンジになっていますよね…1枚目は白く見えるのに…この違いの理由は簡単で、ライトが明るすぎるため、通常のままでは、「白飛び」してしまうのです。しかし、CGソフトの中では正しく処理されていますので、正しく「人の感覚に近づけて」トーンコンプレッションすれば、オリジナルの色になるわけです。

この2枚の絵は、全く同じデータを使用しています。1枚目は、CGソフトの標準的な「リニア」なトーンコンプレッション、2枚目は写真用HDR処理ソフトによる、人の目に近い形にトーンコンプレッションしたものです。つまり、「絵」の見方を変えただけです。

全体的な明るさは、2枚目は1枚目よりもかなり明るくなっています。これは、調整で決められます。実際に、人間の目も「暗さに慣れる」と、このような見えたかになります。でも、調整は、人の感覚で自由に決めるものです…つまり、照明でこのような見え方にするのと同じです。つまり、HDRによる処理は、照明と同格の結果を得ることができます。旧来であれば、かなり苦労して「明るさをJpegの幅に収めるように」照明を設定して、絵を作るのですが、HDRを利用するとそうした手間がありません。とはいえ、このように見え方を大きく変えるのですから、出力に「想定外の問題」が出る場合もあります。そうした結果は、Photoshopなんかを使用して補正します。HDRソフトだけでは、一発では、完璧にはならないんですね…これは仕方のないことです。

3Dモデルに光を与え、カメラで撮影するのが、レンダリング

このように、CGのレンダリングは、自然の世界の「光」を再現し、3Dモデルに、「姿」を与え、「絵」に変換することができます。実際のところ、その過程は、写真撮影と変わりません。

これまで、光を与えることに着目してご説明しましたが、それを絵にする際に、CGソフトの中にある「カメラ」を利用します。カメラにより撮影して「絵」を取り出すのですが、その際に、実際のカメラと同じことを考えることになります。次のご説明では、CGレンダリングで使用する「カメラ」について、詳しく説明します。CGの説明で、カメラについての説明がおざなりですので、詳しくご説明します。で、きっと、それはカメラ趣味の方にも役立つと思います。

-広告について-

Google
  Web www.calvadoshof.com