さまざまなゲーム アセットの頂点法線を計算しようとしています。私が計算した法線は、モデルを「膨らませる」ために使用されます(実際のモデルの後ろに描画して太い輪郭を作成します)。
私は現在、各面の法線を計算し、それらすべての平均を計算しています (スタック オーバーフローに関する他のいくつかの質問で、このアプローチが提案されています)。ただし、これはこのような鋭いコーナーでは機能しません (隣接する面の法線はオレンジ色でマークされ、計算しようとしている法線は緑色で囲まれています)。
オブジェクトは小さな台座のように見え、正面左隅を見ています。3 つの隣接する面があります (底面は表示されません。その法線は真下を指します)。
Blender は、3 つの面の法線の真ん中にある優れた法線を計算します。3 つの面法線のそれぞれに対して最小の回転を持つ法線を何らかの方法で計算しているようです。ブレンダーの法線は、四角形が異なる方法で三角形化されても変化しません。
面の法線を平均化すると、Z 軸のわずかに上を指す別の法線 (-0.45、-0.89、+0.08) が得られます。この方法でモデルを膨らませても、アウトラインの底面が上に移動し、元のモデルを取り囲んでいないため、適切なアウトラインが生成されません。
Blender のソース コードを調べようとしましたが、探しているものが見つかりませんでした。誰かが Blender ソースのアルゴリズムを教えてくれれば、それも受け入れます。