(約 5,000文字の記事です。)

Mayaの基礎の学習中に気になった頂点法線の話。Blenderの場合ではどうなっていたっけ?と思って調べたら結構重要な「用語の違い」が分かったので記事にしておきます。

対象読者はBlenderユーザーです。
基礎知識はMayaの解説を基本とする
Maya使っていなくてBlenderのみのユーザーも、まずは3DCGの基本知識としてはMayaでの解説をベースに考えて欲しい。そうすることで今のBlenderの実装や用語の違いを正しく理解できると思うので。
【まずはじめに】頂点法線と面法線の違い
まずは基礎知識の確認と補充ね。学習中にビデオの中で頂点法線とスムーズシェードの話が出てきたので改めて確認してみた。こちらの記事の解説がとても分かりやすい。




なおMaya公式情報にもかなり詳しい説明がある。



オートデスク製品のいいところは、こういうマニュアル類も日本語できちんと提供されている点。なので正しい知識を身に付けられる点でも、有料のオートデスク製品は魅力的。
Blenderでは謎の「分割法線」という用語があるが?
なんだこれは?基礎知識の中に存在しない謎の単語が出てきた。


英語UIではSplit Normalsとなっている。一体何をスプリット(Split, 分割)しているというのだ?英語で調べてみて出てきた結果。ページをGoogle翻訳すれば読みやすいだろう。


一般的な頂点法線のことをBlenderでは「分割法線」と呼んでいる


一般的に頂点法線はその頂点に接する面の数だけ存在するので、Blenderの分割法線表示にしたピンク色の複数の線がいわゆる頂点法線に該当する。


問題は次だ。青い線、これは頂点の法線(Vertex Normals, 頂点法線)となっている。大混乱。


Blenderで言っている頂点の法線は何を意味するのか?
先ほどと同じサイトからヒット。


分割法線についてズバリ書いてある。ただしこの解説は「あくまでもBlenderのみに限る話」であって3DCG一般の理解とは異なる。
頂点法線は、頂点が指す方向です。頂点には、1 つまたは複数の法線を設定できます。複数の法線がある場合、分割法線と呼びます。頂点に単一の法線がある場合、周囲の各面の方向を平均して法線を計算します。
青線の表現がちょっと分かりにくいが、Blenderの頂点法線はどうやら「複数の面の面法線を平均した法線の方向」を単一の法線として示しているようだ。カスタムしていない(Blenderが自動で設定した)各分割法線の平均が頂点法線とも言える。結果、Blenderの頂点法線の方向とは、実はスムーズシェードで表示したときの頂点法線を常時表示している、とも言える。(これは色々実験して間違いないことを確認した。)
また上記公式サイトにはサラッと分割法線の調整方法が書かれている。頂点選択モードと面選択モードの2つをアクティブにするのが肝だ。



まず最初に頂点選択ボタンを押し、次にShiftキーを押したまま面選択ボタンを押せばOK。これで面を選べば選択面に共通する頂点の分割法線を編集できる。


上記項目を色々試したが、平均>カスタム法線の挙動だけが意味不明だったので諦めた。調べても答えが出てこなかったので諦めることに😭Blenderでの法線の調整に不安。素直に有名アドオンを使ったほうがよさそう。
ま、たいていの場合は、面から設定、回転、ターゲットの方へ、マージで何とかなるだろう。ちなみにカスタム状態を元に戻すためには分割(Split)を選べば元に戻る。
またBlenderの純正機能だけでは個別に法線を1つずつ任意の方向に調整するのは大変だと思う。操作自体はできることを確認したが、3軸ごとの角度指定を後から再編集できるのか不明。(自動で計算させて方向をそろえたり、目分量でマウスで方向を変えることはできた。)



分割法線1つずつについてXYZ各軸の回転方向の指定とかできるのかな?よく分からない。入力インターフェース(テーブル)があるのかどうかも分からない。素直に便利アドオンを使った方がいいだろう。
【結論】
・一般的に言う頂点法線のことをBlenderでは「分割法線」と再定義している。
・Blenderの頂点法線は「頂点に接する面の面法線の平均」を示す法線。
カスタム分割法線とは「ユーザーがカスタムした」分割法線のこと
Blenderでは、
- デフォルトで自動生成した分割法線(フラットシェード時)と、
- 面法線の平均=自動生成された全ての分割法線の平均(スムーズシェード時)の、
この2つの法線状態がある。この2つはいずれもBlenderが自動生成している場合にはシェード切替え時に自動的に頂点法線が切り替わる。
だがユーザーが分割法線をカスタムした場合、Blenderはその分割法線を「カスタム分割法線(Custom Split Normals)」という別名を付けて、これまでの自動生成の分割法線と区別している。そして一度カスタム分割法線になると、それ以後、Blenderは自動で法線の再生成をしてくれない(法線の固定、ロック)。これが悪さをするときがたまにある。普段はスムーズシェードを使っているユーザーの場合、なぜか一部のポリゴンだけがカクカクしている、変な影が出る、という状況。
これを解決するための方法として、選択オブジェクト内の全てのカスタム分割法線=ロックされた分割法線を一気に元に戻すボタン(ロックを解除するボタン)がこちら。


