国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種3D模型轉(zhuǎn)立體雙視點(diǎn)視圖的方法與流程

      文檔序號(hào):11657722閱讀:491來(lái)源:國(guó)知局
      一種3D模型轉(zhuǎn)立體雙視點(diǎn)視圖的方法與流程

      本發(fā)明涉及3d顯示技術(shù),具體涉及一種將基于opengl的3d模型轉(zhuǎn)化為立體雙視點(diǎn)視圖的轉(zhuǎn)換方法,具體的是一種3d模型轉(zhuǎn)立體雙視點(diǎn)視圖的方法。



      背景技術(shù):

      人類(lèi)生活在一個(gè)立體的世界,利用立體視覺(jué)來(lái)感知世界,隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展,計(jì)算機(jī)描述現(xiàn)實(shí)世界的方式越來(lái)越豐富:從聲音到圖像再到視頻,計(jì)算機(jī)所能表示的世界越來(lái)越復(fù)雜。目前大多數(shù)的顯示設(shè)備依舊之能夠進(jìn)行2d顯示,忽略了深度信息,在數(shù)字化,現(xiàn)代化的時(shí)代,2d顯示已經(jīng)不能夠滿足人類(lèi)的需求,于是3d模型作為一種新的媒體形式進(jìn)入了人們的生活、學(xué)習(xí)和工作中,并且很快被普通大眾所接受。它在影視娛樂(lè),建筑,機(jī)械制造,醫(yī)療,軍事,電子商務(wù),虛擬現(xiàn)實(shí),考古等很多方面都得到了越來(lái)越廣泛的應(yīng)用。

      在當(dāng)前的計(jì)算機(jī)顯示領(lǐng)域,立體顯示已經(jīng)成為了未來(lái)的發(fā)展方向。在市場(chǎng)上,目前有許多硬件選項(xiàng),使我們能夠獲得立體3d可視化信息。而3d顯示技術(shù)是整個(gè)3d流程中最復(fù)雜的一步,由于播放的平臺(tái)都是平面顯示設(shè)備,且左右眼素材要在同一個(gè)顯示設(shè)備上出現(xiàn),這就涉及到如何將左右眼素材進(jìn)行分離,并分別準(zhǔn)確的送到觀眾的左右眼中。一旦左右眼素材的分離出現(xiàn)問(wèn)題,3d效果就不會(huì)出現(xiàn),而觀眾也將看到混亂、有重影的畫(huà)面內(nèi)容。我們采用匯聚雙目投影觀測(cè)模型,將3d模型按照此觀測(cè)模型映射到屏幕上。這種模型更符合人眼的觀測(cè)習(xí)慣,使人看到的更加真實(shí)、自然。

      人眼能獲得立體視覺(jué)的根本原因是存在視差,利用人的雙眼在同一時(shí)間分別看到不同的圖像形成視差,從而獲得立體視覺(jué)的特點(diǎn)。



      技術(shù)實(shí)現(xiàn)要素:

      三維立體顯示技術(shù)是虛擬現(xiàn)實(shí)的關(guān)鍵技術(shù),也是虛擬現(xiàn)實(shí)系統(tǒng)必不可少的基本條件,而深度感的正確形成又是立體顯示技術(shù)的關(guān)鍵,深度感的正確形成通過(guò)雙目視差圖來(lái)實(shí)現(xiàn)的。如今市場(chǎng)上的立體顯示器的3d立體感效果,就是由雙視點(diǎn)視圖直接決定的,視差圖包含了場(chǎng)景的距離信息。故本發(fā)明從立體視覺(jué)原理出發(fā),重點(diǎn)研究如何利用opengl從計(jì)算機(jī)虛擬的3d模型中提取出多視點(diǎn)圖像,從而進(jìn)行轉(zhuǎn)化成立體雙視點(diǎn)視覺(jué)差圖,進(jìn)而解決3d顯示問(wèn)題。

      本發(fā)明的3d模型轉(zhuǎn)雙視點(diǎn)視圖包括3d模型讀取和轉(zhuǎn)雙視點(diǎn)視差圖;其中3d模型讀取包括讀取頂點(diǎn)信息和繪制頂點(diǎn);轉(zhuǎn)雙視點(diǎn)視差圖包括單目轉(zhuǎn)化和繪制雙視點(diǎn)視圖。

      本發(fā)明解決其技術(shù)問(wèn)題所采用的技術(shù)方案包括如下步驟:

      步驟1:選定匯聚式觀測(cè)模型;

      觀測(cè)模型主要有匯聚式觀測(cè)模型和平行式觀測(cè)模型。本發(fā)明選定匯聚式觀測(cè)模型,且其中top,bottom,left,right分別為左右眼共用的棱錐臺(tái)前剪裁面的上下左右邊到中心的距離,near為前剪裁面到視點(diǎn)的距離,far為后剪裁面到視點(diǎn)的距離。

      步驟2:輸入?yún)?shù),并計(jì)算匯聚式觀測(cè)模型的錐體位移:

      雙眼距離iod,人眼觀測(cè)圖像上下兩邊的視野夾角fov,人眼到前剪切面的垂直距離d(eye-nearz),人眼到屏幕的垂直距離d(eye-screen),人眼到后剪切面的垂直距離d(eye-farz),圖像長(zhǎng)寬比ratio。

      根據(jù)相似三角形計(jì)算該匯聚式觀測(cè)模型的錐體位移

      frustumshift=(iod/2)*d(eye-nearz)/d(eye-screen)⑴

      步驟3:計(jì)算左右眼錐臺(tái)參數(shù)

      左眼錐臺(tái)參數(shù):

      top=tan(fov/2)*d(eye-nearz)⑵

      leftleft_eye=-ratio*top-frumstumshift⑶

      rightleft_eye=ratio*top-frumstumshift⑷

      bottom=-top⑸

      右眼錐臺(tái)參數(shù):

      top=tan(fov/2)*d(eye-nearz)⑹

      rightright_eye=ratio*top+frumstumshift⑺

      leftright_eye=-ratio*top+frumstumshift⑻

      bottom=-top⑼

      其中,fov表示人眼觀測(cè)圖像上下兩邊的視野夾角,ratio為圖像長(zhǎng)寬比;

      top和bottom分別為左右眼共用的棱錐臺(tái)前剪裁面的上下邊界到中心的距離;

      leftleft_eye和leftright_eye分別為左右眼的棱錐臺(tái)前剪裁面的左邊界到中心的距離;

      rightleft_eye和rightright_eye分別為左右眼的棱錐臺(tái)前剪裁面的右邊界到中心的距離;

      步驟4:得到左右眼的投影矩陣和視圖矩陣。

      左眼投影矩陣mlproj

      mlproj=frustum(leftleft_eye,rightleft_eye,bottom,top,d(eye-nearz),d(eye-farz))⑽

      右眼投影矩陣mrproj

      mrproj=frustum(leftright_eye,rightright_eye,bottom,top,d(eye-nearz),d(eye-farz))⑾

      左眼視圖矩陣

      mlview=glm::lookat(leftcameraposition,cameratarget,upvector)⑿

      右眼視圖矩陣

      mrview=glm::lookat(rightcameraposition,cameratarget,upvector)⒀

      leftcameraposition表示實(shí)際坐標(biāo)系中的左相機(jī)位置,rightcameraposition表示實(shí)際坐標(biāo)系中的右相機(jī)的位置,cameratarget表示實(shí)際坐標(biāo)系中的目標(biāo)位置,upvector代表取z坐標(biāo)為正方向。

      步驟5:將左右眼的投影矩陣、視圖矩陣和模型矩陣分別相乘得到兩個(gè)4*4矩陣mvp,并將矩陣mvp傳入著色器

      mvp=projection*view*model⒁

      projection是投影矩陣,view是視圖矩陣,model是模型矩陣。

      因?yàn)樽笥已鄣玫降耐队熬仃嚭鸵晥D矩陣都不相同,所以三個(gè)矩陣相乘得到的mvp矩陣也是不同的。因此,本發(fā)明會(huì)分別將左眼的mvp和右眼的mvp傳入著色器,即根據(jù)左眼的投影矩陣、視圖矩陣以及模型矩陣得到左眼mvp,并將左眼mvp傳入著色器,根據(jù)右眼的投影矩陣、視圖矩陣以及模型矩陣得到右眼mvp,并將右眼mvp傳入著色器。

      步驟6:加載3d模型文件,并將頂點(diǎn)信息保存在數(shù)組中

      用遞歸算法加載3d模型文件,并將讀取出的頂點(diǎn)信息以數(shù)組的形式保存。當(dāng)3d模型的所有頂點(diǎn)加載完成后,將保存了頂點(diǎn)信息的數(shù)組傳入著色器中。

      步驟7:將頂點(diǎn)坐標(biāo)分別左乘左右眼的mvp矩陣,從而得到新的頂點(diǎn)坐標(biāo);

      設(shè)原頂點(diǎn)坐標(biāo)p1=(x1,y1,z1,w),變換后頂點(diǎn)坐標(biāo)為p2=(x2,y2,z2,w)。

      p2=mvp*p1⒂

      步驟8:當(dāng)3d模型的每個(gè)頂點(diǎn)都轉(zhuǎn)化之后,即可得到新的觀測(cè)圖像,即為左右眼圖像。將得到的左右眼圖像分別映射在屏幕的左右半邊,將它們拼接在一塊就得到了雙視點(diǎn)視圖。

      與現(xiàn)有技術(shù)相比,本發(fā)明的積極效果為:

      本發(fā)明不同于通過(guò)雙目攝像頭采集信息的方法,而是通過(guò)讀取3d模型文件來(lái)建立雙視點(diǎn)視圖,可被應(yīng)用于虛擬場(chǎng)景的雙視點(diǎn)視圖生成。

      本發(fā)明相比于傳統(tǒng)方法適用性強(qiáng),將所轉(zhuǎn)化得到的雙視點(diǎn)視圖傳入裸眼3d屏幕即可實(shí)現(xiàn)裸眼3d效果,將雙視點(diǎn)視圖傳入vr設(shè)備即可實(shí)現(xiàn)vr效果。

      本發(fā)明采用匯聚式投影模型,符合人眼的視覺(jué)習(xí)慣,滿足雙眼輻輳的仿真,實(shí)現(xiàn)的效果更逼真。同時(shí),影響視覺(jué)體驗(yàn)的雙眼距離iod以及人眼到屏幕的距離d(eye-screen)都是輸入?yún)?shù)。這使得調(diào)節(jié)最終效果變得更加科學(xué)、方便。

      附圖說(shuō)明

      圖1是匯聚式投影示意圖;

      圖2是匯聚式投影棱錐臺(tái)示意圖;

      圖3是轉(zhuǎn)化算法流程圖。

      具體實(shí)施方式

      下面結(jié)合具體實(shí)施方式對(duì)本發(fā)明進(jìn)行詳細(xì)的說(shuō)明。

      如圖1-3所示,一種3d模型轉(zhuǎn)立體雙視點(diǎn)視圖的方法,具體包括如下步驟:

      步驟1:選定匯聚式觀測(cè)模型

      觀測(cè)模型主要有匯聚式觀測(cè)模型和平行式觀測(cè)模型。本發(fā)明選定匯聚式觀測(cè)模型。

      附圖1為匯聚式投影示意圖、附圖2為匯聚式投影的棱錐臺(tái)。其中top,bottom,left,right分別為左右眼共用的棱錐臺(tái)前剪裁面的上下左右邊到中心的距離,near為前剪裁面到視點(diǎn)的距離,far為后剪裁面到視點(diǎn)的距離。

      步驟2:根據(jù)相似三角形計(jì)算匯聚式觀測(cè)模型的錐體位移:

      frustumshift=(iod/2)*d(eye-nearz)/d(eye-screen)⑴

      式中,iod為雙眼距離,d(eye-nearz)表示人眼到前剪切面的垂直距離,d(eye-screen)表示人眼到屏幕的垂直距離,d(eye-farz)表示人眼到后剪切面的垂直距離。取iod=7,d(eye-nearz)=1,d(eye-screen)=5,d(eye-farz)=100,則可計(jì)算得到frumstumshift=0.7。

      步驟3:根據(jù)幾何學(xué)知識(shí)計(jì)算左右眼錐臺(tái)參數(shù)

      左眼:

      top=tan(fov/2)*d(eye-nearz)⑵

      leftleft_eye=-ratio*top-frumstumshift⑶

      rightleft_eye=ratio*top-frumstumshift⑷

      bottom=-top⑸

      右眼:

      top=tan(fov/2)*d(eye-nearz)⑹

      rightright_eye=ratio*top+frumstumshift⑺

      leftright_eye=-ratio*top+frumstumshift⑻

      bottom=-top⑼

      其中,fov表示人眼觀測(cè)圖像上下兩邊的視野夾角,ratio為圖像長(zhǎng)寬比;

      top和bottom分別為左右眼共用的棱錐臺(tái)前剪裁面的上下邊界到中心的距離;

      leftleft_eye和leftright_eye分別為左右眼的棱錐臺(tái)前剪裁面的左邊界到中心的距離;

      rightleft_eye和rightright_eye分別為左右眼的棱錐臺(tái)前剪裁面的右邊界到中心的距離;

      取fov=120°,ratio=1080/960,則計(jì)算可得

      左眼:rightleft_eye=1.2485,leftleft_eye=-2.6485,bottom=-1.732。

      右眼:rightright_eye=2.6485,leftright_eye=-1.2485,bottom=-1.732。

      步驟4:根據(jù)下列兩個(gè)矩陣得到左右眼的投影矩陣和視圖矩陣,具體如下:

      fnear,ffar代表d(eye-nearz),d(eye-farz),t、b代表top、bottomrl,rr,ll,lr分別代表rightleft_eye,rightright_eye,leftleft_eye,leftright_eye,從而得出左眼投影矩陣mlproj:

      mlproj=frustum(leftleft_eye,rightleft_eye,bottom,top,d(eye-nearz),d(eye-farz))⑽

      右眼投影矩陣mrproj:

      mrproj=frustum(leftright_eye,rightright_eye,bottom,top,d(eye-nearz),d(eye-farz))⑾

      左眼視圖矩陣mlview:

      mlview=glm::lookat(leftcameraposition,cameratarget,upvector)⑿

      右眼視圖矩陣mrview:

      mrview=glm::lookat(rightcameraposition,cameratarget,upvector)⒀

      leftcameraposition表示實(shí)際坐標(biāo)系中的左相機(jī)位置,rightcameraposition表示實(shí)際坐標(biāo)系中的右相機(jī)的位置,cameratarget表示實(shí)際坐標(biāo)系中的目標(biāo)位置,upvector代表取z坐標(biāo)為正方向。

      步驟5:將左右眼的投影矩陣、視圖矩陣和模型矩陣分別相乘得到兩個(gè)4*4矩陣mvp,并將矩陣mvp傳入著色器

      mvp=projection*view*model⒁

      projection是投影矩陣,view是視圖矩陣,model是模型矩陣。

      因?yàn)樽笥已鄣玫降耐队熬仃嚭鸵晥D矩陣都不相同,所以三個(gè)矩陣相乘得到的mvp矩陣也是不同的。因此,本發(fā)明會(huì)分別將左眼的mvp和右眼的mvp傳入著色器,即根據(jù)左眼的投影矩陣、視圖矩陣以及模型矩陣得到左眼mvp,并將左眼mvp傳入著色器,根據(jù)右眼的投影矩陣、視圖矩陣以及模型矩陣得到右眼mvp,并將右眼mvp傳入著色器。模型矩陣能夠使3d模型的位置在世界坐標(biāo)系中發(fā)生變化,例如模型的旋轉(zhuǎn)或者平移。因?yàn)楸景l(fā)明可以不做任何的旋轉(zhuǎn)平移,所以本發(fā)明的模型矩陣取4*4的單位矩陣,即默認(rèn)3d模型加載在世界坐標(biāo)系的原點(diǎn)處。

      步驟6:加載3d模型文件,并將頂點(diǎn)信息保存在數(shù)組中

      用遞歸算法加載3d模型文件,并將讀取出的頂點(diǎn)信息以數(shù)組的形式保存。當(dāng)3d模型的所有頂點(diǎn)加載完成后,將保存了頂點(diǎn)信息的數(shù)組傳入著色器中。

      步驟7:將頂點(diǎn)坐標(biāo)分別左乘左右眼的mvp矩陣,從而得到新的頂點(diǎn)坐標(biāo);

      設(shè)原頂點(diǎn)坐標(biāo)p1=(x1,y1,z1,w),變換后頂點(diǎn)坐標(biāo)為p2=(x2,y2,z2,w)。

      p2=mvp*p1⒂

      步驟8:當(dāng)3d模型的每個(gè)頂點(diǎn)都轉(zhuǎn)化之后,即可得到新的觀測(cè)圖像,即為左右眼圖像。將得到的左右眼圖像分別映射在屏幕的左右半邊,將它們拼接在一塊就得到了雙視點(diǎn)視圖。

      本發(fā)明將得到的mvp矩陣傳入著色器處理,大大加快了程序運(yùn)行速度,這將提高程序的實(shí)時(shí)性和快速性。觀測(cè)效果易調(diào)節(jié),可以根據(jù)外部設(shè)備的不同選擇最適合的觀測(cè)參數(shù)。

      當(dāng)前第1頁(yè)1 2 
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1