2009-06-05 2 views
2

OpenGLで顔の法線を使用して私の人間のモデルを照らすと、それぞれの顔がモデル上でどこにあるかが非常に明らかです。頂点の法線を使用しても、ライティングはかなりスムーズになりますが、それでも目立ちます。追加の頂点(例:細分)を追加せずに有機モデルを滑らかにするテクニックはありますか?OpenGLで顔の端を滑らかにするテクニック

答えて

6

あなたがスムーズに面し有効にするために忘れているかもしれない頂点ごとに法線を持つ単一の顔を見ている場合:それは同じ位置にすべての頂点も同じ通常のを持っていることを確認する助けていない場合

glShadeModel(GL_SMOOTH); 

を。しかしこれは自動的にブレンダーで行うべきです。また、モデルのポリゴン数が少なすぎる可能性もあります。そうであれば、より多くのポリゴンを使うか、basszeroが言ったことをする必要があります。 Create a normal mapをGLSLシェーダと一緒に使用してください。

4

あなたが高解像度モデル/メッシュまたは多分細分化または他の空想の方法によってHIGHRESモデルを作成することができますまともな3d modeling toolへのアクセスを持っていれば...

GLSLper-pixel-lighting + normal maps

UPDATE :

http://www.blender.org/development/release-logs/blender-246/render-baking/

+0

私はBlenderを使用しています。性能上の理由から私のモデルは低ポリである。フォンシェーディングは有望そうだが、OpenGLによってサポートされていないので、その利点はパフォーマンスのヒットを保証するものではない。 – Kai

+0

これはOpenGL ES 1.1の問題(iPhoneなど)ではない場合、ハードウェアはおそらくシェーダをサポートしており、フォンシェーディング+ノーマルマッピングを実装するシェーダを書くことができます。 –

+0

右のように、Blenderでhighresモデルを作成し、それを使って法線マップを生成します。低解像度バージョンを作成し、ノーマルマップ+シェーダを使用して、最終的にレンダリングされた製品に欠落した頂点の詳細を作成します – basszero

1

はいさまざまな手法があります。 1つは、まず各顔の法線を計算し(顔の頂点にはおそらく使用しています)、これらの法線を使って各頂点の新しい法線を計算します。

ここでは、隣接する5つの三角形の平均を計算するoneです。

乾杯!

関連する問題