imaはブレンダーから.objファイルにエクスポートされたノーマルとちょっと混乱しています 私は、objファイルを2つのファイルに分割するために1つの頂点ともう1つのインデックスを使用しています。する。 私は顔で見るように、同じ顔を見つけることができますが、普通の普通とは異なります たとえば顔24/24/20、再び24/24/19そして多分 これは正しいですか? はブレンダープロジェクトでのみ1光源がある おかげ頂点当たり1つ以上のノーマル
答えて
私はいくつかのテストを行い、ここで私はこれらを参照してください方法は次のとおりです。
OBJエクスポートスクリプトが頂点法線を無視し、代わりに顔の法線を使用しています。
およびOBJにエクスポート:
は、私は、この画像のように2つの三角形からなる単純な形状を作っテストします。 4つのベクトルがあるので、4つのベクトル法線(vn)が必要です。中央の2つのベクトルが同じであるため、opimizedの場合は3つです。しかし、その代わりに、それは唯一の2 VN-Sをouputs:1 // 4 // fを
:あなたは顔の定義を見れば
vn -0.000000 1.000000 0.000000
vn -1.000000 -0.000000 -0.000000
いただきましたより、あなたはもっと面白いものを見つけることができます 3 //
F 4 // 2 // 3 //
//の後の数字を1行で調べます。彼らは同じです。これは、ある面内のすべての頂点が同じ法線を使用することを意味します。つまり、これらは頂点の法線ではなく、面の法線です。だから、同じ頂点に異なる法線を割り当てるのはこのためです。頂点番号。 4は第1の面が第1の面の法線を受け取るように定義され、第2の面を定義するために使用されるときは第2の面の法線が使用される。
EDIT あなたはこのように、これらの頂点法線を計算することができます。
- は、頂点のすべての出現を検索し、
- は、それぞれの座標を追加セットにそれの法線のすべてを取得法線ベクトル: vn =(x1 + x2 + ... + xn、y1 + y2 + ... + yn、z1 + z2 + ... + zn)
- ベクトル長さを計算する:h = sqrt + vny^2 + vnz^2)
- ノーマル
私の前の例(画像上に見つかったもの)を使用すると、上および下のベクトルは一度だけ発生するため、何もする必要はありません(頂点の法線は顔の法線と同じです)。中央の頂点では、頂点が頂点の三角形の頂点の2倍になり、法線が(0,1,0)で底辺が(-1,0,0)であるため、これらの頂点の垂線のセットは{ (0,1,0)、(-1,0,0)}である。これらを追加すると、(0 - 1,1 + 0,0 + 0)=(-1,1,0)となります。長さの計算:h = sqrt(( - 1)^ 2 + 1^2)= sqrt(2)。ベクトルをそれに分割すると、norm(vn)= vn/h =(-1/sqrt(2)、1/sqrt(2)、0)が得られます。正面正方形(左上)の中間の法線上の画像を見ると、ベクトルの長さが1であるのに対し、-xとa + yの等しい成分があることがわかります。結果に長さがあることがわかります1/2 + 1/2 + 0 = 1です。長さ1を得るために正規化しなければならなかった理由です。
@SinistraDご意見ありがとうございます。彼らは本当に非常に便利です。ブレンダーから頂点法線をエクスポートする方法を見つけようとしたところ、オブジェクトツール>シェーディング>スムージングまたはフラットにオプションがあることがわかりました。スムーズを選択してオブジェクトをobjファイルとしてエクスポートすると、法線は頂点ごとになりますが、まだ私のプロジェクト(私は今シェーダを構築しています)で試してみます。この方法でエクスポートされたキューブの例を参照してください。
ブレンダーv2.61(サブ0)OBJファイル: ''
www.blender.org
V 11.209502 -11.209502 -11.209501
V 11.209502 11.209502 -11.209502
V -11.209503 -11.209502 11.209500
V -11.209498 -11.209502 -11.209506
V 11.209508 11.209502 -11.209496
V 11.209495 11.209502 11.209509
V -11.209506 11.2095 02 11.209498
V -11.209501 11.209502 -11.209502
VT 0.652335 0.642748
VT 0.653298 0.956858
VT 0.339188 0.957821
VT 0.338225 0.643711
VT 0.968372 0.643711
VT 0.967408 0.957821
VT 0.654262 0.642748
VT 0.967408 0.327674
vt 0.968372 0.641784
vt 0.653298 0.328638
vt 0.339188 0.642748
VT 0.338225 0.328638
VT 0.652335 0.327674
VT 0.653298 0.641784
VT 0.337261 0.642748
0.643711 0.023151 VT
0.957821 0.024115 VT
0.956858 0.338225 VT VT 0.337261 0.327674
VT 0.338225 0.641784
VT 0.024115 0.642748
vt 0.023151 0.328638
vn 0.577349 -0.577349 -0.57 7349
0.577349 -0.577349 0.577349
VN VN -0.577349 -0.577349 0.577349
VN -0.577349 -0.577349 -0.577349
VN 0.577349 0.577349 -0.577349
VN -0.577349 0.577349 -0.577349
VN -0.577349 0.577349 0.577349
VN 0.577349 0.577349 0。577349
s1
f 1/1/1 2/2/2 3/3/3 4/4/4
f5/5/5/8/6/8
f 1/8/1 5/9/5 6/7/8 2/10/2
f2/11/2 6/12/8 7/13/7 3/14/3
f 3/15/3 7/16/7 8/17/6 4/18/4
f 5/19/5 1/20/1 4/21/4 8/22/6
知って良いこと、これを見つける良い仕事 – SinistraD
- 1. 頂点ごとにノーマルを計算するOpenGL
- 2. 有向グラフのすべての頂点を1回以上訪れるパスを見つけるアルゴリズム
- 3. 頂点と接続された頂点
- 4. GLSLのフラグメントシェーダでフラグメントの最初の頂点ノーマルを取得する方法
- 5. センター、ノーマル、レングス、および高さで長方形の頂点を取得
- 6. 頂点xの等間隔d以下の頂点の数を求める
- 7. 直角三角形と1頂点の2つの辺から未知の頂点を見つける
- 8. 衝突2点のノーマル
- 9. 1つのJFrameに1つ以上のオブジェクトがあります
- 10. 頂点シェーダ対頂点
- 11. 頂点の頂点を頂点で4.2で検証する
- 12. ポリマーアプリ1つ以上のランドページ
- 13. maxの他のすべての頂点に到達できる最小限の頂点のセット。 1つのエッジ
- 14. 頂点からの頂点バッファ
- 15. BOX2D/OpenGLの:1つのテクスチャ、多くの頂点にマッピングされ
- 16. apache2ドメインあたり1つ以上のウェブサイト
- 17. 1つの頂点バッファに複数のメッシュがありますか?
- 18. 小数点以下2〜4小数点以下切り上げ
- 19. BGL頂点上でのランダムな順序の繰り返し
- 20. 小数点以下1桁以上の数字を印刷
- 21. グラフ内に1つの頂点しかないグラフ
- 22. ArangoDBのみがX以上の訪問頂点を返します
- 23. 頂点バッファデータを配列頂点データフロー
- 24. 1GB以上のメモリ割り当てエラー
- 25. OpenGL - ポイントライト計算で頂点ノーマルはどのような役割を果たしますか?
- 26. DSEグラフは2つの頂点ラベルの同じ頂点部分ですか?
- 27. 複雑な形状(4つ以上の頂点)の法線を見つけてそれに照明を当てる方法は?
- 28. "x * = -1"を使用する利点"x * = -1"以上?
- 29. Pymongoカーソルの上限は(1)1つの以上の結果
- 30. OpenGL glBufferData - >なぜ&頂点の代わりに頂点がデータパラメータとして&vertices?
ありがとうございます返信SinistraD。それはミキサーからの法線を輸出して使用するのに役に立たず、私たちは自分のものを作る必要があるということですか? – DavinCode
面の法線を使って頂点の法線を計算できます。更新された答え:追加された手順と例。 – SinistraD
ご意見ありがとうございます。彼らは本当に非常に便利です。 – DavinCode