この記事はBlender3.5を基準に書かれています。Blenderはバージョンによって仕様が大きく異なるので注意しましょう。
また執筆者が3D作成した際の備忘録であるため最適解ではないかもしれませんのでご了承ください。
項目
シェーダーとは
シェーダーとはシェーディングする機能のことです。
シェーディングって何?
シェーディングとは3Dオブジェクトに色や影を付けて立体感や質感を出す処理のことです。
超簡単なシェーダー設定
作ったばかりのポリゴンメッシュは頂点からできた面で構成されていて、角ばったものになっています。しかし大抵の場合作りたいものはもっと滑らかな表面にしたい!はずです。
もちろん頂点を増やしてより細かく作れば滑らかになりますが、それではデータ量が増えて動作が重くなってしまいます。
そこでシェーダーの出番です。
オブジェクトモードで設定したいオブジェクトを選択して右クリックします。
すると「スムーズシェード」「フラットシェード」があります。
これを選択するだけです。

フラットシェードは初期の角ばった設定です。
面に忠実に描画するので頂点の角がしっかり見えます。

スムーズシェードは滑らかな設定です。
頂点が目立たないように影が補間されます。
シェーダーをもう少し細かく設定する
オブジェクトのシェーダー設定では全体の設定だけで一部を切り替えることはできません。



円柱などの曲面と角ばった面が両立するオブジェクトの設定はどうすればいいのでしょうか?
この項目ではそれについて考えていきます。
ノーマルを平均で設定

編集モードで設定したい頂点を選択してから、
左上のメッシュの項目からノーマル>>平均を選びます。
ここから「面積」「コーナー角度」を選択します。
「面積」は頂点が構成している面の面積から影響度合いをみて計算されます。
「コーナー角度」では頂点が構成している面の角度をみて計算されます。
がこの違いは触っていても分からないことが多いので基本「面積」でいいでしょう。
カスタム法線で設定
編集モードのメッシュ>>ノーマル>>平均に「カスタム法線」もあることが分かります。
これは何なのでしょうか?
シャープをマークする
オブジェクトを滑らかなスムーズシェードに設定される前提で、逆にシャープにしたい箇所だけを指定する方法があります。
この設定ではシャープにしたい辺を選択します。(複数の頂点でも良いです)

辺を選択したら左上の辺の項目からシャープをマークを選びます。
そうすると選択された辺が水色になります。
消すときはシャープをクリアで消せます。
シャープに設定された辺はシェーダーがスムーズシェードになっても角を保つことができます。
カスタム法線で設定
シャープをマークしたらメッシュ>>ノーマル>>平均の「カスタム法線」を選択しましょう。
シャープ設定した箇所はフラットシェードになり、その他はスムーズシェードのような描画になりました。
そもそも面がひっくり返ってない?
モデリングをしていると意図せず面の向きが反転してしまうことがあります。
そうなると当然反転した面は描画されません。
さらにシェーディングも向きが変わってしまうのでスムーズシェードの描画はずれてきてしまいます。

面の向きを確認する
Blenderでは面の向きを確認することができます。

右上にあるビューポートオーバーレイ(円が二つ重なっているようなアイコン)を開きます。
その中に「面の向き」があるのでチェックを入れてみます。
(オブジェクトモードと編集モードでビューポートオーバーレイ画面が違います)
表向きの面は青く、裏側の面は赤く表示されます。
面の向きを編集する

編集モードで編集したい面を選択し、
左上のメッシュ>>ノーマル>>「反転」を選択すると選択した面が反転します。
また複雑な形状でなければ、全選択して「面の向きを外側に揃える」の方が楽です。
【余談】ノーマル、法線って何?
今回のシェーダー設定に「ノーマル」という項目が出てきました。
ノーマルとは何なのでしょうか?
ノーマル(法線)は向いている方向
ノーマルは法線とも呼ばれ、頂点と面がそれぞれノーマルを持っています。
面の方がイメージしやすいですが、面には面が向いている方向があります。
これをノーマルといいます。
点なので分かりづらいですが頂点にも同じようにあります。
数学の話になるのでここでは詳しく書きませんが、
面のノーマルを頂点のノーマルに近づけるとその頂点は滑らかに見えるようになります。
ノーマルを確認する
ノーマルはBlenderで直接確認することができます。

編集モードで右上にあるビューポートオーバーレイ(円が二つ重なっているようなアイコン)を開きます。
下の方にあるノーマルからノーマルの表示を設定できます。
左から
「頂点のノーマルを表示」(青色)
「面の頂点ノーマルを表示」(ピンク色)
「面のノーマルを表示」(水色)
です。表示の長さも設定できます。



実際に見比べてみましょう。(画像が小さいので実際に操作して確認してみてください)
フラットシェードでは頂点の位置に頂点ノーマルと面ノーマルがずれて表示されていることが分かります。
スムーズシェードでは頂点位置の面ノーマルは頂点ノーマルと完全に一致していて見えなくなっています。
カスタム法線ではスムーズにした方向のノーマルだけ重なっていることが分かります。
あとがき
今回はノーマルに重点をおいたシェーディング設定についてまとめました。
しかし様々な描画処理ができるシェーディングはもちろん、
ノーマルにもこれ以外の使い方があるので勉強してみると面白いかもしれません。
今回はここまで
コメント