なおこのボタンでは選択オブジェクト内の全ての分割法線を初期化することしかできない。「選択している任意の分割法線データだけをクリア」ということはできない。
このボタンの場所に「+カスタム分割法線データを追加」というボタンがある場合には選択オブジェクト内にカスタム分割法線はないことになる。ピュアなメッシュだと思っていい。



Web上から持ってきた他人作成データにはカスタム分割法線が入っていることが多々あるので要注意。
【コラム】メッシュがつながっているのにフラットシェードでも変なエッジが出る正体
何かの拍子にカスタム法線が設定された場合にそうなる。一度カスタム法線がセットされるとMayaでもBlenderでも基本的には自動で滑らかになったりカクカクになったりしない。法線情報が固定(ロック)される。
例えば、分割法線をカスタムしていない場合、通常はフラットシェードにすると各分割法線が別々の方向を向いて表示され、スムーズシェードにすると各分割法線が計算されて平均値が頂点法線として1本ずつ表示される。PCがシェード切替え時に瞬時に頂点法線を再計算して頂点法線や分割法線を再描画している。なので法線がカスタムされていなければ基本的に自動で切り替わる。これは誰もが経験済みの挙動。
だが分割法線をカスタムしてしまうと、以後はその法線情報がロックされて自動で切り替わらなくなるのだ。
例えば、フラットシェードにした後で法線をカスタムして分割法線を全て平均化すれば、モードがフラットシェードでも見た目がスムーズシェードと同じにできる。逆にスムーズシェードで法線を誤ってカスタムして分割法線に分割(Split)させると、各分割法線が別々の方向を向いてスムーズシェードでもカクカクのフラットシェードの見た目にできる。



なおブレンダーでは「本来滑らかに見えるモードでカクカクに見えるように法線をカスタムすると自動でシャープをマーク(水色の線)がセットされる。
右クリックのシャープをクリアで元に戻せる。
だから普段はスムーズシェードで作業している人が、一部のパーツやメッシュを外部ファイルからインポートしてきたり、オブジェクトの一部のメッシュを分割したり結合したりして知らないうちに一部の頂点法線をカスタム状態にしていたりすると、いくらスムーズシェードにしても一向に一部のカクカクや不自然な影(誤った法線方向に起因)が直らない。
そういうときには法線方向を修正するしかない。具体的にはカスタム分割法線のクリア、あるいは手動で各分割法線をコツコツと正しい方向に再調整すれば直る。
【コラム☕】面が分離したメッシュの頂点法線もアドオンで向きを統一できる
またもし一部のメッシュが重複頂点であってメッシュを意図的に地続きにさせていない=分離した面の場合でも、カスタム法線で法線方向を周囲のメッシュ面の平均の面法線とそろえてあげれば、変な影はできず、見た目上は一体メッシュのように見えるわけだ。変な影が出ない。ただしこちらで紹介されている様なアドオンを使うのが無難。(Normal Brush for Blender, Yet Another Vertex Normal Editor (Y.A.V.N.E.))
まとめ
うん、ちょっと単語の意味や使い方がBlenderとMayaとでは異なる。まず共通点としては、
- フラットシェードでは頂点法線全部を可視化できる
- スムーズシェードでは頂点法線が平均化されて1頂点で1本の法線表示になる
そしてMayaの場合、
- 頂点法線の数は、その頂点に接する面の数だけ存在する
- 頂点法線をカスタムできるツールが標準装備
これに対してBlenderでは、
- Blenderでは頂点法線のことを「分割法線」という用語に再定義している
- 複数ある分割法線のそれぞれを個別に制御可能(平均化して1つにまとめる・元通りに分割するなど、普通の頂点法線の編集と同様)
- Blenderでの頂点法線は「頂点に接する全ての面の面法線の平均」を頂点法線として表示している
- Blenderの頂点法線を直接操作することはできない(面を変形させて面の法線方向を変える必要がある)
- Blenderのみの機能では分割法線や頂点法線は編集しづらい(手間がかかる)
- アドオンを使えば分割法線や頂点法線を快適に編集できる
Blenderのみの学習者の場合、用語の定義がいわゆる一般的な3DCGの解説と異なるので、理解に苦しむ可能性がある。Blender特有の用語だと理解すべし。
DCCツールを複数学ぶと色んな発見がある😊
今回の創作活動は約3時間30分(累積 約2,969時間)
(852回目のブログ更新)
筆者はAmazonアソシエイト・プログラムに参加しています。(AmazonアソシエイトとはAmazon.co.jpの商品を宣伝し所定の条件を満たすことで紹介料をAmazon様から頂けるという大変ありがたい仕組みのこと。)
以下のリンクを経由してAmazonでお買物をするとその購入額の1~3%ほどのお小遣いが私に寄付されます。誰が何を買ったという情報は私には通知されませんのでご安心下さい😊
以下の商品名や画像アイコン、またはAmazonページへのリンクなどを経由して頂ければ紹介商品以外のご購入でもOKですよ~。