離線渲染的預(yù)處理方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及離線渲染技術(shù)領(lǐng)域,尤其涉及一種離線渲染的預(yù)處理方法。
【背景技術(shù)】
[0002]3D客戶端渲染的目的是盡量展現(xiàn)逼真的效果。然而,因?yàn)樗枰秩镜沫h(huán)境每幀都會(huì)發(fā)生改變,所以每幀都需要計(jì)算陰影、光照及環(huán)境光遮擋等信息,這一過程需要占用大量的CPU或GPU。此外,一些更為逼真的間接光還因?yàn)樾蕟栴}無法考慮進(jìn)去。所以,離線渲染技術(shù)應(yīng)運(yùn)而生。它利用預(yù)先生成好的數(shù)據(jù),當(dāng)客戶端渲染所指定的地表和模型,不需要實(shí)時(shí)渲染著色流程,而是動(dòng)態(tài)加載那些預(yù)處理數(shù)據(jù),并顯示出來。
【發(fā)明內(nèi)容】
[0003]為了解決現(xiàn)有技術(shù)存在的不足,本發(fā)明的目的在于提供一種離線渲染的預(yù)處理方法,從而實(shí)現(xiàn)基于Flexi客戶端引擎并采用Beast的全局光照明解決方案,使Beast的客戶端能增強(qiáng)真實(shí)感。
[0004]為實(shí)現(xiàn)上述目的,本發(fā)明提供的離線渲染的預(yù)處理方法,包括以下步驟:
1)通過編輯器設(shè)定直接和間接光強(qiáng)度、光線反彈次數(shù)參數(shù),創(chuàng)建Beast環(huán)境;
2)把渲染所需要的光線進(jìn)行分類,并提供每種類型光的顏色、亮度及方向信息給Beast ;
3)分割場景,生成光貼圖數(shù)據(jù);
4)使模型的頂點(diǎn)數(shù)據(jù)附帶上光貼圖uv,開辟子線程使得Beast啟動(dòng)光貼圖展uv模式,線程結(jié)束后,獲取以面索引和uv值的方式提供的結(jié)果數(shù)據(jù),進(jìn)行頂點(diǎn)合并操作,并保存模型數(shù)據(jù);
5)把光照信息、模型和地形信息,以及依附在它們上的材質(zhì)信息傳入Beast;
6)從Beast數(shù)據(jù)反饋模塊獲取光貼圖數(shù)據(jù),并保存在磁盤中;
7)批量合并所有小貼圖到一張貼圖里,并記錄具體材質(zhì)映射到此合并后所在貼圖的偏移量和縮放值。
[0005]進(jìn)一步地,所述步驟2)中的光線分類包括太陽光、環(huán)境光、太空光、點(diǎn)光源和聚光源。
[0006]進(jìn)一步地,所述步驟3)進(jìn)一步包括以下步驟:根據(jù)權(quán)利要求2所述的離線渲染的預(yù)處理方法,其特征在于,所述步驟3)進(jìn)一步包括以下步驟:Flexi引擎將地形按照正方形分割,每個(gè)正方形區(qū)域定義為一個(gè)zone,保持加載3*3個(gè)zone地形數(shù)據(jù)和zone上的物件,并保證攝像機(jī)在中心zone內(nèi);把3*3個(gè)zone地形數(shù)據(jù)添加到Beast里;在攝像機(jī)所在的zone創(chuàng)建烘焙紋理目標(biāo),倉ll建烘焙實(shí)例,進(jìn)行烘焙;對中心zone和靠近中心zone物件進(jìn)行光貼圖渲染。
[0007]進(jìn)一步地,所述步驟6)中的光貼圖保存格式包括DXT1和A8R8G8B8。
[0008]本發(fā)明的離線渲染的預(yù)處理方法,其技術(shù)效果主要包括:避免了內(nèi)存過大的問題,并使客戶端不需要實(shí)時(shí)渲染的著色流程,只需要采樣光貼圖就可以實(shí)現(xiàn)很真實(shí)的效果,增強(qiáng)了 Beast客戶端的真實(shí)感。
[0009]本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的說明書中闡述,并且,部分地從說明書中變得顯而易見,或者通過實(shí)施本發(fā)明而了解。
【附圖說明】
[0010]附圖用來提供對本發(fā)明的進(jìn)一步理解,并且構(gòu)成說明書的一部分,并與本發(fā)明的實(shí)施例一起,用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的限制。在附圖中:
圖1為根據(jù)本發(fā)明的離線渲染的預(yù)處理方法流程圖;
圖2為按照zone分割整個(gè)場景的效果圖。
【具體實(shí)施方式】
[0011]以下結(jié)合附圖對本發(fā)明的優(yōu)選實(shí)施例進(jìn)行說明,應(yīng)當(dāng)理解,此處所描述的優(yōu)選實(shí)施例僅用于說明和解釋本發(fā)明,并不用于限定本發(fā)明。
[0012]圖1為根據(jù)本發(fā)明的離線渲染的預(yù)處理方法流程圖。下面將參考圖1,對本發(fā)明的離線渲染的預(yù)處理方法進(jìn)行詳細(xì)描述。
[0013]首先,在步驟101,通過編輯器,設(shè)定好直接和間接光強(qiáng)度,光線反彈次數(shù)等參數(shù),創(chuàng)建Beast環(huán)境。
[0014]在步驟102,把渲染所需要的光線分類為太陽光、環(huán)境光、太空光、點(diǎn)光源以及聚光源,并每種類型光的顏色、亮度、方向信息給Beast。
[0015]在步驟103,F(xiàn)lexi引擎把地形按照正方形來分割,這個(gè)正方形區(qū)域就定義為zone,保持一直加載3*3個(gè)zone地形數(shù)據(jù)和zone上的物件,并且保證攝像機(jī)在中心的zone內(nèi)。如圖2所示,1個(gè)格子為1個(gè)zone,范圍256平方米,中心格子(斜線區(qū)域)是攝像頭所在 zone ο
[0016]隨后,把3*3個(gè)zone全部添加到Beast里,并且規(guī)定了只有攝像機(jī)所在的zone,才創(chuàng)建了烘焙紋理目標(biāo),創(chuàng)建烘焙實(shí)例,進(jìn)行了烘焙,只有中心zone (斜線區(qū)域)和靠近中心zone的物件(以斜線標(biāo)出)進(jìn)行光貼圖渲染,其他zone和物件只是作為基礎(chǔ)數(shù)據(jù)傳入。
[0017]通過zone分割整個(gè)場景,避免了內(nèi)存過大問題,并可簡單管理生成出來的光貼圖數(shù)據(jù)。
[0018]在步驟104,為了讓模型能使用光貼圖渲染,必須讓模型的頂點(diǎn)數(shù)據(jù)都附帶上光貼圖uv,只有這樣才能使用uv坐標(biāo)在光貼圖上進(jìn)行尋址采樣顏色數(shù)據(jù)。所以,接下來開辟子線程讓Beast啟動(dòng)光貼圖展uv模式。
[0019]等待線程結(jié)束,因?yàn)轫旤c(diǎn)數(shù)據(jù)增加了 uv數(shù)據(jù),所以頂點(diǎn)的數(shù)量會(huì)發(fā)生變化,生成結(jié)果數(shù)據(jù)以面索引和uv值的方式提供,獲取出來之后,進(jìn)行一次頂點(diǎn)合并操作。最后,保存這份模型數(shù)據(jù)。
[0020]在步驟105,把光照信息,模型和地形信息,以及依附在它們上的材質(zhì)信息,都傳入Beast。接下來開辟子線程讓Beast啟動(dòng)生成光貼圖模式。
[0021]在步驟106,生成光貼圖結(jié)束,子線程結(jié)束,從Beast數(shù)據(jù)反饋模塊,獲取光貼圖數(shù)據(jù),并保存在磁盤中。為了避免精度丟失造成的貼圖質(zhì)量偏低,本發(fā)明提供了多種保存光貼圖的格式,比如常用的DXT1,A8R8G8B8等。
[0022]在步驟107,針對一些小模型所生成的光貼圖也很小的問題,把所有小貼圖批量合并到一張512*512大小的貼圖里,并記錄具體材質(zhì)映射到此合并后所在貼圖的偏移量和縮放值。這樣就可以減少Flexi引擎訪問磁盤的次數(shù),從而減少了 10上的壓力。
[0023]具體地,本發(fā)明中離線渲染的預(yù)處理方法,其特別之處在于包括以下步驟:
1.獲取所需烘培區(qū)域內(nèi)的靜態(tài)模型,編輯器里可以指定該模型是否需要烘培光貼圖,如果要烘培,則把模型的數(shù)據(jù)傳入Beast ;
2.判斷該模型是否已經(jīng)利用BeastUVWrap工具展過UV,如果沒有,則開辟子線程先進(jìn)行展UV,結(jié)束之后,在模型文件里寫入已經(jīng)處理過UV的標(biāo)簽,以供下一次的判斷;
3.在能產(chǎn)生透明效果的材質(zhì)問題上,Beast只能支持帶Alpha的漫反射貼圖的識(shí)別,而高光亮度疊加產(chǎn)生的透明效果不能識(shí)別,所以該種不支持的透明效果材質(zhì)不傳入;
4.在保存展UV結(jié)果數(shù)據(jù)時(shí),進(jìn)行合并頂點(diǎn)處理,即帶有相同的位置、法線、次法線以及UV信息等的頂點(diǎn)合并為一個(gè)頂點(diǎn);
5.保存光貼圖數(shù)據(jù)的時(shí)候,為了避免精度丟失產(chǎn)生的問題,提供A8R8G8B8,DXT1等多種貼圖存儲(chǔ)方式。
[0024]本領(lǐng)域普通技術(shù)人員可以理解:以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明,盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,對于本領(lǐng)域的技術(shù)人員來說,其依然可以對前述各實(shí)施例記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種離線渲染的預(yù)處理方法,包括以下步驟: 1)通過編輯器設(shè)定直接和間接光強(qiáng)度、光線反彈次數(shù)參數(shù),創(chuàng)建Beast環(huán)境; 2)把渲染所需要的光線進(jìn)行分類,并提供每種類型光的顏色、亮度及方向信息給Beast ; 3)分割場景,生成光貼圖數(shù)據(jù); 4)使模型的頂點(diǎn)數(shù)據(jù)附帶上光貼圖uv,開辟子線程使得Beast啟動(dòng)光貼圖展uv模式,線程結(jié)束后,獲取以面索引和uv值的方式提供的結(jié)果數(shù)據(jù),進(jìn)行頂點(diǎn)合并操作,并保存模型數(shù)據(jù); 5)把光照信息、模型和地形信息,以及依附在它們上的材質(zhì)信息傳入Beast; 6)從Beast數(shù)據(jù)反饋模塊獲取光貼圖數(shù)據(jù),并保存在磁盤中; 7)批量合并所有小貼圖到一張貼圖里,并記錄具體材質(zhì)映射到此合并后所在貼圖的偏移量和縮放值。2.根據(jù)權(quán)利要求1所述的離線渲染的預(yù)處理方法,其特征在于,所述步驟2)中的光線分類包括太陽光、環(huán)境光、太空光、點(diǎn)光源和聚光源。3.根據(jù)權(quán)利要求2所述的離線渲染的預(yù)處理方法,其特征在于,所述步驟3)進(jìn)一步包括以下步驟:Flexi引擎將地形按照正方形分割,每個(gè)正方形區(qū)域定義為一個(gè)zone,保持加載3*3個(gè)zone地形數(shù)據(jù)和zone上的物件,并保證攝像機(jī)在中心zone內(nèi);把3*3個(gè)zone地形數(shù)據(jù)添加到Beast里;在攝像機(jī)所在的zone創(chuàng)建烘焙紋理目標(biāo),創(chuàng)建烘焙實(shí)例,進(jìn)行烘焙;對中心zone和靠近中心zone物件進(jìn)行光貼圖清染。4.根據(jù)權(quán)利要求1所述的離線渲染的預(yù)處理方法,其特征在于,所述步驟6)中的光貼圖保存格式包括DXT1和A8R8G8B8。
【專利摘要】一種離線渲染的預(yù)處理方法,包括以下步驟:1)設(shè)定參數(shù),創(chuàng)建Beast環(huán)境;2)分類渲染所需要的光線,并提供每種類型光信息給Beast;3)分割場景,生成光貼圖數(shù)據(jù);4)使模型的頂點(diǎn)數(shù)據(jù)附帶上光貼圖uv,開辟子線程使得Beast啟動(dòng)光貼圖展uv模式,獲取結(jié)果數(shù)據(jù),進(jìn)行頂點(diǎn)合并操作,并保存模型數(shù)據(jù);5)把光照信息、模型和地形信息,以及依附在它們上的材質(zhì)信息傳入Beast;6)從Beast數(shù)據(jù)反饋模塊,獲取光貼圖數(shù)據(jù),并保存在磁盤中;7)批量合并小貼圖,并記錄偏移量和縮放值。本發(fā)明的離線渲染的預(yù)處理方法,避免了內(nèi)存過大的問題,并使客戶端不需要實(shí)時(shí)渲染的著色流程,只需要采樣光貼圖就可以實(shí)現(xiàn)很真實(shí)的效果,增強(qiáng)了Beast客戶端的真實(shí)感。
【IPC分類】G06T15/50
【公開號(hào)】CN105321200
【申請?zhí)枴緾N201510402120
【發(fā)明人】游之鵬
【申請人】蘇州蝸牛數(shù)字科技股份有限公司
【公開日】2016年2月10日
【申請日】2015年7月10日