欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種三維虛擬環(huán)境中的渲染顯示方法及裝置與流程

文檔序號:12787374閱讀:632來源:國知局
一種三維虛擬環(huán)境中的渲染顯示方法及裝置與流程

本發(fā)明涉及圖像處理技術(shù)領(lǐng)域,特別涉及一種三維虛擬環(huán)境中的渲染顯示方法及裝置。



背景技術(shù):

Unity3D是Unity Technologies開發(fā)的一個讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內(nèi)容的多平臺的綜合型游戲開發(fā)工具,是一個全面整合的專業(yè)游戲引擎。Unity類似于Director,Blender game engine,Virtools或Torque Game Builder等利用交互的圖型化開發(fā)環(huán)境為首要方式的軟件其編輯器運(yùn)行在Windows和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone和Android平臺。也可以利用Unity web player插件發(fā)布網(wǎng)頁游戲,支持Mac和Windows的網(wǎng)頁瀏覽。它的網(wǎng)頁播放器也被Mac widgets所支持。

Unreal是UNREAL ENGINE的簡寫,中文:虛幻引擎(UNREAL ENGINE)是目前世界最知名授權(quán)最廣的頂尖游戲引擎,占有全球商用游戲引擎80%的市場份額。中國首家虛幻技術(shù)研究中心在上海成立,該中心由GA國際游戲教育與虛幻引擎開發(fā)商EPIC的中國子公司EPIC GAMES CHINA聯(lián)合設(shè)立。

為方便說明,下面主要以游戲程序以及Unity3D或Unreal為例進(jìn)行說明。

在一些含有圖像顯示的程序、視頻中,動畫是使用內(nèi)置的美術(shù)資源和渲染引擎實時渲染的,但預(yù)渲染動畫則不同,它們通常是在3D應(yīng)用程序中利用高分辨率美術(shù)資源創(chuàng)建并渲染的。最終制成的視頻片段只是在程序、視頻中回放一遍。

隨著Unreal Engine 3及其高質(zhì)量的渲染系統(tǒng)的誕生,這兩種渲染技術(shù)之間的界線已經(jīng)變得模糊起來。使用游戲中美術(shù)資源制作的游戲中過場動畫與使用高分辨率美術(shù)資源制成的現(xiàn)代影片具有同樣高的視覺逼真度。Matinee系統(tǒng)也已煥然一新,并成為非線性全效特征的編輯器。在過去,只能通過預(yù)渲染得到的高質(zhì)量的過場動畫,現(xiàn)在可以在UnrealEd內(nèi)部直接創(chuàng)建,并可以在游戲播放時更為簡便地實時渲染了。

Unreal并非是一個全實時計算的引擎,而是實時計算+預(yù)渲染。游戲引擎中為了呈現(xiàn)出以假亂真的效果,很多時候都會使用預(yù)渲染的技術(shù),所謂預(yù)渲染的技術(shù),其實就是把一些復(fù)雜的中間計算結(jié)果緩存在貼圖之類的存儲結(jié)構(gòu)里。這樣的技術(shù)非常常見,大部分的核心思想是算法里面的空間換時間的策略,或者是簡化問題的模型,減小計算規(guī)模,所以現(xiàn)在單機(jī)游戲越來越大,很大一部分資源是被這些東西占用了。下面簡單舉例說明預(yù)渲染:

light map,簡單的說就是把光強(qiáng)度在整個場景中的分布用貼圖存儲下來,配合第二UV,在真正實時計算光照的時候就省去了計算光強(qiáng)這部分的計算量;對于一些復(fù)雜形狀的光源,在很難對它的光強(qiáng)在任一點(diǎn)的積分求數(shù)值解或者計算量過大的情況下,一般這類光強(qiáng)分布會被緩存在一張貼圖上,叫法可能各不相同,或者是environment map,或者是image based lighting,或者是IES light,這類處理本質(zhì)上是一樣的東西,都是光強(qiáng)分布函數(shù)的離散化存儲,計算是離線的。

由此可見,在此過程中,渲染會用到大量的資源,而現(xiàn)有技術(shù)的不足正在于:現(xiàn)有的渲染技術(shù)對每一個模型都進(jìn)行渲染,使得效率低下,占用了大量的資源,進(jìn)一步的,使得這一類的程序運(yùn)行需要的硬件配置過高,不能在一般的硬件配置下運(yùn)行。



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

本發(fā)明提供了一種三維虛擬環(huán)境中的渲染顯示方法及裝置,用以提高三維虛擬環(huán)境中的渲染顯示效率。

