【メモ】ポリゴンの法線について

法線?んなことわかってらあ



って思ってました。今まで。
ところがどっこい、実はツールによって法線が変わってしまう?というような現象が起きることをつい最近知りました。


ことの発端は、unityのゲーム上で、キャラクターモデルの周りにオーラを出すエフェクトが理想の見た目にならなかったことから始まりました。

そのエフェクトはシェーダーで法線方向に向けてエミッションするというようなもので、とあるモデルでは上手くいっているのにとあるモデルでは上手くいっていない。ベテランに相談したら法線がズレてるんじゃない?ってことであ~確かにと。早速3dsMAXで確認したら確かにライティングがバグっていました。(当プロジェクトではUnlit(非ライティング)でモデルを使っているので気が付かなかった)

と、ここで異変に気が付きます。

骨構造も含めての修正はMAYAでのほうがやりやすいので、法線の修正もMAYAでやろうと、同じモデルをMAYAに取り入れると.....
なんと法線が正しいではありませんか!!!

これは一体なにが起きているんだ...

分かったことは、とりあえずツールのインポートセッティングで法線の扱いかたがどうやら違いそうだということ。それからスムージングについてもMAXとMAYAでは機能に差があったりする。(多分)

MAXではMAYAにはないスムージンググループという機能があり、スムージング情報をグルーピングして番号で登録できる。それが原因かとも思いましたが、でもunityで法線が誤っていたのとMAXでの法線の誤り方が一緒だったからMAXでの見え方は正しそうだしなあ...。
MAYAではインポート時法線を勝手に整えてくれるのだろうか...?


ともかく色々調べてみると、unityにもインポート設定で法線をいじる仕組みがあるらしいと知りまして、簡単に言うとモデル本来の法線を使用するか、unityで法線を再計算するかというもの。
詳細はこちら

画像1

FBXのインポートセッティングのModelタブで、Normalsという設定を
Import:モデル本来の法線
Calculate:unityで再計算
という具合でいじれます。再計算する場合、スムージングする角度を
Smoothing Angleでいじれます。

これで再計算した場合でもメッシュを登録しなおしてくれるだけのようなので、ランタイムで常に再計算が走って重くなるというようなことは恐らくなさそうです。

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