我有一個在opengl中繪製的3d框,有人可以解釋如何在opengl中擠壓對象嗎?我是否只是將每個盒子的z軸進一步翻譯回來?Opengl對象擠壓
0
A
回答
2
該方法可以工作,但您必須對每個步驟的翻譯量進行一些計算。儘管如此,我建議以更智能的方式生成拉伸幾何體。
例如,您不應該在中間框中繪製箱蓋(地板和天花板)。你還必須確保雙方完美接觸,否則你會得到文物。
我推薦使用一個路徑來確定每組頂點所在的平面。路徑應該由一系列點和每個點的方向向量組成,這決定了圍繞方向向量旋轉多少。用這個,你可以很容易地計算出4個頂點,只需要使用基本的矢量數學。因此,例如,您可以使用上限[(0.5,0.5,0),( - 0.5,0.5,0),( - 0.5,-0.5,0),(0.5,-0.5,0) ]並沿路徑移動(首先是中心點,第二是右向量)[(0,0,0),(1,0,0)],[(0,5,10),(1,1, 0)],[(10,5,12),(0,1,0)]
現在,你首先計算所有三個方向向量。正常值是當前點和下一點之間的差值,所以(0,5,10) - (0,0,0)=(0,5,10)。必須將右向量投影到由法線定義的平面上,因此我們首先使用交叉乘積來計算向上向量:(0,5,10)x(1,0,0)=(0,10,-5) 。作爲最後一步,我們計算投影右向量,它是法線和向上的叉積:(0,5,10)x(-2,4,-2)=(-125,0,0)。所有這三個矢量必須再歸的,如果你把它們並排,你會得到你申請到帽矢量一個漂亮的變換矩陣,得到4個頂點當前步驟:
|-1 0 0 | |0.5| |-0.5 | | 0 0.894427 0.447214| * |0.5| = | 0.447213| etc. | 0 -0.447214 0.894427| |0 | | 0.223607|
(我或許你必須調換交叉乘積因子才能得到正確的結果)
然後你對路徑上的每一步重複相同的過程,並且每次繪製4個環形四邊形。
1
如何擠壓在OpenGL
你別對象。 OpenGL是一個繪圖API,而不是幾何處理庫。看看像GTS這樣的庫http://gts.sourceforge.net/
相關問題
- 1. 擠壓對象在OpenGL
- 2. 在OpenGL中擠壓
- 3. 在MEL中不擠壓的對象
- 4. Android:AnimationDrawable擠壓我的形象
- 5. 擠壓代碼?
- 6. Subplot擠壓
- 7. 空表被擠壓
- 8. jQuery緩慢擠壓表
- 9. 造型擠壓線在GE
- 10. Matlab子插圖擠壓
- 11. Matlab:linkaxes擠壓我的圖表
- 12. 鍵盤擠壓percentrelativelayout佈局
- 13. Bootstrap表td擠壓問題
- 14. git不能擠壓提交
- 15. Debian擠壓和設置ulimit
- 16. TensorFlow - 拆分和擠壓
- 17. 什麼是擠壓測試?
- 18. 檢測擠壓箱關閉
- 19. iOS - 垂直擠壓圖像
- 20. three.js所擠出的2D面,而圍繞擠壓軸
- 21. 如何設置所選對象的擠壓節點中的屬性在MEL
- 22. 檢測由於對象被擠壓而導致的節點中的重疊
- 23. 對象壓痕
- 24. three.js - 繪製一半的擠壓圓圈
- 25. 歸檔存儲庫爲Debian擠壓
- 26. 擠壓提交後它們被推
- 27. Git的擠壓敏感數據
- 28. UIImageView被「擠壓」在我的UINavigationBar下方
- 29. 在iPad模擬器上模擬擠壓
- 30. 在Debian上安裝RoR擠壓
這不是OpenGL問題。您只使用OpenGL進行繪圖。你將不得不自己寫幾何操作。 – Bart 2012-01-14 17:07:17