一種2d游戲的渲染系統(tǒng)及方法、終端設(shè)備的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及游戲渲染領(lǐng)域,尤其涉及一種2D游戲的渲染系統(tǒng)及方法、終端設(shè)備。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)和移動(dòng)智能機(jī)的普及,游戲已經(jīng)成為一種越來越普遍的娛樂形式。在游戲運(yùn)行中,為了提高游戲的可玩性和玩家的體驗(yàn),常常需要播放游戲角色走動(dòng)、跑動(dòng)、攻擊、施法等動(dòng)作的動(dòng)畫。
[0003]對(duì)于目前的2D游戲,播放游戲角色的相關(guān)動(dòng)畫一般采用播放相應(yīng)的序列幀動(dòng)畫或者骨骼動(dòng)畫來實(shí)現(xiàn)。其中,序列幀動(dòng)畫的每一幀都可以視為游戲角色的特定姿勢(shì)的一個(gè)快照,例如對(duì)于一個(gè)游戲角色走路的動(dòng)畫,可以想象成游戲角色在走路,拿起相機(jī)給他連續(xù)拍照,拍出來的照片連續(xù)播放就可以看到一個(gè)人物走動(dòng)的動(dòng)畫。序列幀動(dòng)畫的流暢性和平滑效果都取決于預(yù)定時(shí)間段內(nèi)拍照的次數(shù),即幀數(shù)的多少。骨骼動(dòng)畫則是把游戲角色各個(gè)部分的身體部件圖片綁定到一根根互相作用連接的“骨頭”上,通過控制這些骨骼的位置、旋轉(zhuǎn)方向和放大縮小而生產(chǎn)的動(dòng)畫。可以想象成把人的骨骼抽離出來,在不同的骨頭上掛接上相應(yīng)的圖片塊,骨骼動(dòng)的時(shí)候帶動(dòng)綁定在上面的圖塊運(yùn)動(dòng)。
【發(fā)明內(nèi)容】
[0004]序列幀動(dòng)畫的優(yōu)點(diǎn)是實(shí)現(xiàn)簡單,流暢性高。但是目前的序列幀動(dòng)畫都是通過美術(shù)手工繪制的,即每增加一個(gè)動(dòng)畫都需要單獨(dú)繪制一套序列幀動(dòng)畫。例如η個(gè)游戲角色騎乘m個(gè)坐騎的組合就需要準(zhǔn)備n*m套序列幀動(dòng)畫資源,如果再加上武器、視角等的組合需求就會(huì)面臨資源組合爆炸的問題。雖然可以通過拼接序列幀動(dòng)畫來減小資源量,例如把某個(gè)游戲角色騎乘姿勢(shì)的序列幀動(dòng)畫還有坐騎被騎著時(shí)候的序列幀動(dòng)畫單獨(dú)輸出出來,在游戲中根據(jù)不同的游戲角色騎乘不同的坐騎實(shí)時(shí)進(jìn)行拼接,但所需的資源量依然龐大,而且此方案依然需要美術(shù)進(jìn)行手工繪制,實(shí)現(xiàn)上不夠靈活。
[0005]骨骼動(dòng)畫雖然通過組合部件圖片克服了序列幀動(dòng)畫的組合爆炸的問題,但是傳統(tǒng)的2d骨骼動(dòng)畫只能制作一個(gè)方向的動(dòng)畫,無法解決多視角的需求,而且骨骼動(dòng)畫的流暢性也不如序列幀動(dòng)畫。
[0006]本發(fā)明所要解決的技術(shù)問題是提供一種2D游戲的渲染系統(tǒng)及方法、終端,通過實(shí)時(shí)渲染的方式生成設(shè)定視角的序列幀動(dòng)畫。
[0007]本發(fā)明通過下述技術(shù)手段解決前述技術(shù)問題:
[0008]一種2D游戲的渲染系統(tǒng),包括:
[0009]2D渲染單元,用于根據(jù)游戲渲染請(qǐng)求加載待渲染的2D序列幀數(shù)據(jù)并進(jìn)行渲染以生成發(fā)送給用戶設(shè)備的游戲畫面幀,
[0010]序列幀數(shù)據(jù)共享單元,用于存儲(chǔ)并向所述2D渲染單元提供所述待渲染的2D序列幀數(shù)據(jù);
[0011 ] 3D渲染單元,用于基于設(shè)定的視角將預(yù)置的3D模型渲染生成所述2D序列幀數(shù)據(jù)并傳送給所述序列幀數(shù)據(jù)共享單元;
[0012]3D模型資源存儲(chǔ)單元,用于存儲(chǔ)所述3D模型以供所述3D渲染單元加載使用。
[0013]本發(fā)明提供的上述技術(shù)方案中,通過3D渲染單元對(duì)預(yù)置的3D模型進(jìn)行渲染,從而在本地實(shí)時(shí)生成所需視角的2D序列幀數(shù)據(jù)(相當(dāng)于序列幀動(dòng)畫),與現(xiàn)有的通過手工繪制序列幀動(dòng)畫的技術(shù)相比,一方面由于不需要直接將所有的序列幀動(dòng)畫預(yù)置在游戲資源包,避免了游戲資源包過大而導(dǎo)致下載等待時(shí)間過長和占用存儲(chǔ)空間大的問題;另一方面,由于不需要手工繪制序列幀動(dòng)畫,減小了美術(shù)工作量,加快了游戲開發(fā)速度。同時(shí)基于序列幀數(shù)據(jù)共享單元對(duì)2D渲染單元與3D渲染單元進(jìn)行解耦合,在同一設(shè)備同時(shí)運(yùn)行多個(gè)游戲客戶端(包含2D渲染單元)的情況下,各個(gè)游戲客戶端能夠共享序列幀數(shù)據(jù)共享單元中的2D序列幀數(shù)據(jù),最大化的減少重復(fù)渲染。
[0014]優(yōu)選地,所述3D渲染單元包括:3D模型資源加載模塊,用于從所述3D模型資源存儲(chǔ)單元加載至少兩個(gè)3D模型;3D模型掛接模塊,用于根據(jù)所述3D模型中預(yù)置的掛接點(diǎn)將所述至少兩個(gè)3D模型相互掛接以形成待渲染的目標(biāo)模型;3D動(dòng)畫渲染模塊,用于基于所述目標(biāo)模型進(jìn)行3D渲染獲得3D動(dòng)畫,并基于所述3D動(dòng)畫和設(shè)定的視角生成所述2D序列幀數(shù)據(jù)。
[0015]本優(yōu)選方案通過對(duì)不同的3D模型進(jìn)行掛接后再渲染,以獲得目標(biāo)模型的3D動(dòng)畫,并基于所述3D動(dòng)畫和設(shè)定的視角生成所述目標(biāo)模型的2D序列幀數(shù)據(jù),解決了組合模型的2D序列幀數(shù)據(jù)生成問題。
[0016]優(yōu)選地,所述3D動(dòng)畫渲染模塊包括:渲染子模塊,用于基于所述目標(biāo)模型進(jìn)行3D渲染獲得3D動(dòng)畫;鏤空處理子模塊,用于基于預(yù)置的3D模型層次關(guān)系和所述設(shè)定的視角,將所述3D動(dòng)畫的各層次的3D模型中,被層次低于自身的3D模型遮擋的部分進(jìn)行鏤空處理;所述3D模型層次關(guān)系為用于描述各個(gè)所述3D模型層次高低的關(guān)系文件;分層渲染子模塊,用于對(duì)鏤空處理后的各個(gè)所述3D模型分別進(jìn)行渲染以獲得各個(gè)所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù)。
[0017]針對(duì)上一個(gè)優(yōu)選方案,本優(yōu)選方案進(jìn)一步的對(duì)組成所述目標(biāo)模型的各個(gè)3D模型根據(jù)層次高低的關(guān)系進(jìn)行鏤空處理(層次高的3D模型需根據(jù)被層次低的3D模型遮擋的部分進(jìn)行鏤空),獲得每個(gè)3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù),從而可在后續(xù)增減3D模型或更換3D模型、以及玩家更換坐騎、武器、頭飾時(shí),對(duì)這些已生成2D序列幀數(shù)據(jù)進(jìn)行復(fù)用,而不需再次進(jìn)行渲染,提高了渲染的效率。
[0018]優(yōu)選地,所述3D動(dòng)畫渲染模塊還包括:底層2D序列幀數(shù)據(jù)加載模塊,用于從預(yù)置的2D圖像資源中獲取與最底層的所述3D模型對(duì)應(yīng)的2D序列幀預(yù)置數(shù)據(jù);底層2D序列幀數(shù)據(jù)替換模塊,用于將最底層的所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù)替換為所述2D序列幀預(yù)置數(shù)據(jù)。
[0019]針對(duì)上一個(gè)優(yōu)選方案,本優(yōu)選方案中,由于處于最底層的所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù)不需要進(jìn)行鏤空處理,因而可將處于最底層的3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù)替換為所述2D序列幀預(yù)置數(shù)據(jù)(即美術(shù)手工繪制的序列幀動(dòng)畫),由于美術(shù)手工繪制的序列幀動(dòng)畫的畫質(zhì)要比通過3D渲染生成的序列幀數(shù)據(jù)的畫質(zhì)好,因而可提高了游戲的畫質(zhì)。
[0020]優(yōu)選地,所述分層渲染子模塊,還用于根據(jù)所述3D模型的層次高低關(guān)系,依次對(duì)鏤空處理后的各個(gè)所述3D模型進(jìn)行渲染以獲得各個(gè)所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù);其中,層次高的3D模型將優(yōu)先被渲染。
[0021]本發(fā)明還提供一種2D游戲的渲染方法,所述2D游戲的渲染方法與所述渲染系統(tǒng)一一對(duì)應(yīng),并包括以下步驟:
[0022]2D清染單元響應(yīng)于游戲清染請(qǐng)求,向序列幀數(shù)據(jù)共享單元請(qǐng)求加載待清染的2D序列幀數(shù)據(jù)并渲染生成發(fā)送給用戶設(shè)備的游戲畫面幀;
[0023]序列幀數(shù)據(jù)共享單元響應(yīng)于2D序列幀數(shù)據(jù)加載請(qǐng)求,提供對(duì)應(yīng)的2D序列幀數(shù)據(jù)或向3D清染單元請(qǐng)求清染生成對(duì)應(yīng)的2D序列幀數(shù)據(jù);
[0024]3D清染單元響應(yīng)于2D序列幀數(shù)據(jù)清染生成請(qǐng)求,向3D模型資源存儲(chǔ)單元請(qǐng)求加載預(yù)置的3D模型,并基于設(shè)定的視角將所述預(yù)置的3D模型渲染生成2D序列幀數(shù)據(jù)并傳送給所述序列幀數(shù)據(jù)共享單元;
[0025]3D模型資源存儲(chǔ)單元響應(yīng)于3D模型加載請(qǐng)求,向所述3D渲染單元提供預(yù)置的3D模型。
[0026]優(yōu)選地,所述3D渲染單元響應(yīng)于2D序列幀數(shù)據(jù)渲染生成請(qǐng)求,向3D模型資源存儲(chǔ)單元請(qǐng)求加載預(yù)置的3D模型,并基于設(shè)定的視角將所述預(yù)置的3D模型渲染生成2D序列幀數(shù)據(jù)并傳送給所述動(dòng)畫數(shù)據(jù)共享單元,具體包括:
[0027]3D渲染單元根據(jù)所述2D序列幀數(shù)據(jù)渲染生成請(qǐng)求從所述3D模型資源存儲(chǔ)單元加載至少兩個(gè)3D模型;
[0028]3D渲染單元根據(jù)所述3D模型中預(yù)置的掛接點(diǎn)將所述至少兩個(gè)3D模型相互掛接以形成待渲染的目標(biāo)模型;
[0029]3D渲染單元基于所述目標(biāo)模型進(jìn)行3D渲染獲得3D動(dòng)畫,并基于所述3D動(dòng)畫和設(shè)定的視角生成所述2D序列幀數(shù)據(jù)。
[0030]優(yōu)選地,所述3D渲染單元基于所述目標(biāo)模型進(jìn)行3D渲染獲得3D動(dòng)畫,并基于所述3D動(dòng)畫和設(shè)定的視角生成所述2D序列幀數(shù)據(jù),具體包括:
[0031 ]所述3D渲染單元基于所述目標(biāo)模型進(jìn)行3D渲染獲得3D動(dòng)畫;
[0032]所述3D渲染單元基于預(yù)置的3D模型層次關(guān)系和所述設(shè)定的視角,將所述3D動(dòng)畫的各層次的3D模型中,被層次低于自身的3D模型遮擋的部分進(jìn)行鏤空處理;所述3D模型層次關(guān)系為用于描述各個(gè)所述3D模型層次高低的關(guān)系文件;
[0033]所述3D渲染單元對(duì)鏤空處理后的各個(gè)所述3D模型分別進(jìn)行渲染以獲得各個(gè)所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù)。
[0034]優(yōu)選地,還包括:
[0035]3D渲染單元從預(yù)置的2D圖像資源中獲取與最底層的所述3D模型對(duì)應(yīng)的2D序列幀預(yù)置數(shù)據(jù);
[0036]3D渲染單元將最底層的所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù)替換為所述2D序列幀預(yù)置數(shù)據(jù)。
[0037]優(yōu)選地,所述3D渲染單元對(duì)鏤空處理后的各個(gè)所述3D模型分別進(jìn)行渲染以獲得各個(gè)所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù),具體為:
[0038]所述3D渲染單元根據(jù)所述3D模型的層次高低關(guān)系,依次對(duì)鏤空處理后的各個(gè)所述3D模型進(jìn)行渲染以獲得各個(gè)所述3D模型對(duì)應(yīng)的2D序列幀數(shù)據(jù);其中,層次高的3D模型將優(yōu)先被清染。
[0039]本發(fā)明還提供一種終端設(shè)備,包括3D渲染系統(tǒng)及至少一個(gè)游戲客戶端;其中,所述3D渲染系統(tǒng)包括上述的序列幀數(shù)據(jù)共享單元、3D渲染單元及3D模型資源存儲(chǔ)單元,所述游戲客戶端包括游戲處理單元及如上述的2D渲染單元;
[0040]所述游戲處理單元,用于生成游戲渲染請(qǐng)求;
[0041]所述2D渲染單元,用于根據(jù)所述游戲渲染請(qǐng)求向所述3D渲染系統(tǒng)請(qǐng)求加載待渲染的2D序列幀數(shù)據(jù)并進(jìn)行渲染以生成游戲畫面幀;
[0042]所述3D渲染系統(tǒng),用于響應(yīng)所述游戲渲染請(qǐng)求,并向所述2D渲染單元提供所述待渲染的2D序列幀數(shù)據(jù)。
[0043]本發(fā)明提供的終端設(shè)備,實(shí)現(xiàn)了對(duì)2D渲染單元與3D渲染單元進(jìn)行解耦合。在