読者です 読者をやめる 読者になる 読者になる

当たったらどうすんだよ

当たらなければどうということはない

3D CGテクスチャリングを2歩か3歩進めたい! 3:シェーディングの基礎と色の話

前回まではUV展開の考え方について書きました。
話を進めるうちに、またUVについては触れなければならなくなると思いますが、いったんそこは離れて、今回はテクスチャリングの中心にある色とシェーディングの解説をしたいと思います。

標準ノーマルカメラ

f:id:kanianthi:20160621200411j:plain

↑のようにシンプルなシーンをBlenderで設定しました。

単純に、90度回転して立たせた平面ポリゴンとカメラがあるだけです。カメラは真っすぐ垂直に平面を向いています。対象物に対してノーマル方向に設置してあるのでノーマルカメラと言います。

このとき、光源(ライト)も平面に対して鉛直な平行光源(サンなど)を設置したとすると、レンダリング結果はどうなるでしょうか?

え?マテリアルを設定しないとなにもレンダリングされない?ww
いやいやwwそんなとんちをしたいわけではなくてですねww

この場合、レンダリングした結果は、マテリアルもしくはテクスチャが「そのまんま表示される」はずなのです。この「そのまんま」というのは「いっさい陰影がない状態」という意味になります。

f:id:kanianthi:20160621201650j:plain

↑シーンを真横から見たものです。

(原点に置いて置くと平面が見えなくなるのでwズラしました。)

すべてが正対している状態では、物体を照らす光と反射して返ってくる光の方向が一致します。これは「光の減衰が最も起こらない状態」であり、陰影(シェーディング)が発生しない状態なのです。

シェーディングの基礎

f:id:kanianthi:20160621202640j:plain

↑を見てください。

平面から面を押し出し、角度をつけてみました。ビューポートに陰影が発生しているのが分かると思います。

f:id:kanianthi:20160621203031j:plain

↑真上から見た図です。

Aはもともとの平面、BとCは追加した曲がっている平面です。
上から見るとはっきり分かる通り、Aの面に入射した光はそのまま真っすぐに反射されるので1:1の比率でカメラに戻ります。しかし、BとCの面については傾きがあるので、光は真っすぐ返ることができません。

BもしくはCの傾きが0度、すなわち平行であるときは1:1ですが、傾きの角度がきつくなるにつれて反射光は少なくなり、90度に達したときに0になります。

実際にレンダリングしてみましょう。

f:id:kanianthi:20160621204919p:plain

↑分かりやすくするために床を追加し「影」を落としました。確かに、傾きをつけた両サイドの面が「暗く」なっています。これは、「入射した光に対して返ってきた光が少ない」から起きた現象です。

グラデーションの誕生

さらに一歩進めて、平面をこんな風に加工します。

f:id:kanianthi:20160621205659j:plain

↑はい、両サイドの傾き面を分割し、角度をオフセットしました。その結果は…

f:id:kanianthi:20160621205932p:plain

当然こうなりますよね。
真ん中の平行面に対して、両端の面はそれぞれの傾き角度に応じて反射光が少なくなるので減衰し、暗くなります。

それではさらに…

f:id:kanianthi:20160621210642j:plain

一気にベベルで角を増やしました。全体的に「丸く」なりましたね。

f:id:kanianthi:20160621210808p:plain

レンダリングすると↑になります。
このように、傾きを細分化して分割数を増やしていくとそれだけ反射光の減衰も滑らかになっていきます。やがて円柱になるまで面を分割してしまうと、反射光の減衰はグラデーションになることが理解できると思います。

逆に考えると、フォトショップなどで「円柱グラデーション」を使って長方形に色を塗ると、なんと!なぜか円柱に見えてしまう理由がこれです。

さて、今回はここまでにします。

次回は「白と黒の秘密」についてです。