0

現在、OpenGL プロジェクトに取り組んでいます。ライティングの計算に頂点ごとの法線を使用すると、それらが自動的に平滑化されます (これは gara-something shading と呼ばれると思います)。これは、ハードコードされたモデルを使用したローポリ デザインで機能し始めていますが、自動スムージングのために奇妙に見えます。

Blender には、私が探しているものを正確に実行するメッシュ エッジ分割オプションがあります。それはモデルを回す

これから

これに

レンダリング システムを書き直して、頂点ごとの法線のスムーズ ライティングと面ごとの法線のハード ライティングの両方を可能にする代わりに、Blender のエッジ分割アルゴリズムがどのように機能するかを知っている人がいるかどうか疑問に思っていました。

Blender を使用して、通常エクスポートされた .obj をエッジ分割された対応するものと比較しましたが、その違いを完全に理解する方法はありません。

どうもありがとう。

4

3 に答える 3

0

コメントするのに十分なポイントがないので、ここに答えがあります..

一般的に、私は lfgtm に同意します。各頂点に 1 つの法線があるが、頂点が複数の三角形によって共有 (再利用、つまりインデックス付け) されている場合、余分な法線を見逃すため、「フラットな」外観を実現したり、エッジを分割したりすることはできません。頂点を複製する必要があります。

しかし、あなたは OBJ エクスポートについて言及したので、OBJ エクスポート オプションの [グループをスムーズにする] オプションにチェックを入れてみましたか:

ここに画像の説明を入力

これにより、シャープとマークしたエッジに従ってスムージング グループが作成されます (編集モード: [メッシュ] -> [エッジ] -> [シャープにマーク])。エンジンが OBJ ファイルでこれらのスムージング グループをサポートしている場合、このシャープなエッジ効果を維持できます。Edge Split 修飾子を使用して、Blender でこれらの鋭いエッジをプレビューできます ([シャープ エッジ] オプションにチェックを入れます)。

ここに画像の説明を入力

于 2016-06-20T14:16:49.013 に答える
0

Blender のエッジ スプリット モディファイアは、メッシュを壊すことで結果を達成します。エッジ スプリット モディファイアを適用すると、面が接続されていないメッシュが得られます。

調べたいのは、スムーズシェーディングとフラットシェーディングの違いです

シェーディング サンプル

「opengl flat shading」をグーグルで検索すると、このようなアイテムの使用を示唆するいくつかのアイテムが見つかりますglShadeModel(GL_FLAT);

于 2016-06-20T18:00:34.123 に答える