1

Blender からいくつかのヘア パーティクルをエクスポートしました (ヘアスタイル)。これらは複数の行 (GL_LINES) で構成されています。私の openGL プログラムは、これらのパーティクルを問題なく表示します。ここで、これらのパーティクルにライト プロパティを適用したいと思います。Blender は法線ベクトルをエクスポートしないので、自分で計算する必要があります。私は次のルールを知っています:

線分を 2 次元で [AB] と定義すると、dx = xB - xA と dy = yB - yA があり、法線は N1(-dy, dx) と N2(dy, -dx) です。

私は間違いを犯さなかったことを願っています。

しかし、線分座標 (たとえば、A(5, 2, 3) と B(0, 0, -5)) に z 次元を追加する場合、3D 空間の線分定義の規則がわかりません。

誰でも私を助けることができますか?

4

2 に答える 2

2

アキはコメントは答えではないことを忘れていたので:

3D 空間の線には法線がありません。技術的には、2D空間の線にも法線はありません。2 つの法線があります。

3D 空間の直線に垂直な方向は無数にあります。これらの法線はすべて同じ平面にありますが、方向が異なります。より高度なアルゴリズム (隣接する線に基づく可能性が高い) がなければ、これらの法線の 1 つを別の法線より選択する方法はありません。

于 2013-04-09T11:19:28.927 に答える
2

最初に 2 つのベクトルを取得できると仮定し、それがあなたの言っていることのように見える場合は、それらを v、w と呼び、法線ベクトルを取得して外積を取ります。場合によっては、最初から v, w を正規化することも悪くありません。外積は次の式で与えられます。

v x w =(v_2w_3 - v_3w_2, v_3x_1 - v_1w_3, v_1w_2 - v_3w_1), 

ここで、v_i は v の i 番目のコンポーネントなどです。横の数字はかけ算を表しています。もちろん、このベクトルをプラスまたはマイナスすると、2 つの可能性があります。

于 2013-04-09T12:48:05.823 に答える