本發(fā)明實施例中提供了一種三維虛擬環(huán)境中的渲染顯示方法,包括:

在三維虛擬環(huán)境中的模型處于相機(jī)視錐體內(nèi)時,確定模型與相機(jī)的距離;

根據(jù)距離與精度級別的對應(yīng)關(guān)系,確定該模型所對應(yīng)的精度級別;

調(diào)用該精度級別的模型進(jìn)行渲染后顯示。

較佳地,確定模型與相機(jī)的距離時,是同時在三維虛擬環(huán)境中的若干模型中確定處于相機(jī)視錐體內(nèi)的各模型后,確定每一個模型與相機(jī)的距離;

或,是在三維虛擬環(huán)境中的各模型中分別確定處于相機(jī)視錐體內(nèi)的每一個模型后,確定每一個模型與相機(jī)的距離。

較佳地,進(jìn)一步包括:

若模型處于相機(jī)視錐體外,不對該模型進(jìn)行渲染后顯示。

較佳地,在確定模型與相機(jī)的距離前,進(jìn)一步包括:

生成各精度級別的模型。

較佳地,在確定模型與相機(jī)的距離前,進(jìn)一步包括:

將高精度級別的模型上的組件和/或物體掛接于相應(yīng)的模型。

較佳地,生成各精度級別的模型,包括:

確定最高級別的精度的模型;

依據(jù)所需的各級別精度的模型數(shù)量,按照簡化模型依次生成確定各級別的精度的模型。

較佳地,所述精度級別和/或所需的各級別精度的模型數(shù)量是根據(jù)用戶需要設(shè)置的。

本發(fā)明實施例中提供了一種三維虛擬環(huán)境中的渲染顯示裝置,包括:

距離確定模塊,用于在三維虛擬環(huán)境中的模型處于相機(jī)視錐體內(nèi)時,確定模型與相機(jī)的距離;

精度級別確定模塊,用于根據(jù)距離與精度級別的對應(yīng)關(guān)系,確定該模型所對應(yīng)的精度級別;

渲染顯示模塊,用于調(diào)用該精度級別的模型進(jìn)行渲染后顯示。

較佳地,距離確定模塊進(jìn)一步用于確定模型與相機(jī)的距離時,是同時在三維虛擬環(huán)境中的若干模型中確定處于相機(jī)視錐體內(nèi)的各模型后,確定每一個模型與相機(jī)的距離;或,是在三維虛擬環(huán)境中的各模型中分別確定處于相機(jī)視錐體內(nèi)的每一個模型后,確定每一個模型與相機(jī)的距離。

較佳地,渲染顯示模塊進(jìn)一步用于若模型處于相機(jī)視錐體外,不對該模型進(jìn)行渲染后顯示。

較佳地,進(jìn)一步包括:

模型生成模塊,用于在確定模型與相機(jī)的距離前,生成各精度級別的模型。

較佳地,模型生成模塊進(jìn)一步用于在確定模型與相機(jī)的距離前,將高精度級別的模型上的組件和/或物體掛接于相應(yīng)的模型。

較佳地,模型生成模塊進(jìn)一步用于在生成各精度級別的模型時,包括:

確定最高級別的精度的模型;

依據(jù)所需的各級別精度的模型數(shù)量,按照簡化模型依次生成確定各級別的精度的模型。

較佳地,模型生成模塊進(jìn)一步用于根據(jù)用戶需要設(shè)置所述精度級別和/或所需的各級別精度的模型數(shù)量。

本發(fā)明有益效果如下:

在本發(fā)明實施例提供的技術(shù)方案中,由于每個模型都預(yù)先設(shè)有各個精度級別的待渲染顯示的模型,在模型處于相機(jī)視錐體內(nèi)時,就確定模型與相機(jī)的距離;然后根據(jù)距離與精度級別的對應(yīng)關(guān)系,確定每一個模型所對應(yīng)的精度級別;最后再將每一個模型對應(yīng)的精度級別的模型進(jìn)行渲染后顯示。

由于在模型精度級數(shù)和標(biāo)準(zhǔn)設(shè)置完成后,在模型顯示時根據(jù)所處的位置和重要程度,自動調(diào)整物體渲染的資源分配,降低非重要物體的面數(shù)和細(xì)節(jié)度,優(yōu)化場景性能,因此能夠提升整個場景的渲染效率。

附圖說明

此處所說明的附圖用來提供對本發(fā)明的進(jìn)一步理解,構(gòu)成本發(fā)明的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中:

