我有一些.off格式的3D對象,我想用OpenGL + C來處理。有沒有一種標準的,簡單的方法來做到這一點?在opengl中工作.off文件
1
A
回答
2
Based on the link genpfault posted,您的第一個問題是您使用的是ASCII模式格式。儘管可以這樣做,但您會介紹轉換問題。很難,不是真的,有點痛苦,是的。另外,這種格式有二進制和ASCII變體,所以你必須處理兩種格式。
現在,格式的細節,如在本節中(從頁取)指出:
線1條OFF
行2 vertex_count FACE_COUNT EDGE_COUNT
一個用於每個線頂點:XYZ
頂點0,1,...,vertex_count-1 爲每個多邊形面一行:N V1 V2 ... VN,頂點的數量以及每個面的頂點索引。
看起來,第一眼看上去就是以非常友善的OpenGL格式定義事物。事實上,我敢打賭你可以直接從模型文件中渲染。這隻會工作一次,但這意味着與一些瘋狂的格式相比,你的開局不錯。
你想要做的是採取第二行,並找到頂點和麪數。存儲這個(僞代碼片段)。然後瀏覽頂點和臉部列表並加載每一個,並以任何形式保存它。這一過程將去是這樣的:
List<Vector3> vertices;
Open file model.off
Read line
if (line == "OFF")
{
// We know it's a model
Read line
Attributes[] = Split line(' ')
Vertex count = Attributes[0]
Face count = Attributes[1]
// Save edge count if necessary
For (vert = 0; vert < vertex count; vert += 1)
{
Read line
Coordinates[] = Split line(' ')
float X = FloatFromString(Coordinates[0])
float Y = FloatFromString(Coordinates[1])
float Z = FloatFromString(Coordinates[2])
vertices.push(new Vector3(x, y, z))
}
// Repeat for faces
}
現在,一旦您已加載的所有數據,您需要將其設置爲渲染。你可以在你的模型類的一個小功能,簡單地調用:
glBegin(TRIS)
for each (face)
{
retrieve the verts from the list
glVertex3f(x, y, z)
}
顯然,這是不完全一樣,但是這是大概的瞭解。您可以將卡片緩存緩存到卡片上的VBO或其他任何方法中,但使用這種簡單的渲染可以使模型格式和渲染過程之間的聯繫更加簡單,在我看來。
0
如果您打算編寫加載程序,則必須找到「.off」文件的「文件結構」文檔。
像這樣的東西(這是「.MD2‘):en.wikipedia.org/wiki/MD2_(file_format)
雖然我建議你試着從’.off」到「.FBX」或」 .md2" 或任何其它轉換器文件格式被廣泛使用。
相關問題
- 1. 如何製作.off文件
- 2. off()不在firefox中工作,但在鉻中工作
- 3. Autocomplete =「OFF」不工作 - Chrome Mobile
- 4. Unity插件不能在OpenGL 4.1中工作,使用OpenGL 2.1
- 5. 在Android OpenGL工作區中加載FaceGen(.fg)文件
- 6. 爲什麼@ECHO ON/OFF在批處理文件IF塊內工作?
- 7. wordpress cron-off-wordpress文件
- 8. jQuery .off()不按預期方式工作
- 9. OpenGL Point Sprites在Android中工作嗎?
- 10. 矩陣不能在openGL中工作
- 11. 讓紋理在OpenGL 3.2中工作
- 12. opengl + Qtwidget不工作
- 13. glUniform3fv不工作OpenGL
- 14. OpenGL的工作不
- 15. OpenGL Normals不工作?
- 16. OpenGl庫不工作
- 17. OpenGL的鍵盤事件不工作
- 18. pySerial XON/OFF在Linux上失敗,但在Windows上工作
- 19. d3文件不能在Chrome中工作,但在Firefox中工作
- 20. .xlsm文件在Excel-2013中工作,不在Excel-2016中工作
- 21. 從文件中讀取一組點並創建.OFF文件
- 22. 從目標文件格式(.off)文件中讀取多邊形
- 23. off()在jquery中臨時關閉事件
- 24. 在.htaccess文件中將安全模式設置爲OFF不起作用
- 25. registration_redirect在插件文件中不工作
- 26. Bootstrap drop down off off
- 27. tableRow entries off off screen
- 28. 事件.on和.off
- 29. 如何在python文件中編寫sudo vbetool dpms off命令?
- 30. Option Strict Off在編譯器生成的Reference.vb文件中
什麼是OFF? [This?](http://people.sc.fsu.edu/~jburkardt/data/off/off.html) – genpfault 2010-11-06 17:50:58
是的。那。究竟。 – andandandand 2010-11-06 21:24:21