テレワークならECナビ Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!
無料ホームページ 無料のクレジットカード 海外格安航空券 海外旅行保険が無料! 海外ホテル


log

2010.09.28 C++:モノトーンとトゥーンインク

ファイル 295-1.jpgファイル 295-2.jpg

モノトーン表示とトゥーンインク機能を新しく追加してみました。

線が入ったことで、ちょっと独特なよさがでたような気がします!
ちなみに線の実装は処理速度を考えて、法線方向押し出しという
一番単純な実装でやってみたのですが。それだけだとカメラからの
距離が遠くなるほど線が細くなってしまうので、今回はカメラからの
距離にあわせて線の太さを一定になるようにひと工夫しています。

それと、今まで導入していたトゥーンシェーディングは重い割に
あまり見た目が変わらないということもあったので…苦笑。
一旦トゥーンシェーディングの機能をOFFにしてみました。画像では
トゥーンシェーディングOFFですが、おそらくトゥーンインクだけで
大分それらしく見えてると思うので、それほど必要でもないかなと
思いました。環境に応じてON/OFFできるようになればいいかな。

comment

たけなか 2010.09.28-21:28 Edit

遠景のモデルはシェーダを使用してもそれほど見栄えが
変わらないので、いっそシェーダをOFFにして高速化した方が
いいかもと前から思ってましたが。この技術のことをLODシェーダと
いうそうですね。

で、それだけではなく遠景のモデルの細かいボーンのスキニング
計算までOFFにしてしまう、LODボーンという技術もあるそうです。
この発想はなかったなあ。自分のモデルの場合、手の指は
細かくボーン分けしてるので、遠景の場合はいっそOFFにして
みるのもいいかもと思いました。

たけなか 2010.09.28-22:08 Edit

ぱっと思いついたバウンディングスフィアの計算方法をメモ。

・取得済みのバウンディングボックスの中心座標を求める。
・その仮バウンディングボックスの中心座標と各頂点との距離を調べ、
 距離が最大の場合のその距離がバウンディングスフィアの半径となる。

もちろんこの計算によるバウンディングスフィアはいんちき計算による
最小境界球の求め方(最小境界球の中心はバウンディングボックスの
中心にくるとは限らない、、ような気がする汗)なので、多少なりと
理想の最小境界球より大きくなりますが、まあO(N)で求まるので
ぱぱっと求めたい場合はこれでいいような気がします。