簡體   English   中英

如何在OpenGL中獲得對象空間坐標中的近裁剪平面坐標

[英]how to get the near clipping plane coordinates in object space coordinate in OpenGL

我正在渲染具有8個頂點的多維數據集。 當我旋轉或靠近立方體時,一些頂點可能會被附近的剪切平面剪切。 但是,由於我的問題中的某些原因,我需要在立方體的邊緣與近裁剪平面之間找到​​交點。 我知道分數可能會有所不同。 所以我想得到一個接近裁剪的平面(大概在眼部空間-但是如何?),並做一些矩陣逆運算以獲得我的立方體對象空間中的坐標,然后我可以找到交點並解決我的問題。 但是這里的問題是:

  1. 如何獲取近剪裁平面每個角的坐標? (或平面方程系數)
  2. 如何返回對象空間?

測試:

為了測試是否可以正確獲取坐標,我嘗試了以下操作:我試圖做的是獲取MVM(模型視圖矩陣)和PM(投影矩陣)的逆數。 並嘗試想象具有V1 =(-1,-1,-1,1),V2 =(1,-1,-1、1),V3 =(1、1,-1、1)的近裁剪平面和V4 =(-1,1,-1,1)坐標。 所以我在想是否要對四個頂點分別執行以下操作:

V1 = IMVM *(IPM * V1);

V2 = IMVM *(IPM * V2);

V3 = IMVM *(IPM * V3);

V4 = IMVM *(IPM * V4);

其中IMVM是模型視圖矩陣的逆矩陣,而IPM是投影矩陣的逆矩陣。 然后,當我用當前加載的矩陣渲染這四個點(我剛剛使用過的逆矩陣)時,我應該在屏幕前得到一個站立的下沉正方形,因為我的逆乘法應該已經被與openGL當前加載的矩陣相乘而抵消了。 但是由於某種原因它不起作用,我嘗試了轉置和正常。 我注意了要成為專欄專業的學生,​​等等。但是看來這是行不通的,我得到的是一個不斷移動並跳來跳去的飛機,而不是得到一個仍然超贊的飛機(代表我附近的剪切飛機)!

好吧,看來我在這個論壇上的所有問題都會由我自己回答! 首先,經過思考,我意識到我們不需要投影矩陣的逆函數。 我們指定相機空間中的點並將其帶回到對象空間,我們只需要模型視圖矩陣的逆。

像往常一樣會殺死您的錯誤一樣,我的向量矩陣乘法計算中存在邏輯錯誤。 當我使用在線矩陣計算器再次檢查時,我意識到我的第一個元素是正確的,但其余元素都不正確。 那就是當我想到將結果存儲在要乘的同一矩陣中時,然后才更改原始矩陣。 因此,我只是為結果添加了一個新矩陣,並且一切正常。 基本上,我指定了一個點,然后將其乘以模型視圖矩陣的逆來獲得對象空間坐標中的點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM