變化,避免透明度突然變化導(dǎo)致的畫面閃變。
[0067]需要說明的是,圖4和圖5示出的第二類障礙物模型是位于待繪制區(qū)域內(nèi)的,而位于所述待繪制區(qū)域外的第二類障礙物模型雖然并不會(huì)被繪制出來,但其也會(huì)對(duì)所述目標(biāo)模型形成視野上的遮擋,因而也需要對(duì)其透明度進(jìn)行處理,具體處理過程與處理位于所述待繪制區(qū)域內(nèi)的第二類障礙物模型的透明度一致,在此不做贅述。
[0068]所述繪制單元50,用于對(duì)所述虛擬攝像機(jī)單元10能夠獲取到的待繪制區(qū)域進(jìn)行繪制,以生成相應(yīng)的畫面幀。
[0069]在本發(fā)明實(shí)施例中,所述繪制單元50對(duì)所述待繪制區(qū)域內(nèi)的3D模型進(jìn)行繪制,例如,對(duì)所述待繪制區(qū)域內(nèi)的3D模型通過幾何變換,紋理映射,貼圖采樣等技術(shù)進(jìn)行繪制后,生成相應(yīng)的畫面幀,并將這些畫面幀發(fā)送至終端設(shè)備,以進(jìn)行顯示。由于在發(fā)現(xiàn)所述鏡頭與所述目標(biāo)模型之間存在障礙物模型后,已經(jīng)通過所述移動(dòng)單元30對(duì)所述虛擬攝像機(jī)單元10的鏡頭進(jìn)行了移動(dòng)處理使之從第一類障礙物模型中移出或者已經(jīng)通過所述透明度處理單元40對(duì)所述第二類障礙物模型進(jìn)行了降低透明度的處理,因而可保證在繪制得到的畫面幀中,用戶能始終觀測(cè)到完整的目標(biāo)模型。
[0070]綜上所述,本發(fā)明實(shí)施例提供的3D場(chǎng)景的繪制系統(tǒng)100,通過所述碰撞計(jì)數(shù)單元20檢測(cè)在所述虛擬攝像機(jī)單元10的鏡頭與所述焦點(diǎn)之間的遮擋情況,并在檢測(cè)到所述虛擬攝像機(jī)單元10的鏡頭與所述焦點(diǎn)之間存在障礙物模型后,通過所述移動(dòng)單元30對(duì)所述虛擬攝像機(jī)單元10的鏡頭進(jìn)行了移動(dòng)處理或者通過所述透明度處理單元40對(duì)第二類障礙物模型進(jìn)行了降低透明度處理,使得所述繪制單元50繪制得到的畫面幀中,可以始終觀測(cè)到完整的目標(biāo)模型,提高了用戶的游戲體驗(yàn)和視覺觀感。
[0071]為進(jìn)一步對(duì)本發(fā)明的方案進(jìn)行更詳細(xì)的說明,下文對(duì)本發(fā)明的一些優(yōu)選實(shí)施例進(jìn)行具體描述或舉例說明:
[0072]—、針對(duì)所述碰撞計(jì)數(shù)單元20的優(yōu)選實(shí)施例。
[0073]上述實(shí)施例中,所述碰撞計(jì)數(shù)單元20是檢測(cè)所述連接線與組成3D模型的面片之間的碰撞次數(shù),然而,由于所述3D模型形狀各異且不規(guī)則,組成所述3D模型的面片數(shù)量也可能非常多,因而檢測(cè)所述連接線與組成3D模型的面片之間的碰撞會(huì)比較復(fù)雜。
[0074]—個(gè)優(yōu)選的實(shí)現(xiàn)方法是檢測(cè)所述連接線與設(shè)置于所述3D模型外部的包圍盒表面的碰撞次數(shù)。具體地,在每個(gè)3D模型外部均設(shè)置有一個(gè)包圍所述3D模型的包圍盒,這個(gè)包圍盒可為長(zhǎng)方體、正方體、圓形獲取其他多邊形體等。由于所述包圍盒的形狀相對(duì)所述3D模型規(guī)則,且所述包圍盒的結(jié)構(gòu)也比較簡(jiǎn)單,因而檢測(cè)所述連接線與設(shè)置于所述3D模型外部的包圍盒表面的碰撞次數(shù)相比檢測(cè)所述連接線與組成3D模型的面片之間的碰撞次數(shù)有更好的處理效率。
[0075]二、針對(duì)所述移動(dòng)單元30的優(yōu)選實(shí)施例。
[0076]上述實(shí)施例中,所述移動(dòng)單元30是通過控制所述虛擬攝像機(jī)單元10預(yù)定的移動(dòng)步長(zhǎng)來實(shí)現(xiàn)將所述虛擬攝像機(jī)單元10從第一類障礙物模型中移出。然而,由于所述鏡頭與第一類障礙物模型的距離未知,如果每幀的移動(dòng)步長(zhǎng)設(shè)置得太長(zhǎng),可能導(dǎo)致所述虛擬攝像機(jī)單元10的移動(dòng)幅度過大,而如果移動(dòng)步長(zhǎng)設(shè)置得太短,則可能需要通過很長(zhǎng)時(shí)間的移動(dòng)才能將所述虛擬攝像機(jī)單元10從第一類障礙物模型中移出。
[0077]因此,優(yōu)選的方案是根據(jù)所述鏡頭與第一類障礙物模型的距離來確定移動(dòng)步長(zhǎng)。
[0078]具體的,請(qǐng)一并參閱圖6,在一個(gè)實(shí)施例中,所述移動(dòng)單元30具體包括:
[0079]第一移動(dòng)步長(zhǎng)計(jì)算模塊31,用于響應(yīng)所述第一指令,并根據(jù)所述鏡頭與離所述鏡頭最近且與所述連接線發(fā)生碰撞的面片的距離生成每幀的移動(dòng)步長(zhǎng)。
[0080]第一鏡頭移動(dòng)模塊32,用于在每幀刷新時(shí),根據(jù)所述移動(dòng)步長(zhǎng)沿所述連接線朝靠近所述焦點(diǎn)的方向移動(dòng)所述虛擬攝像機(jī)單元。
[0081]請(qǐng)一并參閱圖7,針對(duì)第一個(gè)優(yōu)選實(shí)施例,所述移動(dòng)單元30具體包括:
[0082]第二移動(dòng)步長(zhǎng)計(jì)算模塊33,用于響應(yīng)所述第一指令,并根據(jù)所述鏡頭與離所述鏡頭最近且與所述連接線發(fā)生碰撞的包圍盒表面的距離生成每幀的移動(dòng)步長(zhǎng)。
[0083]第二鏡頭移動(dòng)模塊34,用于在每幀刷新時(shí),根據(jù)所述移動(dòng)步長(zhǎng)沿所述連接線朝靠近所述焦點(diǎn)的方向移動(dòng)所述虛擬攝像機(jī)單元。
[0084]例如,假設(shè)所述鏡頭與第一個(gè)碰撞的面片(或包圍盒表面)的距離L,則可選取移動(dòng)步長(zhǎng)△ d = L/(0.5Xfps)。其中,fps為幀率,這樣在0.5s后,所述虛擬攝像機(jī)單元10從自然從所述第一類障礙物模型的內(nèi)部移出。
[0085]三、針對(duì)透明度還原的優(yōu)選實(shí)施例。
[0086]在本發(fā)明實(shí)施例中,由于所述虛擬攝像機(jī)單元10是跟隨所述目標(biāo)模型移動(dòng)的,因而,所述連接線的位置也是動(dòng)態(tài)變化的,則可能所述連接線本來與一個(gè)3D模型本來是發(fā)生碰撞的,在所述目標(biāo)模型移動(dòng)后,所述連接線與該3D模型變?yōu)椴话l(fā)生碰撞,此時(shí),需對(duì)這個(gè)3D模型的透明度進(jìn)行還原,以保證所述3D場(chǎng)景的真實(shí)性。
[0087]具體地,請(qǐng)一并參閱圖8,為了實(shí)現(xiàn)上述技術(shù)方案,所述繪制系統(tǒng)100還包括:
[0088]透明度還原單元60,用于在確定一個(gè)3D模型與所述連接線的碰撞狀態(tài)由碰撞轉(zhuǎn)變?yōu)椴慌鲎?,且所?D模型的當(dāng)前透明度小于初始透明度時(shí),增大所述3D模型的透明度。
[0089]在本發(fā)明實(shí)施例中,所述透明度還原單元60可對(duì)每一個(gè)處于碰撞狀態(tài)的第二類障礙物模型進(jìn)行標(biāo)記,并實(shí)時(shí)檢測(cè)其碰撞狀態(tài)是否發(fā)生變化,若發(fā)生了變化(由碰撞轉(zhuǎn)變?yōu)椴慌鲎?,則所述透明度還原單元60判斷其當(dāng)前透明度是否小于初始透明度,若是,則增大其透明度,直至等于其初始透明度,即完成了透明度的還原。
[0090]請(qǐng)參閱圖9,圖9是本發(fā)明實(shí)施例提供的3D場(chǎng)景的繪制方法的流程示意圖。其至少包括:
[0091]S101,虛擬攝像機(jī)單元基于設(shè)定的焦點(diǎn)獲取3D場(chǎng)景的待繪制區(qū)域。
[0092]S102,碰撞計(jì)數(shù)單元計(jì)算所述虛擬攝像機(jī)單元的鏡頭與所述焦點(diǎn)形成的連接線與所述3D場(chǎng)景中的3D模型的碰撞次數(shù),并在所述碰撞次數(shù)為奇數(shù)次時(shí),發(fā)送第一指令至移動(dòng)單元,在所述碰撞次數(shù)為非零的偶數(shù)次時(shí),發(fā)送第二指令至透明度處理單元。
[0093]S103,所述移動(dòng)單元響應(yīng)于所述第一指令,朝靠近所述焦點(diǎn)的方向移動(dòng)所述虛擬攝像機(jī)單元。
[0094]S104,所述透明度處理單元響應(yīng)于所述第二指令,獲取與所述連接線發(fā)生碰撞的3D模型的當(dāng)前透明度,并在所述當(dāng)前透明度大于預(yù)設(shè)的目標(biāo)透明度時(shí),減小所述3D模型的透明度。
[0095]S105,繪制單元對(duì)所述虛擬攝像機(jī)單元能夠獲取到的待繪制區(qū)域進(jìn)行繪制,以生成相應(yīng)的畫面幀。
[0096]綜上所述,本發(fā)明實(shí)施例提供的3D場(chǎng)景的繪制方法,通過所述碰撞計(jì)數(shù)單元檢測(cè)在所述虛擬攝像機(jī)單元的鏡頭與所述焦點(diǎn)之間的遮擋情況,以通過所述移動(dòng)單元對(duì)所述虛擬攝像機(jī)單元的鏡頭進(jìn)行了移動(dòng)處理或者通過所述透明度處理單元對(duì)第二類障礙物模型進(jìn)行了降低透明度處理,使得所述繪制單元繪制得到的畫面幀中,可以始終觀測(cè)到完整的目標(biāo)模型,提高了用戶的游戲體驗(yàn)。
[0097]在一個(gè)優(yōu)選實(shí)施例中,步驟S102,具體為:
[0098]碰撞計(jì)數(shù)單元計(jì)算計(jì)算所述虛擬攝像機(jī)單元的鏡頭與所述焦點(diǎn)形成的連接線與所述3D場(chǎng)景中的組成所述3D模型的面片的碰撞次數(shù)。
[0099]在一個(gè)優(yōu)選實(shí)施例中,在每個(gè)3D模型外部還設(shè)置有一個(gè)包圍所述3D模型的包圍盒;
[0100]則步驟S102,具體為:
[0101]碰撞計(jì)數(shù)單元計(jì)算計(jì)算所述虛擬攝像機(jī)單元的鏡頭與所述焦點(diǎn)形成的連接線與所述3D場(chǎng)景中的各個(gè)3D模型的包圍盒表面的碰撞次數(shù)。
[0102]在一個(gè)優(yōu)選實(shí)施例中,所述步驟S103具體包括:
[0103]所述移動(dòng)單元響應(yīng)所述第一指令,并根據(jù)所述鏡頭與離所述鏡頭最近且與所述連接線發(fā)生碰撞的面片的距離生成每幀的移動(dòng)步長(zhǎng);
[0104]所述移動(dòng)單元在每幀刷新時(shí),根據(jù)所述移動(dòng)步長(zhǎng)沿所述連接線朝靠近所述焦點(diǎn)的方向移動(dòng)所述虛擬攝像機(jī)單元。
[0105]在一個(gè)優(yōu)選實(shí)施例中,所述步驟S103具體包括:
[0106]所述移動(dòng)單元響應(yīng)所述第一指令,并根據(jù)所述鏡頭與離所述鏡頭最近且與所述連接線發(fā)生碰撞的包圍盒表面的距離生成每幀的移動(dòng)步長(zhǎng);
[0107]所述移動(dòng)單元在每幀刷新時(shí),根據(jù)所述移動(dòng)步長(zhǎng)沿所述連接線朝靠近所述焦點(diǎn)的方向移動(dòng)所述虛擬攝像機(jī)單元。
[0108]在一個(gè)優(yōu)選實(shí)施例中,所述繪制方法還