圖1為本發(fā)明實施例中三維虛擬環(huán)境中的渲染顯示方法實施流程示意圖;

圖2為本發(fā)明實施例中不同精度級別的模型示意圖;

圖3為本發(fā)明實施例中Mesh示例1示意圖;

圖4為本發(fā)明實施例中Mesh示例2示意圖;

圖5為本發(fā)明實施例中邊坍塌法效果示意圖;

圖6為本發(fā)明實施例中頂點(diǎn)去除法效果示意圖;

圖7為本發(fā)明實施例中場景渲染顯示實施流程示意圖;

圖8為本發(fā)明實施例中三維虛擬環(huán)境中的渲染顯示裝置結(jié)構(gòu)示意圖。

具體實施方式

發(fā)明人在發(fā)明過程中注意到:

LOD(Levels of Detail,多細(xì)節(jié)層次)是一種全新的模型表示方法,改變了傳統(tǒng)的“圖像質(zhì)量越精細(xì)越好”的片面觀點(diǎn),而是依據(jù)視線的主方向、視線在場景物體表面的停留時間、物體離視點(diǎn)的遠(yuǎn)近和物體在畫面上的投影區(qū)域的大小等因素來決定物體應(yīng)選擇的細(xì)節(jié)層次,以達(dá)到實時顯示圖形的目的。另外,通過對場景中每個圖形對象的重要性進(jìn)行分析,使得最重要的圖形對象得以進(jìn)行較高質(zhì)量的繪制,而不重要的圖形對象則采用較低質(zhì)量的繪制,在保證實時圖形顯示的前提下,最大程度的提高視覺效果。

目前業(yè)內(nèi)流行的主流游戲引擎Unreal和Unity3d中,都已經(jīng)實現(xiàn)了LOD技術(shù)。例如在Unity3d中,用戶需要在要顯示的每個物體中添加LOD Group組件,LOD Group依據(jù)顯示物體在相機(jī)視圖中所占的比例為層級和精度標(biāo)準(zhǔn),在LOD Group組件中用戶手動添加具體層級要顯示的精度的子模型,最終將各個層級和精度的模型渲染顯示出來。

目前LOD常由美術(shù)和程序人員聯(lián)合通過手工方式實現(xiàn),無法批量自動實現(xiàn)。美術(shù)人員制作各種層次細(xì)節(jié)的美術(shù)模型,程序人員通過編寫算法來設(shè)置模型的層次級數(shù)和顯示精度,用戶設(shè)置完數(shù)據(jù)后,最終在保證用戶體驗的情況下,提升場景的渲染效率。

該技術(shù)常用于游戲軟件中,在盡可能保證游戲大場景原汁原味的前提下,保證低配置玩家也能和所有玩家一起體驗游戲所帶來的樂趣。

目前,對于場景性能優(yōu)化,提升渲染效率主要有以下幾種主要的技術(shù)路線:

1、美術(shù)工作人員對每一套原始多面體模型手動創(chuàng)建幾套不同模型精度的模型,將這幾套模型全部導(dǎo)入場景中,程序運(yùn)行時根據(jù)用戶在顯示環(huán)境中所處的位置和重要程度,選擇當(dāng)前渲染哪種精度模型。

2、程序人員在美術(shù)人員導(dǎo)入的模型上,手動設(shè)置每個模型的LOD顯示級別。

3、當(dāng)前模型簡化算法的簡化標(biāo)準(zhǔn)的用戶體驗較低,常用于簡化單個模型或部分模型。

上述方案中,美術(shù)工作人員對每一套原始多面體模型手動創(chuàng)建幾套不同模型精度的模型,模型級數(shù)和精度標(biāo)準(zhǔn)一經(jīng)確定如要更改,需要美術(shù)人員依照新標(biāo)準(zhǔn)重新制作模型,工作量大。

美術(shù)人員將模型導(dǎo)入場景后,需要程序人員手工對每個模型進(jìn)行LOD級數(shù)設(shè)置,工作量大。如果模型級數(shù)和精度需要更改,需要程序人員重新設(shè)置,工作量大。

現(xiàn)有的模型簡化算法與用戶交互程度較低,用戶無法可視化自定義模型級數(shù)和精度。而且簡化模型常用于單個模型或部分模型,無法批量簡化場景中的所有模型。

基于此,解決在三維虛擬環(huán)境中模型精度高導(dǎo)致渲染效率低的問題,并大幅度減少美術(shù)人員和程序人員的工作量。本發(fā)明實施例提供的技術(shù)方案中,采用LOD技術(shù)和模型精簡算法,用戶可視化一鍵式操作,自行設(shè)置模型精度級數(shù)和標(biāo)準(zhǔn),設(shè)置完成后,無需美術(shù)人員和程序人員進(jìn)行任何其他后續(xù)操作,程序自動在現(xiàn)有模型精度的基礎(chǔ)上生成相應(yīng)級別精度更低的模型,且模型上自動掛接物體和組件,模型顯示時根據(jù)所處的位置和重要程度,自動調(diào)整物體渲染的資源分配,降低非重要物體的面數(shù)和細(xì)節(jié)度,優(yōu)化場景性能,提升整個場景的渲染效率。下面結(jié)合附圖對本發(fā)明的具體實施方式進(jìn)行說明。

圖1為三維虛擬環(huán)境中的渲染顯示方法實施流程示意圖,如圖所示,可以包括:

步驟101、在三維虛擬環(huán)境中的模型處于相機(jī)視錐體內(nèi)時,確定模型與相機(jī)的距離;

步驟102、根據(jù)距離與精度級別的對應(yīng)關(guān)系,確定該模型所對應(yīng)的精度級別;

步驟103、調(diào)用該精度級別的模型進(jìn)行渲染后顯示。

下面將具體以Unity3d等為例的具體實施進(jìn)行說明。

實施中所指的場景是對于要渲染的所有三維資源的集合的總稱。例如一個游戲關(guān)卡就是一個三維場景,場景中一般包含人物模型、地形模型和花草樹木等三維資源。

模型具體則是指三維場景中的美術(shù)模型。例如,在一個動物園場景中,要顯示的一只老虎的美術(shù)資源就可以稱為老虎模型。

簡言之,場景是模型的容器,模型在場景中存放。

模型的精度級別是定義的,例如可以定義一級顯示最清楚,此時場景中的模型的精度級別為最高精度模型,二級模型顯示一般,此時場景中模型的精度級別為一般精度模型,三級模型顯示最模糊,此時場景中模型的精度級別為低精度模型等。圖2為不同精度級別的模型示意圖,具體精度的感知差別可以如圖所示。

下面對實施實施中涉及到的相機(jī)以及視錐體等概念進(jìn)行說明。

在unity3d中,相機(jī)是一個場景中必不可少的元素,相機(jī)就像是人的眼睛,三維場景的呈現(xiàn),最后還是要通過相機(jī)來實現(xiàn)的。相機(jī)這個類在3D游戲中是必不可少的,因為3D游戲是一個立體的世界,在3D游戲中的攝像機(jī)就相當(dāng)于是用戶的眼睛,通過它用戶可以觀察整個的游戲世界。相機(jī)相當(dāng)于人的眼睛,人在用眼睛看物體的時候,可以從理論上的任意位置,以任意的角度觀察物體,所以物體的形狀會受到相機(jī)的位置、旋轉(zhuǎn)角度的影響而影響。

一般來說在3D游戲中相機(jī)有三種使用方式:自由相機(jī)、第一人稱相機(jī)、第三人稱相機(jī)。

自由相機(jī),這種類型的相機(jī)一般都多用在即時戰(zhàn)略類型的游戲中,比如魔獸爭霸3用的就是自由相機(jī),這類相機(jī)可以隨著鼠標(biāo)的移動而移動,能夠看到游戲場景中的任何位置。

第一人稱的相機(jī),這種相機(jī)相當(dāng)于是眼睛看到的東西,這種相機(jī)多用在FPS類型的游戲中,像《使命的召喚》就是這類相機(jī)。

第三人稱的相機(jī),這類的相機(jī)多應(yīng)用在MMORPG類型游戲中,這種類型的游戲是最最常見的游戲類型,現(xiàn)在大多數(shù)的網(wǎng)游都是這樣的相機(jī),它其實就是把第一人稱的相機(jī)的位置設(shè)定在用戶控制的角色身后一定距離的位置上,以便用戶能看清自己操控的游戲角色,其實現(xiàn)和第一人稱相機(jī)類似,就是在得到角色位置賦值給相機(jī)后再把相機(jī)的位置加上個偏移量就可以了。

視錐體(frustum),是指場景中相機(jī)的可見的一個錐體范圍。它有上、下、左、右、近、遠(yuǎn),共6個面組成。在視錐體內(nèi)的景物可見,反之則不可見。為提高性能,只對其中與視錐體有交集的對象進(jìn)行繪制。

在計算出視錐體六個面的空間平面方程后,將點(diǎn)坐標(biāo)分別代入六個面的平面方程做比較,則可以判斷點(diǎn)是否在視錐體內(nèi)。例如:

