スムージング角度

今までは面法線をそのまま頂点法線としていたため、SmoothシェーディングでもFlatシェーディングとなんら変わりのない表示がされていました。面倒くさいのでまあいっかーと放置していたのですが、ふと思い立ったので頂点法線をそれっぽく求めてみました。


 

左の画像が変更前で、右の画像が変更後。変化は明らかですね。ただ、よく見ると右の画像の矢印のエッジが弱くなっています。これは頂点法線を単純に面法線の和としているためです。今回は球に近い形だからよく見えましたが、ロボットなどのようにカクカクしたモデルでも滑らかに表示されてしまっては困ってしまいます。
そんな時に役に立つのが「スムージング角度」。面と面との角度がその角度以下であればスムージングを適用し、そうでなければ面法線を使うってやつですね、たぶん。計算の仕方はいろいろあるようなのですが、とりあえず今日は眠いのでここまで。参考になるページへのリンクだけ残して、続きはまた今度やるとします。
http://sml-log1.infoseek.co.jp/goodml/user/266/html/thrd20.php3
http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%CC%CC%CB%A1%C0%FE%A4%C8%C4%BA%C5%C0%CB%A1%C0%FE_3DCG
http://ft-lab.ne.jp/cgi-bin/wiki.cgi?page=%C6%C8%A4%EA%B8%C0%C6%FC%B5%AD%A1%CA2004%2F10%A1%CB
http://www.gamedev.net/reference/articles/article1763.asp