[Blender 2.8] ローポリモデルでリアルなシェーディングをしたり、アニメっぽいシェーディングをしたりするのに便利な、法線編集モディファイアーの機能と使い方のご紹介
今回の記事は、 Blenderで『法線編集』をすることができる『法線編集モディファイアー』についてです 。
このモディファイアーを使用すると、ローポリで作る木のモデルの葉に使う放射状の『カスタム法線』をすばやく生成したり、デフォルトの法線を部分的に曲げて、『トゥーンレンダリング』のようなシェーディングをするための法線編集を行うことができます。
『トゥーンレンダリング』とは『トゥーンシェーディング』とも呼ばれ、アニメのように極端に分かれた陰影付けをするレンダリング(シェーディング)方法の1種です。


ちなみに、公式Blenderマニュアルの法線編集モディファイアーのページでは、木のモデルに付属したローポリゴンの葉にこのモディファイアーを使用した具体的な例が紹介されており、またサンプルとしてBlenderファイルの配布もされているようです。ご興味湧かれましたら、是非一度覗きに行ってみてください。
ちなみにのついでに(何か二重になってる気がする汗)なのですが、上記リンク先のExampleで使用されている木モデルを作成したのに使われたのではないか(あくまで推測ですが)と思われる『Sapling Tree Gen』というアドオンについて詳しく記事に書いてみましたので、よろしければご参考までに。
もし、そもそも『シェーディング』や『法線』、『法線編集』、『カスタム法線』等がよくわからないという方がいらっしゃいましたら、
『シェーディング』については下記記事のPart1の方、『法線』、『法線編集』や『カスタム法線』については下記記事のPart2の方にて、詳しく書かせていただいておりますので、そちらを先にご覧ください。
※2020年2月21日 画像を追加、加筆修正を行いました。
※2020年2月25日 加筆修正を行いました。
※2020年3月1日 加筆修正を行いました。
目次
まず最初に

『法線編集モディファイアー』を追加したいオブジェクトを選択しておき、[プロパティエディタ]>[モディファイアー]>[モディファイアーを追加]で表示される一覧から、[法線編集]という項目を選びます。
ちなみに、追加した際の『モディファイアー名』の表記は[Set Split Normals]となるようです。

“Split Normals”とあるので、Blenderで設定できる3つのタイプの法線の中の、『分割法線』からカスタム法線を設定するためのモディファイアーのようですね。

また、この『モディファイアー』は名前通り『法線』を編集するものなので、『自動スムーズ』を有効にしている必要があります。
『自動スムーズ』を有効にするには、[プロパティエディター]>[オブジェクトデータ]>[ノーマル]>[自動スムーズ]という項目を探し出し、チェックを入れてください。
ちなみに、『自動スムーズ』が有効になっていない場合、この『モディファイアー』を追加した時に、モディファイアーの下部にエラー表示が出ます。


[法線編集]の詳細設定項目一覧
- モード …カスタム法線を生成する基準となる計算方法。
- [放射(Radial)] …法線を「原点→頂点座標」というベクトルで揃える。
- [指向性(Directional)] …すべての法線を特定のターゲットオブジェクトに向ける。
- [ターゲットオブジェクト(Target Object)] …カスタム法線を生成するときに基準にするオブジェクト。
- [平行法線(Parallel Normals)] …すべての法線を両方のオブジェクトの原点間の線に平行する。
- [オフセット(Offset)] …オブジェクト原点からのオフセット。
- [ミックスモード(Mix Mode)] …新しく生成された法線で既存の法線に影響を与える方法。
- [ミックス係数(Mix Factor)] …カスタム法線を既存の法線に影響させる割合。
- [頂点グループ(Vertex Group)] …『頂点グループ』のウェイト情報を使って、[ミックス係数]で設定した影響を制御する。
- [最大角度(Max Angle)] …元の法線から、カスタム法線に変更する際の角度のしきい値に制限を付ける。
- [ポリゴンの法線をロック(Lock Polygon Normals)] …カスタム法線の設定による(面の表裏の反転)を防ぐ。
モード
カスタム法線を生成する基準となる計算方法を、2つのタイプから選択します。
[放射(Radial)]
法線を「原点→頂点座標」というベクトルで揃えます。
つまり、すべての法線は、楕円面から放出されたかのように、指定された中心点から放射されるように見えます。


[指向性(Directional)]
すべての法線を特定のターゲットオブジェクトに向けます。
こちらのモードでは、[ターゲットオブジェクト]に何かしらのオブジェクトを設定することが必須となります。
もしも[ターゲットオブジェクト]が空欄だと、エラー表示が出ます。

[ターゲットオブジェクト(Target Object)]
カスタム法線を生成するときに、このオブジェクトの原点を基準点として使用します。