空間平面方程可表示為:

Ax+By+Cz=0

對于點(diǎn)(x1,y1,z1),有:

若Ax1+By1+Cz1=0,則點(diǎn)在平面上;

若Ax1+By1+Cz1<0,則點(diǎn)在平面的一側(cè);

若Ax1+By1+Cz1=0,則點(diǎn)在平面的另一側(cè)。

若需判斷節(jié)點(diǎn)(例如模型)是否在視錐內(nèi),可以通過各種包圍體方法求出近似包圍體,對包圍體上的各個點(diǎn)對視錐六個面作判斷,存在以下三種情況:

如果所有頂點(diǎn)都在視錐范圍內(nèi),則待判區(qū)域一定在視錐范圍內(nèi);

如果只有部分頂點(diǎn)在視錐范圍內(nèi),則待判區(qū)域與視錐體相交,同樣可以視為可見;

如果所有頂點(diǎn)都不在視錐范圍內(nèi),那么待判區(qū)域很可能不可見了,但有一種情況例外,就是視錐體在長方體以內(nèi),這種情況需要加以區(qū)分。

在了解了相機(jī)以及視錐體后,容易理解如何判斷模型是否處于相機(jī)視錐體內(nèi),也容易明了模型與相機(jī)的距離的實施。

如前所述,每個模型都有若干個精度級別的模型,按照與距離的關(guān)系,例如距離越近精度級別越高等,在確定該模型所對應(yīng)的精度級別后,調(diào)用該精度級別的模型進(jìn)行渲染后顯示即可。

這樣,在三維場景中,對場景中已有的三維資源進(jìn)行處理。三維場景來存放三維美術(shù)資源,相機(jī)用來控制顯示哪部分美術(shù)資源,LOD則用來控制要顯示的美術(shù)資源的精度,那么,在實施中,根據(jù)相機(jī)(攝像機(jī))的視錐體即可確定場景中哪部分資源需要渲染到屏幕上給用戶最終看見。

實施中,還可以進(jìn)一步包括:

若模型處于相機(jī)視錐體外,不對該模型進(jìn)行渲染后顯示。

也即,根據(jù)相機(jī)的視錐體來確定場景中哪部分資源要渲染到屏幕上給用戶最終看見,在視錐體中的美術(shù)資源才渲染,不在視錐體中的美術(shù)資源不渲染。

實施中,一個場景中會包括若干模型,既可以同時去確定每一個模型是否在視錐體內(nèi),也可以一個一個模型的去確定是否在視錐體內(nèi),也即,確定模型與相機(jī)的距離時,是同時在三維虛擬環(huán)境中的若干模型中確定處于相機(jī)視錐體內(nèi)的各模型后,確定每一個模型與相機(jī)的距離;

或,是在三維虛擬環(huán)境中的各模型中分別確定處于相機(jī)視錐體內(nèi)的每一個模型后,確定每一個模型與相機(jī)的距離。

下面對每一個模型的各個精度級別的模型之間的關(guān)系及實施進(jìn)行說明。

在計算機(jī)圖形學(xué)中,三維場景中要顯示的三維模型都是由三角形組合而成,模型的組成三角形越多,模型顯示越精細(xì),系統(tǒng)渲染開銷越大;三角形越少,模型顯示越簡單,系統(tǒng)渲染開銷越小。

圖3為Mesh示例1示意圖,圖4為Mesh示例2示意圖,如圖所示,Mesh(網(wǎng)格組件)是模型的網(wǎng)格,3D模型是由多邊形拼接而成,一個復(fù)雜的多邊形,實際上是由多個三角面拼接而成。所以一個3D模型的表面是由多個彼此相連的三角面構(gòu)成。三維空間中,構(gòu)成這些三角面的點(diǎn)以及三角形的邊的集合就是Mesh。

實施中,在確定模型與相機(jī)的距離前,還可以進(jìn)一步包括:

生成各精度級別的模型。

具體的,精度級別不同的模型也即包含的三角形數(shù)量不同,同樣形狀包含數(shù)量越多則精度越高,畫面表現(xiàn)為越精細(xì),具體可以參見圖2所示。

實施中,生成各精度級別的模型,可以包括:

確定最高級別的精度的模型;

依據(jù)所需的各級別精度的模型數(shù)量,按照簡化模型依次生成確定各級別的精度的模型。

實施中,最高精度模型可以是場景中原有的模型。

