1

OpenGL コンテキストで OBJ ファイル形式を解析および解釈できるプログラムがあります。

Blender で、「Hair」パーティクルを含む単純な球体を含む小さなプロジェクトを作成しました。

変換後 (球から粒子を分離)、粒子は新しいメッシュを形成します。そのため、プロジェクトには 2 つのメッシュ (「球体」と「髪」という名前) があります。OBJ ファイル (File/export/Wavefront (.obj)) でメッシュの「Sphere」をエクスポートする場合、「include Normals」を選択すると、エクスポート後にファイルに法線に関するすべての情報が含まれます (例: vn 0.5889 0.14501 0.45455、 ...)。

「法線を含める」を選択してパーティクルで同じことをしようとすると、OBJ ファイルに法線がありません。(エクスポートする前に、適切なメッシュを選択しました。)

そのため、パーティクル タイプのメッシュに対して法線プロパティがエクスポートされない理由がわかりません。

これは、私の髪のパーティクルの一般的な Blender レンダリングの上にあります。ご覧のとおり、すべての粒子が光に反応します。そのため、Blender はこれらのパーティクルに法線プロパティを使用します。

ここに画像の説明を入力

そして今、上の写真は(Blender の「編集モード」で -> 変換後)パーティクルが複数の線で形成されていることを示しています。私のopenglプログラムでは、GL_LINESを使用して同じ粒子をレンダリングしています。パーティクルのライト プロパティを管理するための法線情報が必要です。

ここに画像の説明を入力

パーティクル メッシュの法線プロパティをエクスポートする方法を知っていますか?

よろしくお願いします。

4

1 に答える 1

3

線に法線を与えようとしています。それが何を意味するのか考えてみましょう。

サーフェス上の法線ベクトルについて話すとき、「サーフェスの外を指している」ことを意味します。

表面法線

三角形の場合、1 つの辺を「前面」と定義すると、法線は 1 つだけになります。線の場合、線に垂直なベクトルは法線としてカウントされます。無限に存在し、いずれかが「実行」されます。

グラフィックスの法線を気にする理由は何ですか?

  • 照明: たとえば、拡散照明は、法線と入射光ベクトルの内積を使用して近似されます。しかし、これは髪には当てはまりません!
  • 変換マトリックスの取得: このために、任意の法線を選択できます (ヘア空間に変換しますか?)

要するに、法線に任意の垂直ベクトルを選択するか (これは簡単に計算できます)、髪の毛に法線をまったく使用しないようにすることができます。それはあなたがしようとしていることに依存します。

于 2013-03-16T16:24:14.433 に答える