見出し画像

Normal(法線)編集についての個人的理解【Blender】

01.はじめに

皆さん、こんにちは。涼海と申します。

先日、モデルを人に見せたときに
「ここの法線、なんか向きがちょっとずれてるけど、そういう仕様ですか?」
と言われて、全くNormalを編集していなかった私は一瞬固まってしまいました。

以降そんなことがないように、今回は、BlenderにおけるNormal(法線)編集方法についての個人的理解をメモしていこうと思います。

間違っている部分もあるかもしれませんが、その時には私のツイッターのほうにご連絡いただけると大変うれしく思います。

では、今回もよろしくお願いいたします。

2022/02/26 04.に追記あり

02.参考

最初に、参考にさせていただいたサイトのご紹介です。

大変お世話になりました。

03.Normalの表示非表示

Normalをビューポート上に表示させるには、オブジェクトを選択後Edit Modeにして

Viewport Overlays > Normals
ここの左側のマークをクリック

です。

左から

Vertex Normal : 頂点法線。

Split Normal : 分割頂点。ハードエッジかソフトエッジかを示してるぽい。

Face Normal : 面法線。頂点法線4つ(3つ)の平均らしい。面が反転していないかを見ることができる。

を表示非表示できます。

(面が反転しているかしていないかは、Face Orientationを使った方がわかりやすいかもしれません。)

sizeは、法線の表示するための線の長さです。初期値だと長すぎるときがあるので、適度に短くして見えやすい状態にすると良いかもしれません。

画像1

04.全体をハードエッジ、ソフトエッジにする

オブジェクト全体をハードエッジ、ソフトエッジにする方法は、Object Modeで、

オブジェクトを選択して右クリック > Shade Smooth / Shade Flat

or

オブジェクトを選択した状態 > Object > Shade Smooth / Shade Flat

です。

画像2

〈追記〉2022/02/26

先日、Shade smoothによる法線の向きがなんか求めているものと違うなと思っていたのですが、それをちょっと確認してみました。

画像8

上画像は、Mayaでソフトエッジをかけたときの法線です。

歯車の面まっすぐ90度に法線が向いています。これが私が求めていた法線で、平らな部分に不必要な陰ができません。

画像9

上画像は、BlenderでShade Smoothをかけたときの法線です。

こちらは面に90度で法線がなく、斜めに出ています。
その結果、不必要な陰(水色部分)が出てしまっています。

これをなくすためには、Set to Faceを行うと良いと思ったのですが、現在(2022/02/26)適切なワークフローを開拓中です。
もし何か知っていることがありましたら、私のツイッターにご連絡を頂けると大変うれしく思います。


追記_02(2022/08/17)

MayaとBlenderでのSmoothEdge周りについてわかったことがあったので追記します。

以下ツイートのように、そもそもMayaとBlenderでのSmoothEdge(Maya : Soft Edge / Blender : Shade Smooth)周りは結果が異なるそうで、似た名前だけど同じことをしているわけではないそうです。

どちらかと言えば、Mayaのほうが特殊らしく、ギルティギアで使用されているSoft ImageはBlenderの挙動のほうが似ていそうでした。

そのためワークフロー的にMayaを使用する場合には、Mayaに持っていって法線を編集するのがベスト。
ワークフロー的にそうでもなければBlenderで編集しても大丈夫そうです。
最終的には見た目が良ければそれでOKだと思いますが。

確認してみましょう。
以下画像はリストバンドを簡単に作成しスムースしたものです。
ピンクがBlender、グリーンがMayaの法線ですが、特に内側の法線の向きが異なっていますね。

Blender
Maya
2枚を重ねてみた

こちらは正面から見たものですが、こっちのほうが法線は同じに見えます。

Blender
Maya

プレーンを45°にしても見ましたが、それはどちらも同じ法線の向きをしていました。


05.Normalの編集ツール

各種編集ツールは

Mesh > Normals

以下に入っております。

ここの説明は以下サイトを参考にすると良いかと思います。
個人的には一つ一つのNormalを個別に編集することは少ないので、頻繁に使うツールたちではないかなと思っております。

06.Normalを初期状態に戻す方法

ここからが、このメモの本編になるかなと思います。
何か意図しない操作をしてしまって、変な方向に法線が向いてしまったときに行う操作です。

まずは、BlenderにおけるNormalの操作についてです。
BlenderでのNormalの操作は、個人的に2つに分けて理解しています。

一つ目は、Shade Smooth / Shade Flat による操作です。
上記02.に書いた全体をハードエッジ、ソフトエッジにする操作に加え、選択したFaceに対しても同じ操作ができます。

Edit Mode > Face > Shade Smooth / Shade Flat

画像3

この操作によって変更したNormalは、04.の操作でハードエッジソフトエッジに変更できるので、そこまで難しくはないかなと思っております。

2つ目は、Custom Normalによる操作です。
この操作は、上記05.にある個別にNormalを編集する操作で、以下画像のツールを使用するものです。

画像4

このツールを使うことによって変更したNormalは、一つ目のShade Smooth / Shade Flatの操作で、元に戻すことはできません。

元に戻すためには、

Mesh > Normals > Reset Vectors

or

 Object Data Properties > Geometry Data > Clear Custom Split Normals Data

をクリックする必要があります。

画像5

この二つは同じ操作となります。

上記をまとめると、モデルを作った後に法線が何か変だなと思ったら、

1. Shade Smooth / Shade Flatを行ってみる。

2. Reset Vectors / Clear Custom Split Normals Dataを行ってみる。

をやってみると良いかもしれません。

07.一つのモデルにハードエッジとソフトエッジを混在させる

ローポリのモデルでよく使われるであろうハードエッジとソフトエッジの混在は、06.の二つの方法両方で可能ですが、1つ目の方法では、面に対してのみ適用されるので、「このエッジをパキっとさせたい」などのエッジ単位で編集することが難しいかなと思います。

そのため、2つ目の方法で、法線編集を行うと良いかなと思います。
以下、その方法です。

Edit mode > エッジを選択して右クリック > Mark Shape

これを行うことで、選択したエッジが水色になり、そのエッジだけハードエッジにすることが可能です。
間違えたときはClear Shapeをクリックします。

画像6

しかし、Mark Shapeをしても、ハードエッジにならない場合があります。

その場合には、

Object Data Properties > Normals > Auto Smooth

を確認してみてください。ここにチェックが入っていないと、Mark Shapeでハードエッジになりません。

画像7

基本的には、Custom Normalツール(06.の2つ目)による操作を行うと自動的にチェックが入りますが、それを使っていない場合には入っていないので、確認してチェックを入れましょう。

08.Auto Smoothとは?

07.で出てきたAuto Smoothは、数値が入れられる場合と入れられない場合があります。

詳しくは、以下サイトを読んでいただく方が良いと思うのですが、簡単に説明すると、

・設定した角度より小さい角度の場所ではSmooth、大きい角度の場所ではFlatになる設定
・Shade Smooth状態のモデルじゃないと適用できない
・Custom Split Normals Dataがあると数値が入れられない。ないと数値が入れられる

この3つがわかっていれば、大丈夫かなと思います。
というか、自分はこれしかわかっておりません。

特に、Smooth Shadeじゃないと適用できないということは覚えておくと、チェックを入れられないということはなくなるかなと思います。


追記(2022/08/17)

Auto Smoothについてちゃんと確認する必要があったため、メモしておきます。

以下画像は左から
-150,-90,-30,0,30,90,150
の角を作ったプレーンです。

角度の場所は以下画像のようになります。

ここですべてのプレーンをShade Smoothにして、Auto Smoothを設定して角度を変更してみましょう。


  • 0°の場合はすべてのプレーンのエッジがハードのままになっている。

30,90,150のエッジはハードエッジになっている
マイナスのほうも同じ
  • 30°
    30°の場合は、角度が30,-30のプレーンだけスムースエッジになり、他はハードのままだった。

また-30のほうは一部だけハードエッジになってしまっている。
詳細は不明だが、Blenderは小数点以下が弱いという話を聞いたことがある。そのため、この頂点のみは小数点以下まで見ると30°に達しておらず、ハードエッジになってしまったという可能性が考えられる。

  • 90°
    90°の場合では、30,90,-30,-90のプレーンがスムースになり、150,-150のプレーンはハードのままだった。

こちらも一部のエッジだけハードになってしまっている
  • 150°
    150°の場合には30,90,-30,-90がスムーズ、-150が一部スムース、150がハードとなった。
    Auto Smoothを151°にした場合には150,-150ともにスムースエッジとなったため、上記小数点が悪さをしていると推測している。

Auto Smoothを150°にしてもハードエッジのまま
-150のプレーンは一部スムースがかかった
Auto Smoothを151°にするとすべてスムースに
上記と同じ
  • 180°
    180°にするとすべてのエッジにスムースがかかった。

上記結果からAuto Smoothは

角度の絶対値をみて、Auto Smoothで設定した角度より、
小さい角度では Smooth がかかり、
大きい角度では Hard がかかる

という設定であると、私は判断しました。

これを考えると、すべてをスムースにしたい場合には180°を入れてあげると良いです。
また、一部をハードエッジにしたい場合には、ここに適する角度を入れるか、Mark Sharpをするかの2パターンが考えられます。


09.おわりに

ここまで読んでいただき、大変ありがとうございます。

法線というのは、個人的にはモデリングで何となく作れるようになったかなーってなったときに立ちはだかる一つの壁かなとも思いますので、その壁を乗り越える一助になれば幸いでございます。
ちなみに私はまだその壁をのぼっている最中です笑

さて、では最後に私のおすすめ作業用BGMを貼って終わりにしようかと思います。

また、どこかで会えたら。


10.追記

Normalに関して、知ったことがあるので追記します。

・法線手動制御はできない

一つ目は法線の手動での制御は今のところ難しいということです。
私のほうで深く調べているわけではないのですが、他ソフトにあるような法線をギズモで設定するという操作はないとのお話を聞きました。
もしどなたか「これだったらできるよ!」という情報をお持ちの方がいましたらお話お聞き出来ると幸いです。

そのため、Blenderでの手動っぽい制御はどうしたらよいのか考えたところ

欲しい法線を法線転写を用いて行う
具体的には、プレーンを法線転写し、その転写を欲しい頂点にだけ行う

みたいなことをしたらよいのかなと考えております。
実際に行ってはいないため、机上の空論ですが。

・Waighted Normal について勉強しておくことが今後良いことになりそう

これは本当に話を聞いただけなのですが、これをうまく使うと良い感じになるらしいです。
本当に何もわからないので、いつか勉強したい......。

この記事が気に入ったらサポートをしてみませんか?