例如,用戶將模型顯示級數(shù)設(shè)置為三,在一級時精度為100%,此時顯示100%的原始高精度模型;二級時設(shè)置精度為70%,此時模型的面數(shù)通過算法簡化為原始模型的70%;三級時設(shè)置精度為50%,此時模型的面數(shù)通過算法簡化為原始模型的50%。模型精度越低,模型顯示越模糊,顯卡等系統(tǒng)渲染開銷越小。

具體實施中,可以采用邊坍塌法或頂點(diǎn)剔除法等生成低精度的模型,如前所述,精度級別的高低與包含的三角形有關(guān),因此,其它類似的處理也是能夠達(dá)到同樣的效果的。

1、邊坍塌法

邊坍塌法的思想是將相鄰的幾個三角形通過刪除共用邊的方式來合并三角形,將多個三角形變成一個三角形,最終達(dá)到精簡模型的目的。

圖5為邊坍塌法效果示意圖,如圖所示,在將圖5左邊的圖像處理為右邊的圖形時,選擇u和v兩個頂點(diǎn)(邊uv),使頂點(diǎn)u“移動”(“坍塌”)到另一個頂點(diǎn)是v。實現(xiàn)的步驟:

1.去除所有既包含頂點(diǎn)u又包含頂點(diǎn)v的三角形(即去除所有以uv為邊的三角形)。

2.更新所有剩下的三角形,把所有用到頂點(diǎn)u的地方都用頂點(diǎn)v代替。

3.移除頂點(diǎn)u。

重復(fù)以上的過程,直到多邊形的數(shù)量達(dá)到了預(yù)期數(shù)量。每一次重復(fù)的過程中,通常會移除一個頂點(diǎn)、兩個面、三條邊。

2、頂點(diǎn)去除法

圖6為頂點(diǎn)去除法效果示意圖,如圖所示,在將圖6左邊的圖像處理為右邊的圖形時,對每一個頂點(diǎn)進(jìn)行分析判斷,如果滿足條件,則將其刪除,對形成的空洞三角化。

實施中,在確定模型與相機(jī)的距離前,還可以進(jìn)一步包括:

將高精度級別的模型上的組件和/或物體掛接于相應(yīng)的模型。

具體的,在Unity3d中,場景的組成單元為物體,物體上的功能(例如物理碰撞,自動尋路功能等)通過掛接相應(yīng)組件來實現(xiàn)。組件(Component)、物體(GameObject)是Unity3d引擎中的名詞。組件是模型上附帶的實現(xiàn)其他功能(例如檢測碰撞、自動尋路功能等)的代碼的簡稱;物體是unity3d場景中的基本單元。

一個美術(shù)資源模型導(dǎo)入unity3d中后就是一個物體。物體可以有子物體。將組件和物體掛接于模型上,其目的是在unity3d中,為了保證程序邏輯和美術(shù)資源的完整性,將高精度模型上附有的原有資源(原有的組件和子模型)都原封不動的拷貝到新生成的低精度模型上。

掛接是指將組件等依附到場景物體上,其作用是將組件和場景物體關(guān)聯(lián)起來,保證組件的功能運(yùn)行于這個場景物體上。可以在Unity3d中通過手動拖放到場景模型上,也可以通過代碼運(yùn)行時給場景物體添加。例如有個組件代碼其功能是控制物體隱藏,將該組件拖放到場景物體A上,然后運(yùn)行程序,物體A就隱藏了,如果不拖放該組件到物體A上,運(yùn)行程序,物體A就可見。

實施中,所述精度級別和/或所需的各級別精度的模型數(shù)量是根據(jù)用戶需要設(shè)置的。

由上述實施可見,在Unity3d中,目前通過手動的方法來實現(xiàn)LOD技術(shù),無法自動實現(xiàn)LOD技術(shù),而在上面的處理過程中,可以通過程序代碼自動生成各種精度級別的模型,用于后續(xù)的渲染顯示,因此可以通過程序代碼實現(xiàn)LOD技術(shù),不需要手動設(shè)置,從而“自動”實現(xiàn)LOD技術(shù)。

下面通過實例來進(jìn)行說明。

圖7為場景渲染顯示實施流程示意圖,假設(shè)在一個場景中,包括若干模型(假設(shè)包括:模型A、模型B、模型C;模型精度級別由低到高依次分別有:精度I、精度II、精度III),則如圖所示,可以如下:

步驟701、用戶選擇模型級數(shù)和精度。

具體的,假設(shè):用戶選擇自己需要的模型的精度III,其它級別為:精度I、精度II。

