2012-03-18 21 views
1

ima很少混淆從法線從攪拌器導出到.obj文件 我做一個win應用程序將obj文件拆分爲2個文件1與頂點和其他與索引,所以opengl有較少的工作去做。 正如我在臉上看到的,我可以找到相同的臉部,但是與正常的臉部不同 例如臉部24/24/20和再次24/24/19,也許更多 這是正確的嗎? 在攪拌機項目只有1光源 感謝超過1個正常的每個頂點

回答

3

我做了一些測試,這裏就是我看到這些:

的OBJ導出腳本忽略頂點法線,並使用面法線代替。

爲了測試我做了一個簡單的形狀,由2個三角形這樣的圖像中:

enter image description here

並出口到OBJ。因爲有4個向量,所以你應該期望4個向量法向量(vn),或者3,如果是最優化的,因爲中間的2個向量是相同的。但相反,它僅OUPUTS 2 VN-S:

vn -0.000000 1.000000 0.000000 
vn -1.000000 -0.000000 -0.000000 

什麼是更多,如果你看臉的定義,你會發現更有趣的東西:

f 1的// 4 // 3 //

F 4 // 2 // 3 //

查看//在單行之後的數字。他們是一樣的。這意味着對於一個面內的所有頂點使用相同的法線。這意味着,這些不是頂點的法線,而是面部的法線。所以這就是爲什麼爲同一頂點分配不同的法線。當頂點號碼。 4用於定義第一個面接收第一個面的法線,並且當它用於定義第二個面時,使用第二個面的法線。

編輯 您可以從這些計算頂點法是這樣的:

  • 查找頂點的每一次出現,並得到它的所有法線成一組一
  • 添加的各自座標法線: vn =(x1 + x2 + ... + xn,y1 + y2 + ... + yn,z1 + z2 + ... + zn)
  • 計算向量長度:h = sqrt(vnx^2 + vny^2 + vnz^2)
  • Normali澤矢量vn:VN =(VNX /小時,VNY /小時,VNZ /小時)

使用我以前的例子(一個在圖像上發現的),在頂部和底部只發生一次的矢量,所以你不需要做任何事情(頂點的法線與面部的法線相同)。在中間的頂點上:它們出現兩次,頂部三角形出現一次,法線爲(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)。用它分割矢量給出範數(vn)= vn/h =(-1/sqrt(2),1/sqrt(2),0)。如果你在中間正常的Front Ortho(左上角)看到圖片,你會看到它有一個-x和一個+ y相等的分量,而矢量的長度爲1.你可以看到我們的結果有長度1再次計算它的長度:1/2 + 1/2 + 0 = 1。這就是爲什麼我們必須規範化,以獲得長度1.

+0

謝謝我們的回覆SinistraD。所以這意味着它無用的出口和使用攪拌機的法線,我們必須讓我們擁有? – DavinCode 2012-03-18 22:00:52

+0

您可以使用臉部的法線來計算頂點的法線。更新回答:添加程序和示例。 – SinistraD 2012-03-18 23:46:49

+0

感謝您的意見。他們真的很有用。 – DavinCode 2012-03-23 09:12:23

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
VT 0.338225 0.956858
VT 0.024115 0.957821
VT 0.023151 0.643711
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
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
VN 0.577349 0.577349 0。577349
s 1
f 1/1/1 2/2/2 3/3/3 4/4/4
f 5/5/5 8/6/6 7/2/7 6/7/8
f 1/8/1 5/9/5 6/7/8 2/10/2
f 2/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

+0

好東西知道,找到這個好工作 – SinistraD 2012-03-23 14:22:11