本發(fā)明涉及虛擬現(xiàn)實,具體涉及一種基于三維引擎實現(xiàn)三維場景構(gòu)建及渲染優(yōu)化的方法和系統(tǒng)。
背景技術(shù):
1、在傳統(tǒng)的三維場景設計中,地編設計師完全根據(jù)二維手繪進行設計和制作。隨著虛擬現(xiàn)實技術(shù)的進一步發(fā)展,三維軟件的普及和不斷完善,地編設計師在前期用手繪構(gòu)思的同時,加入了一些三維軟件并開始利用其進行渲染。
2、虛擬現(xiàn)實技術(shù),是一種可以創(chuàng)建和體驗虛擬世界的計算機仿真系統(tǒng),它利用計算機生成一種模擬環(huán)境,使用戶沉浸到該環(huán)境中。三維引擎可以在編輯器中直接查看運行效果,實時進行調(diào)整和優(yōu)化,實時預覽的功能讓開發(fā)者能夠快速迭代和測試游戲內(nèi)容,節(jié)省了不必要的等待時間。
3、目前,地編設計師們通常運用某些三維軟件進行設計制作三維場景,運用arnold、v?ray軟件進行進一步的細化渲染,但這些軟件在運用過程中存在如下問題:
4、1.渲染器問題:渲染效率低下;切換環(huán)境、光線及攝像機后需要重新進行渲染,無法實現(xiàn)所見即所得,所有參數(shù)需要進行手動調(diào)整,完成調(diào)整后還要進行重新渲染,增加制作工作量和制作周期。
5、2.普通三維場景軟件缺陷:制作精度不夠;貼圖分辨率低;無法實時預覽編輯;不能滿足地編設計師的制作需求;靈活性差,無法與引擎進行橋接。
技術(shù)實現(xiàn)思路
1、為解決上述問題,本發(fā)明提供了一種基于三維引擎實現(xiàn)三維場景構(gòu)建及渲染優(yōu)化的方法和系統(tǒng),該方法及系統(tǒng)能夠整體提高三維場景的渲染速度和效果,同時提高軟件運用互通的靈活性,滿足地編設計師的設計效果和設計需求,降低修改成本和制作周期。
2、為了實現(xiàn)上述發(fā)明目的,本發(fā)明采取如下技術(shù)方案:
3、第一方面,本發(fā)明公開一種基于三維引擎實現(xiàn)三維場景構(gòu)建及渲染優(yōu)化的方法,包括以下步驟:
4、步驟1:在三維場景軟件中進行三維場景的編輯,得到三維場景模型;
5、步驟2:導出三維場景的高度數(shù)據(jù)、網(wǎng)格頂點法線坐標數(shù)據(jù)和紋理坐標數(shù)據(jù),存儲為高度圖文件;
6、步驟3:將高度圖文件導入三維引擎中,解析數(shù)據(jù)并構(gòu)建由頂點組成的三角形的三維網(wǎng)格;
7、步驟4:計算法線紋理坐標,將整個法線紋理覆蓋整個三維網(wǎng)格,獲得高分辨率的貼圖;
8、步驟5:將三維網(wǎng)格和高分辨率貼圖進行結(jié)合,完成三維場景的快捷構(gòu)建及渲染。
9、進一步地,所述步驟2中,所述高度數(shù)據(jù)包括通過像素顏色所獲取的三維場景表面高度的最小值及最大值,也即高度閾值;以及與所述三維場景表面高度相關聯(lián)的貼圖的大小及位置信息;所述紋理坐標數(shù)據(jù)包括材質(zhì)球?qū)傩孕畔ⅲ约盎诟叨葓D圖像的各像素顏色計算出的頂點高度。
10、進一步地,所述步驟3中,解析數(shù)據(jù)的具體方法如下:
11、步驟3-1:將文件中的高度圖數(shù)據(jù)讀入內(nèi)存中;
12、步驟3-2:創(chuàng)建一個無符號字符類型的數(shù)組in,用于存儲讀取的高度圖數(shù)據(jù);所述數(shù)組in的大小等于高度圖的寬高尺寸的乘積;
13、步驟3-3:創(chuàng)建一個輸入文件流對象?infile,并使用成員函數(shù)?open?以二進制模式打開所述高度圖文件;
14、步驟3-4:使用?read?函數(shù)從高度圖文件中讀取數(shù)據(jù)到in數(shù)組中,將in數(shù)組的起始地址轉(zhuǎn)換為字符指針,指定要讀取的字節(jié)數(shù)為in數(shù)組的大??;
15、步驟3-5:讀取完成后,關閉文件;
16、步驟3-6:通過循環(huán)將in數(shù)組中的數(shù)據(jù)復制到mheightmap數(shù)組中并進行縮放處理;將無符號字符數(shù)據(jù)轉(zhuǎn)換為浮點數(shù),并乘以縮放比例得到紋理的高度值和寬度值。
17、進一步地,所述步驟3中,構(gòu)建由頂點組成的三角形的三維網(wǎng)格的具體方法如下:
18、步驟31:創(chuàng)建紋理對象:創(chuàng)建一個與貼圖相關聯(lián)的紋理對象;
19、步驟32:計算增量值:通過將紋理的寬度值除以實際寬度減?1,得到每個網(wǎng)格頂點坐標在水平方向上的增量,以確保紋理在水平方向上正確映射到模型上;調(diào)整起始?z?坐標的范圍,再除以實際高度值減?1,實現(xiàn)紋理在垂直方向上的均勻分布。
20、步驟33:創(chuàng)建列表:創(chuàng)建positions?列表用以存儲模型的各個頂點位置信息并確認模型在空間中的位置和形狀;創(chuàng)建textcoords列表用以存儲與紋理相關的坐標信息,將紋理映射到模型上;創(chuàng)建indices列表將連接頂點形成三角形的索引信息進行存儲。
21、步驟34:列表轉(zhuǎn)換數(shù)組:將各頂點的位置信息posarr、紋理坐標信息textcoordsarr、連接頂點形成三角形的索引信息indicesarr由列表形式轉(zhuǎn)換為數(shù)組形式。
22、步驟35:創(chuàng)建網(wǎng)格:使用轉(zhuǎn)換后的posarr、extcoordsarr、indicesarr這三種數(shù)組創(chuàng)建更高精度三維網(wǎng)格。
23、進一步地,所述步驟4包括以下具體步驟:
24、步驟41:創(chuàng)建一個?normal?列表來存儲相鄰頂點變量的位置數(shù)據(jù)信息;
25、步驟42:索引獲取normals列表中相鄰頂點的位置數(shù)據(jù),通過計算相鄰頂點之間的差值得到頂點間的位移向量,設置位移向量為默認的法線值,并將位移向量的法線值添加到normals列表中;
26、步驟43:將normals列表轉(zhuǎn)換為數(shù)組,通過數(shù)組的轉(zhuǎn)換,得到每個相鄰頂點位置所對應的法線坐標值,將頂點位置的法線坐標進行排布并形成圖形矩陣,最終得到高分辨率的法線貼圖;
27、步驟44:創(chuàng)建一個材質(zhì)對象material并將其應用到三維網(wǎng)格上。
28、進一步地,所述步驟5具體步驟如下:
29、在三維引擎中將步驟3和步驟4中的三維場景和高分辨率貼圖進行結(jié)合,設置反射參數(shù),調(diào)整光的方向,利用三維引擎的光線追蹤技術(shù),查看真實的效果,根據(jù)調(diào)試的效果進行場景的修改。
30、第二方面,本發(fā)明公開一種基于三維引擎實現(xiàn)三維場景構(gòu)建及渲染優(yōu)化的系統(tǒng),包括以下功能模塊:
31、模型編輯模塊,用以在三維場景軟件中進行三維場景的編輯,得到三維場景模型;
32、數(shù)據(jù)導出及存儲模塊,用以導出三維場景的高度數(shù)據(jù)、網(wǎng)格頂點法線坐標數(shù)據(jù)和紋理坐標數(shù)據(jù),存儲為高度圖文件;
33、數(shù)據(jù)解析及網(wǎng)格構(gòu)建模塊,用以將高度圖文件導入三維引擎中,解析數(shù)據(jù)并構(gòu)建由頂點組成的三角形的三維網(wǎng)格;
34、貼圖獲取模塊,用以計算法線紋理坐標,將整個法線紋理覆蓋整個三維網(wǎng)格,獲得高分辨率的貼圖;
35、場景構(gòu)建及渲染模塊,用以將三維網(wǎng)格和高分辨率貼圖進行結(jié)合,完成三維場景的快捷構(gòu)建及渲染。
36、與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果在于:
37、本發(fā)明通過三維軟件和三維引擎的結(jié)合使用,大大提高了軟件的靈活性,滿足了地編設計師的想象力,可以進行更大膽和高數(shù)據(jù)量的創(chuàng)作,真正滿足地編設計師需要的設計效果及設計理念。制作出的三維場景,通過虛擬現(xiàn)實技術(shù),更大限度的還原出場景的真實效果,增加用戶對虛擬環(huán)境的沉浸感。三維引擎強大的實時渲染,以及光影追蹤功能,能夠讓虛擬的三維場景快速得到帶有材質(zhì)的效果。三維引擎的使用,可以使三維場景不用在切換環(huán)境、光線后進行重新渲染,降低了時間和人力成本,提高了效率。