步驟702、遍歷場景中所有模型。

步驟703、批量生成對應(yīng)精度的模型,并將組件和物體掛接到模型上。

具體的,生成對應(yīng)精度III的模型A、模型B、模型C,精度III的模型A、模型B、模型C上存在組件和物體;

批量生成對應(yīng)精度I的模型A、模型B、模型C,并將組件和物體掛接到對應(yīng)的模型A、模型B、模型C;

批量生成對應(yīng)精度II的模型A、模型B、模型C,并將組件和物體掛接到對應(yīng)的模型A、模型B、模型C。

步驟704、程序自動將不同精度的模型對應(yīng)到LOD Group中不同的級別。

具體的,對于LOD Group,lod的原理就是利用相機(jī)離模型的遠(yuǎn)近來計算顯示多少精度的模型,具體使用可以如下:

1、首先建立一個空物體;

2、然后將準(zhǔn)備的高模和簡模(可以多個簡模)放到他的子物體里;

3、在空物體上添加一個LOD Group;

4、圖例滑條100%是高模,有幾個不同度模型就算幾個級別;

5、將對應(yīng)的模型拖到渲染組。

下面設(shè)定相機(jī),設(shè)定相機(jī)時,相機(jī)的位置可以由用戶根據(jù)需求來具體設(shè)置,設(shè)置好以后,確定相機(jī)的視錐體,然后繼續(xù)下面流程:

步驟705、判斷是否在視錐體范圍內(nèi),是則轉(zhuǎn)入步驟706,否則結(jié)束。

步驟706、判斷各模型距離相機(jī)的距離。

步驟707、根據(jù)距離調(diào)用對應(yīng)精度級別的模型。

例如:

模型B距離為近,調(diào)用對應(yīng)精度級別最高的精度III的模型B。

模型A距離為中,調(diào)用對應(yīng)精度級別為中的精度II的模型A。

模型C距離為遠(yuǎn),調(diào)用對應(yīng)精度級別最低的精度I的模型C。

步驟708、對模型渲染繪制,顯示。

上述實施中,用戶選擇場景,根據(jù)需求選擇要顯示的模型級數(shù),并依據(jù)級數(shù)設(shè)置模型簡化的精度范圍(可采用常用的邊坍塌法或頂點(diǎn)剔除法)生成低精度的模型,并將組件和物體掛接于模型上。然后,對于所有模型,首先判斷是否在攝像機(jī)的視錐體范圍內(nèi),如果不在,不進(jìn)行渲染。對于在相機(jī)視錐體內(nèi)的模型,應(yīng)用LOD技術(shù),判斷相機(jī)與要顯示模型之間的距離。根據(jù)距離的遠(yuǎn)近,調(diào)用細(xì)節(jié)層次模型,遠(yuǎn)距離調(diào)用精度低的模型,近距離調(diào)用精度高的模型,最終在屏幕上渲染出來。

基于同一發(fā)明構(gòu)思,本發(fā)明實施例中還提供了一種三維虛擬環(huán)境中的渲染顯示裝置,由于該裝置解決問題的原理與一種三維虛擬環(huán)境中的渲染顯示方法相似,因此該裝置的實施可以參見方法的實施,重復(fù)之處不再贅述。

圖8為三維虛擬環(huán)境中的渲染顯示裝置結(jié)構(gòu)示意圖,如圖所示,可以包括:

距離確定模塊801,用于在三維虛擬環(huán)境中的模型處于相機(jī)視錐體內(nèi)時,確定模型與相機(jī)的距離;

精度級別確定模塊802,用于根據(jù)距離與精度級別的對應(yīng)關(guān)系,確定該模型所對應(yīng)的精度級別;

渲染顯示模塊803,用于調(diào)用該精度級別的模型進(jìn)行渲染后顯示。

實施中,距離確定模塊進(jìn)一步用于確定模型與相機(jī)的距離時,是同時在三維虛擬環(huán)境中的若干模型中確定處于相機(jī)視錐體內(nèi)的各模型后,確定每一個模型與相機(jī)的距離;或,是在三維虛擬環(huán)境中的各模型中分別確定處于相機(jī)視錐體內(nèi)的每一個模型后,確定每一個模型與相機(jī)的距離。

實施中,渲染顯示模塊進(jìn)一步用于若模型處于相機(jī)視錐體外,不對該模型進(jìn)行渲染后顯示。

實施中,進(jìn)一步包括:

模型生成模塊804,用于在確定模型與相機(jī)的距離前,生成各精度級別的模型。

