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