[放射]モードではオプションとして任意的に設定する項目ですが、[指向性]モードでは設定が必須な項目です。
- [放射]モードで[ターゲットオブジェクト]に”エンプティ”を設定した場合

- [指向性]モードで[ターゲットオブジェクト]に”エンプティ”を設定した場合

ちなみに、この[ターゲットオブジェクト]に”Camera”を設定している状態で、カメラ視点([0])からオブジェクトを見てみると、まるで全く陰影付けがされていないようなシェーディングの表示を見る事ができます。

[平行法線(Parallel Normals)]
ターゲットの原点に向かって収束するのではなく、すべての法線を両方のオブジェクトの原点間の線に平行にします。
[指向性]モードでのみ設定可能な項目です。

[オフセット(Offset)]
オブジェクトの原点を基準としたオフセットを設定して、カスタム法線の生成に使用します。
[放射]モードの場合は[ターゲットオブジェクト]が設定されていない時、[指向性]モードの場合は[平行法線]が設定されている時のみ設定可能になります。
立方体オブジェクトだけじゃ味気ないのでサンプル用に作った柱モデルを使って変化を見てみます。

[放射]モードを選択して、法線の基準となる原点を、この[オフセット]でX軸方向に動かしてみました。

[ミックスモード(Mix Mode)]
新しく生成された法線で既存の法線に影響を与える方法を設定します。
設定出来るタイプは以下の4つのタイプから選択します。
- [コピー(Copy)] …新しい法線を既存の法線へコピー(上書き)します。
- [追加(Add)] …「既存の法線 + 新しい法線」という和算で設定します。
- [減算(Subtract)] …「新しい法線 - 既存の法線」という減算で設定します。
- [乗算(Multiply)] …「既存の法線 ・ 新しい法線」という内積で設定します。※外積ではない(“not” cross product)そうです。




[ミックス係数(Mix Factor)]
生成されたカスタム法線を、どれだけ既存の法線に影響させるかの割合を設定します。

[頂点グループ(Vertex Group)]
作成した『頂点グループ』の頂点毎のウェイト情報を使って、[ミックス係数]で設定した影響を制御できます。
『頂点グループ』の影響は、右側の小さな「矢印(↔)」ボタンを使用して反転させる事ができます。
『頂点グループ』自体についてよくご存じない方は、↓の記事をご覧ください。基本的な機能や具体的な用途等、詳しくご紹介させていただいております。
今回は→の画像のような、上から下に徐々に”ウェイト”値が下がる『頂点グループ』を作成し、仮に”normal_weight”と名付けました。

そして、”normal_weight”を使ってカスタム法線のミックス度合いを変化させてみました。
[指向性]モードで[ターゲットオブジェクト: Camera]を設定している状態でのカメラ視点(テンキー[0])表示で比較してみました。
- [頂点グループ]に何も設定していない時はのっぺりとした陰影が全く付いてない状態。
- [頂点グループ]に”normal_weight”を設定した状態では、上に行くほど、カスタム法線がミックスされる度合いが強まり、陰影が付かない状態。
- 2の反転。

[最大角度(Max Angle)]
新しく生成されたカスタム法線が、指定されたしきい値を超える元の法線に対する角度を持つことを禁止します。
極端な法線変更は、面の表裏を反転させてしまい、その結果、シェーディングが醜いものになってしまう可能性があります。
この[最大角度]では、元の法線から変更する角度に制限を加えることによって、その極端な法線変更を防ぐのに役立ちます。

[ポリゴンの法線をロック(Lock Polygon Normals)]
法線が、コーナーのカスタム法線を指す辺と一致しなくなったポリゴンの反転(面の表裏の反転)を防ぎます。
シェーディングの問題の回避にも役立ちます。
[ミックスモード]で[減算]か[乗算]を選び、[最大角度]であまり制限を加えていなかった場合、変更を加えた法線の角度が元のものから変化しすぎて、大抵、一部(または全部)の『面』は『面の向き』が裏表逆になってしまいます。
この[ポリゴンの法線をロック]を有効にしておけば、『面の向き』が反転するのを防ぐことができます。
以下のGifでは、[ビューポートオーバーレイ]>[ジオメトリ]>[面の向き]を有効にして、『面の向き』を色で表示したものになります。表面であれば青、裏面であれば赤で表示されています。


おまけ:騙し絵「不可能円柱」風モデル
よく見ると完全に種が見えてしまうような残念な仕上がりではありますが、騙し絵の「不可能円柱」を出来る限り再現してみました。

参考にさせていただいたサイト・ページ一覧
モディファイアー関連の記事のご紹介
この記事の他にも、Blenderの様々なモディファイアーについて、機能や使い方を私自身も試しながらではありますが、ご紹介させていただいております。よろしければ、こちらも併せてご覧ください。
変更
- データ転送
- メッシュキャッシュ
- メッシュ連番キャッシュ