實施中,模型生成模塊進(jìn)一步用于在確定模型與相機(jī)的距離前,將高精度級別的模型上的組件和/或物體掛接于相應(yīng)的模型。

實施中,模型生成模塊進(jìn)一步用于在生成各精度級別的模型時,包括:

確定最高級別的精度的模型;

依據(jù)所需的各級別精度的模型數(shù)量,按照簡化模型依次生成確定各級別的精度的模型。

實施中,模型生成模塊進(jìn)一步用于根據(jù)用戶需要設(shè)置所述精度級別和/或所需的各級別精度的模型數(shù)量。

為了描述的方便,以上所述裝置的各部分以功能分為各種模塊或單元分別描述。當(dāng)然,在實施本發(fā)明時可以把各模塊或單元的功能在同一個或多個軟件或硬件中實現(xiàn)。

在實施本發(fā)明實施例提供的技術(shù)方案時,可以按如下方式實施。

一種計算機(jī)可讀存儲介質(zhì),包括與具有顯示器的便攜電子設(shè)備結(jié)合使用的計算機(jī)程序,所述計算機(jī)程序可被處理器執(zhí)行以如下所述的方法:

在三維虛擬環(huán)境中的模型處于相機(jī)視錐體內(nèi)時,確定模型與相機(jī)的距離;

根據(jù)距離與精度級別的對應(yīng)關(guān)系,確定該模型所對應(yīng)的精度級別;

調(diào)用該精度級別的模型進(jìn)行渲染后顯示。

實施中,確定模型與相機(jī)的距離時,是同時在三維虛擬環(huán)境中的若干模型中確定處于相機(jī)視錐體內(nèi)的各模型后,確定每一個模型與相機(jī)的距離;

或,是在三維虛擬環(huán)境中的各模型中分別確定處于相機(jī)視錐體內(nèi)的每一個模型后,確定每一個模型與相機(jī)的距離。

實施中,進(jìn)一步包括:

若模型處于相機(jī)視錐體外,不對該模型進(jìn)行渲染后顯示。

實施中,在確定模型與相機(jī)的距離前,進(jìn)一步包括:

生成各精度級別的模型。

實施中,在確定模型與相機(jī)的距離前,進(jìn)一步包括:

將高精度級別的模型上的組件和/或物體掛接于相應(yīng)的模型。

實施中,生成各精度級別的模型,包括:

確定最高級別的精度的模型;

依據(jù)所需的各級別精度的模型數(shù)量,按照簡化模型依次生成確定各級別的精度的模型。

實施中,所述精度級別和/或所需的各級別精度的模型數(shù)量是根據(jù)用戶需要設(shè)置的。

綜上所述,在本發(fā)明實施例提供的技術(shù)方案中,用戶將可以通過一鍵式操作,自主設(shè)置模型精度標(biāo)準(zhǔn),輸入后程序動態(tài)生成場景中所有模型的相應(yīng)精度標(biāo)準(zhǔn)的模型,且模型上自動掛接相應(yīng)的物體和組件,極大的節(jié)省美術(shù)人員和程序人員的工作量。在場景渲染時采用LOD技術(shù),讓系統(tǒng)根據(jù)模型距離相機(jī)的遠(yuǎn)近和重要程度選擇渲染相應(yīng)精度標(biāo)準(zhǔn)的模型,優(yōu)化場景性能,提升整個場景的渲染效率。方案可以通過算法批量動態(tài)生成各種不同精度的模型,并通過LOD技術(shù)渲染顯示。相比傳統(tǒng)方式,用戶通過簡單的界面操作,自定義精度標(biāo)準(zhǔn),動態(tài)生成不同精度的模型,節(jié)省美術(shù)和程序人員工作量,并提升系統(tǒng)的渲染效率。

本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、系統(tǒng)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器和光學(xué)存儲器等)上實施的計算機(jī)程序產(chǎn)品的形式。

本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。

這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。

這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。

顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
溧阳市| 抚松县| 曲沃县| 台东市| 汉源县| 无极县| 兰溪市| 兴化市| 龙游县| 岳普湖县| 南昌市| 临沧市| 藁城市| 安义县| 海南省| 锡林浩特市| 托克托县| 拜泉县| 柯坪县| 于田县| 康定县| 开江县| 芜湖市| 屯昌县| 噶尔县| 富平县| 井陉县| 石城县| 洛南县| 个旧市| 鄂伦春自治旗| 长春市| 平南县| 探索| 阳山县| 广东省| 叙永县| 宜兰市| 顺平县| 隆尧县| 浪卡子县|