ima很少混淆從法線從攪拌器導出到.obj文件 我做一個win應用程序將obj文件拆分爲2個文件1與頂點和其他與索引,所以opengl有較少的工作去做。 正如我在臉上看到的,我可以找到相同的臉部,但是與正常的臉部不同 例如臉部24/24/20和再次24/24/19,也許更多 這是正確的嗎? 在攪拌機項目只有1光源 感謝超過1個正常的每個頂點
回答
我做了一些測試,這裏就是我看到這些:
的OBJ導出腳本忽略頂點法線,並使用面法線代替。
爲了測試我做了一個簡單的形狀,由2個三角形這樣的圖像中:
並出口到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.
@SinistraD謝謝您的意見。他們真的很有用。在試圖弄清楚如何從每個頂點法線的攪拌器中導出後,我發現在對象工具>陰影>平滑或平坦時有一個選項。如果選擇平滑,然後將對象導出爲obj文件,則法線是每個頂點,但我仍然試用它到我的項目(我現在正在構建着色器),但我很快就會完成。使用此方法查看導出的多維數據集示例。
攪拌機v2.61(子0)OBJ文件: ''
www.blender.orgv 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
好東西知道,找到這個好工作 – SinistraD 2012-03-23 14:22:11
- 1. 每表超過1個對象類型
- 2. 不能超過500個頂點
- 3. 每個頂點的概率
- 4. 使用每個頂點
- 5. Parse現在是否支持每個對象超過1個地理點?
- 6. 的igraph:爲每個頂點中心性措施CSV文件,爲每個頂點
- 7. 超過1個appDelegate對象?
- 8. 回聲超過1個ID
- 9. maven超過1個settings.xml
- 10. 超過1個UIPickerView Swift
- 11. 類文件中的入口點 - 超過1個入口點
- 12. 是可以使用一個每個頂點正常的我的模型讓每個頂點的多條法線在OpenGL-ES 2.0
- 13. 我如何在ThreeJS中每個頂點和每個頂點照明發光?
- 14. U-SQL頂點圖不會顯示每個頂點的ROW_COUNT
- 15. 每個頂點顏色的SceneKit
- 16. Perlin噪聲的每個頂點法線?
- 17. PHP的正則表達式包含不超過1個點的命名空間
- 18. 超過1個lac數據的內存不足異常
- 19. WebGL:超過頂點邊界的glDrawElements
- 20. OpenGL:找到一個頂點的正常單一向量
- 21. 如何在foreach/for循環中每次添加超過1個?
- 22. HTML5視頻在頁面上超過1個時無法正常工作
- 23. NotesDatabase的超過1個參數
- 24. 在Zend的超過1個導航2.3
- 25. java中的超過1個問號
- 26. OpenGL繪製每n個頂點
- 27. tripcolor使用RGB值爲每個頂點
- 28. 通過偏移/矢量移動每個UV頂點
- 29. 通過重新修剪每個頂點旋轉立方體
- 30. 無法查看超過1個文件
謝謝我們的回覆SinistraD。所以這意味着它無用的出口和使用攪拌機的法線,我們必須讓我們擁有? – DavinCode 2012-03-18 22:00:52
您可以使用臉部的法線來計算頂點的法線。更新回答:添加程序和示例。 – SinistraD 2012-03-18 23:46:49
感謝您的意見。他們真的很有用。 – DavinCode 2012-03-23 09:12:23