本篇文章給大家分享的是有關(guān)如何用Shader得到物體的世界坐標(biāo),小編覺(jué)得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
成都創(chuàng)新互聯(lián)專(zhuān)業(yè)為企業(yè)提供天寧網(wǎng)站建設(shè)、天寧做網(wǎng)站、天寧網(wǎng)站設(shè)計(jì)、天寧網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、天寧企業(yè)網(wǎng)站模板建站服務(wù),十多年天寧做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
最近群里面有個(gè)朋友問(wèn)我關(guān)于如何得到OpenGL世界坐標(biāo)的問(wèn)題,當(dāng)時(shí)我還弄錯(cuò)了,誤以為gl_ModelViewMatrix*gl_Vertex
就是世界坐標(biāo)。因最近也突然遇到了世界坐標(biāo)的問(wèn)題,所以花了一些時(shí)間來(lái)研究這個(gè)問(wèn)題,網(wǎng)上也有人問(wèn),但或許沒(méi)有答案,或許是錯(cuò)的。 其實(shí),OpenGL的轉(zhuǎn)換管道直接將gl_Vertex,也就是物體坐標(biāo),用gl_ModelViewMatrix相乘,得到的是眼坐標(biāo)。如果將gl_ModelViewMatirx拆分為gl_ModelMatrix和gl_ViewMatrix,那么問(wèn)題就好解決了。但事實(shí)上沒(méi)有提供。要清楚OpenGL其實(shí)沒(méi)有世界坐標(biāo)系,世界坐標(biāo)系是應(yīng)用程序的概念。其實(shí)可以將OpenGL的攝像機(jī)看作是固定的,其坐標(biāo)系就是眼坐標(biāo)系,移動(dòng)攝像機(jī)和移動(dòng)物體的位置是一個(gè)相反的轉(zhuǎn)換,對(duì)于觀察者來(lái)說(shuō)根本不知道是攝像機(jī)在動(dòng),還是物體在動(dòng),說(shuō)回來(lái)最終的變換是這樣的:
eyePos=viewMatrix * modelMatrix * modelVertex
在OpenGL里面viewMatrix和modelMatrix合并了,因?yàn)镺penGL里面并沒(méi)有設(shè)置攝像機(jī)的參數(shù),所以O(shè)penGL并不知道viewMatrix到底是什么。viewMatrix是用戶(hù)自己定義的,所以如果能夠得到這個(gè)viewMatrix并能得到其逆矩陣,就可以得到worldPos:
worldPos=viewMatrixInv * viewMatrix * modelMatrix * modelVertex
傳統(tǒng)的OpenGL程序里面,你得自己計(jì)算這個(gè)viewMatrixInv,還好OSG的Camera提供了一個(gè)getViewMatrixInverse()方法,通過(guò)這個(gè)方法我們就可以輕松的獲得viewMatrixInv,然后傳遞給Vertex Shader(用一個(gè)Uniform就可以),然后進(jìn)行這個(gè)計(jì)算就可以了。 記得每一幀都需要Update這個(gè)viewMatrixInv,只需要一個(gè)updateCallBack就可以了。 好了,看幾個(gè)圖,我用3DSMAX創(chuàng)建了兩個(gè)盒子,為了便于觀察,模型的頂點(diǎn)值限制在0-1之間,然后用osgExp導(dǎo)出,沒(méi)有選中Flatten Static Transform這樣就不會(huì)把模型定點(diǎn)轉(zhuǎn)換成世界坐標(biāo)系的頂點(diǎn)。 源代碼中可以改變gl_FragColor=的值來(lái)修改為相應(yīng)的坐標(biāo)系的值顯示。 世界坐標(biāo)系的最終輸出,可見(jiàn)顏色連續(xù)變換的。
以上就是如何用Shader得到物體的世界坐標(biāo),小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見(jiàn)到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
文章標(biāo)題:如何用Shader得到物體的世界坐標(biāo)
瀏覽路徑:http://sd-ha.com/article18/ihhigp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)、域名注冊(cè)、品牌網(wǎng)站建設(shè)、企業(yè)建站、網(wǎng)站營(yíng)銷(xiāo)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
網(wǎng)頁(yè)設(shè)計(jì)公司知識(shí)