法線メモ

Blenderの面法線の仕様についてのメモ。


Blenderのメッシュはデフォルトでは面法線を使う。
Python的にはMeshFaceクラスのnormal属性で、これを採用すると曲面がカクカクに見える。
だからUVSphereは初期状態ではカクカクになる。
で、MeshFaceはsmoothという属性を持っていてこいつをTrueにしてやると頂点ごとの法線を使うようになる。
Python的にはMeshVertexクラスのnormal属性でこっちを使う。
面の法線は三角形の3頂点から計算すれば求められるのだが、頂点の法線は頂点を含む三角形全部の面法線を足して正規化するという手順で求める(多分)。
立方体だと、各頂点は3つの面に含まれるのでこの3つの面法線の平均(足して正規化)が頂点法線になる。


だいたい、仕様としてはこんな感じなのだが、Blenderにはさらにauto smoothがある。
Python的にはMeshクラスのautosmooth属性で、こいつをオンにするとすぐには何も起こらない。
この機能は、メッシュそのものには作用せずにレンダリング結果のみに影響するからだ。
どうせならメッシュに作用して各面のsmoothをオン・オフしてくる機能だとありがたいのだがー。


ちなみにオブジェクトにsmoothをかけるというのは、中の面全部のsmoothをTrueにしてやるということになる(多分)。