国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Unity快速搭建剪紙風(fēng)格場(chǎng)景的探索實(shí)現(xiàn)

2020-04-16 05:26米星光陳文娟
關(guān)鍵詞:視差景深后處理

米星光,陳文娟

(中國(guó)傳媒大學(xué) 動(dòng)畫與數(shù)字藝術(shù)學(xué)院,北京100024)

1 引言

如今,對(duì)非物質(zhì)文化遺產(chǎn)的搶救與保護(hù)已在世界范圍引起了重視。中國(guó)作為擁有5000年歷史的文明古國(guó),更是以“保護(hù)為主,搶救第一,合理利用,傳承發(fā)展”[1]表達(dá)對(duì)優(yōu)秀傳統(tǒng)文化傳承與發(fā)揚(yáng)的決心,并在立法、機(jī)構(gòu)設(shè)置、文化普查、申報(bào)、傳承人、宣傳等角度都取得了豐碩的成果[2]。

在這其中,中國(guó)剪紙以其廣泛的群眾性、鮮明的地域性、強(qiáng)烈的造型特征[3],使得它成為了能夠代表中國(guó)鮮明特色的文化標(biāo)志。如在2016年上映的《功夫熊貓3》和2018年上映的《蜘蛛俠:平行宇宙》,在做中國(guó)本土化宣傳時(shí),均以剪紙風(fēng)格的海報(bào)吸引了不少國(guó)人的眼球;2020年《花木蘭》在全球范圍內(nèi)上映前,也使用了剪紙風(fēng)格的藝術(shù)圖作為宣傳。這些都足以表現(xiàn)出中國(guó)剪紙所展現(xiàn)出的蓬勃生命力。

近年來(lái),剪紙文化搭載電子游戲的形式也引發(fā)了人們的關(guān)注。一些游戲也借助剪紙的形式來(lái)制作宣傳圖,圖1分別展示了兩款游戲中的剪紙?jiān)?。其中,左?cè)是移動(dòng)平臺(tái)的游戲《自由幻想》在騰訊數(shù)字文創(chuàng)節(jié)展會(huì)的“藝術(shù)長(zhǎng)廊”展區(qū),為玩家們帶來(lái)的由剪紙非遺大師李金波老師創(chuàng)作的幻想八仙剪紙作品,旨在用數(shù)字化與傳統(tǒng)藝術(shù)結(jié)合的方式傳承八仙非遺文化。但這樣的剪紙要素只占據(jù)該游戲宣傳活動(dòng)的一部分,實(shí)際游戲畫面并未采用剪紙的風(fēng)格;而右側(cè)的《尼山薩滿》這款游戲的畫面則展現(xiàn)出了鮮明的中國(guó)剪紙?zhí)厣?,但卻對(duì)中國(guó)傳統(tǒng)剪紙樣式的創(chuàng)新不足,略顯保守,并且在遵循傳統(tǒng)剪紙風(fēng)格的基礎(chǔ)上沒有充分利用現(xiàn)代2D游戲中的技術(shù),導(dǎo)致最終呈現(xiàn)給玩家的畫面表現(xiàn)力不足。

圖1 剪紙非遺大師李金波創(chuàng)作的幻想八仙剪紙作品和《尼山薩滿》的實(shí)機(jī)畫面

伴隨愈發(fā)強(qiáng)大的科學(xué)技術(shù)水平,電子游戲所展現(xiàn)出的畫面帶給玩家一次又一次的驚喜。與追求寫實(shí)風(fēng)格的游戲不同是,一些2D游戲表達(dá)出的則是自己獨(dú)樹一幟的美術(shù)風(fēng)格,如二維與三維相結(jié)合的《奧日與螢火意志》、手繪風(fēng)格的《空洞騎士》,都著實(shí)令玩家驚嘆。類似這樣的2D游戲,其畫面設(shè)計(jì)往往能夠在保持自身美術(shù)風(fēng)格的基礎(chǔ)上,模擬出具備縱深感的3D環(huán)境效果。

而精美視覺效果的實(shí)現(xiàn),通常離不開以下技術(shù):2D景深效果(2D Depth of Field)、屏幕后處理技術(shù)(Screen Post-processing)、 視差滾動(dòng)技術(shù)(Parallax Scrolling)。景深效果本應(yīng)屬于屏幕后處理技術(shù)的一種,但由于在2D環(huán)境下所實(shí)現(xiàn)的景深效果,往往不同于三維空間中以屏幕后處理的方式實(shí)現(xiàn)的景深效果,因而此處特別強(qiáng)調(diào)是在二維的空間下所執(zhí)行的。所謂景深效果,是針對(duì)一次只能聚集于單個(gè)物距的相機(jī),這樣的相機(jī)在對(duì)焦點(diǎn)前后有一個(gè)相對(duì)清晰的成像范圍,而在這個(gè)范圍外所呈現(xiàn)出的景物則是模糊的[4];屏幕后處理技術(shù)則指的是在渲染完整個(gè)場(chǎng)景、得到屏幕圖像后,再對(duì)這個(gè)圖像進(jìn)行一系列操作,實(shí)現(xiàn)各種屏幕特效,這種技術(shù)可以為游戲畫面添加更多的藝術(shù)效果[5];視差滾動(dòng)技術(shù)即在二維的空間中創(chuàng)造出具有深度錯(cuò)覺的場(chǎng)景,它早在20世紀(jì)30年代的傳統(tǒng)動(dòng)畫中就通過(guò)多平面成像技術(shù)有所運(yùn)用[6]。這些技術(shù)使得開發(fā)者在二維空間下也能創(chuàng)造出恢弘的游戲世界。

剪紙作為一門基于二維平面的鏤空藝術(shù),它非常講究線條構(gòu)成,又強(qiáng)調(diào)夸張的造型,以及注重輪廓的唯美[7]。其中,剪紙的平面性讓它很容易能夠與視差滾動(dòng)技術(shù)相結(jié)合。本文將嘗試結(jié)合中國(guó)傳統(tǒng)剪紙風(fēng)格與現(xiàn)代2D游戲場(chǎng)景搭建所使用的技術(shù),以創(chuàng)建具備更好視覺效果的剪紙風(fēng)格場(chǎng)景為研究目標(biāo),探索剪紙藝術(shù)所能夠帶來(lái)的全新的表現(xiàn)形式。

而得益于游戲引擎的逐漸成熟,使得游戲制作者可以將更多時(shí)間用于更有差異性的開發(fā)工作上,而不需要在圖形渲染、動(dòng)畫功能、物理引擎等游戲基礎(chǔ)功能上投入過(guò)多的精力。其中,Unity游戲引擎發(fā)展到今天已經(jīng)成為了開發(fā)2D游戲最為合適的工具之一。因此,根據(jù)中國(guó)剪紙的特點(diǎn),本文將選取Unity游戲引擎作為實(shí)現(xiàn)工具,充分利用Unity整合的各項(xiàng)功能,以更好地實(shí)現(xiàn)本文的研究目標(biāo)。

綜上,針對(duì)現(xiàn)有中國(guó)剪紙游戲場(chǎng)景設(shè)計(jì)的不足,參考現(xiàn)代2D游戲中的視覺效果,在中國(guó)傳統(tǒng)剪紙美術(shù)風(fēng)格的基礎(chǔ)上加以創(chuàng)新,以Unity游戲引擎作為技術(shù)實(shí)現(xiàn)工具,探索如何快速、高效地搭建出兼顧有剪紙風(fēng)格與現(xiàn)代2D游戲視覺效果的場(chǎng)景,從而讓剪紙藝術(shù)能夠繼續(xù)煥發(fā)光彩,成為不同時(shí)代人們共同的精神財(cái)富。

2 剪紙風(fēng)格場(chǎng)景實(shí)現(xiàn)的算法思路

本文的研究目標(biāo)是實(shí)現(xiàn)一個(gè)在二維空間下的剪紙風(fēng)格場(chǎng)景,主要使用到了視差滾動(dòng)技術(shù)、2D景深效果、屏幕后處理技術(shù)。

其中,通過(guò)視差滾動(dòng)技術(shù)將場(chǎng)景中的元素分為多個(gè)圖層,并讓這些圖層相對(duì)于攝像機(jī)的移動(dòng)有著不同的速度,離相機(jī)越近得移動(dòng)的越快,從而當(dāng)相機(jī)移動(dòng)時(shí)畫面整體有了透視的錯(cuò)覺;2D景深效果能夠營(yíng)造一種在三維空間中特有的縱深感,這是通過(guò)給離相機(jī)越遠(yuǎn)的圖層配置越高的模糊強(qiáng)度來(lái)實(shí)現(xiàn)的。由于本文中所實(shí)現(xiàn)的場(chǎng)景是二維的,因此不能像三維場(chǎng)景中那樣,直接通過(guò)屏幕后處理的方式來(lái)實(shí)現(xiàn)景深效果;屏幕后處理技術(shù)則在場(chǎng)景搭建的后期提升整體的視覺效果,如使用泛光后處理技術(shù)突出燈光效果以及平滑光照的邊緣過(guò)渡等。

同時(shí),在整個(gè)場(chǎng)景搭建的過(guò)程中,設(shè)計(jì)自動(dòng)生成算法來(lái)快速、高效的進(jìn)行場(chǎng)景的搭建。自動(dòng)生成算法包含兩個(gè)方面:一方面,用于自動(dòng)生成各個(gè)圖層下的游戲?qū)ο螅缋靡豢脴渥鳛閺?fù)制原型,快速生成一整片森林。這一部分以下稱為“自動(dòng)生成多圖層物體算法”;另一方面,用于根據(jù)不同圖層離相機(jī)的距離,賦予這些圖層不同的模糊強(qiáng)度,從而能夠在短時(shí)間內(nèi)構(gòu)建出二維空間下的景深效果,而不需要人工地為不同圖層進(jìn)行模糊強(qiáng)度的配置。這一部分以下稱為“自動(dòng)生成多圖層模糊效果算法”。

此外,根據(jù)場(chǎng)景中各元素的排布特點(diǎn)、對(duì)鏡頭的貢獻(xiàn)度等,對(duì)整個(gè)場(chǎng)景進(jìn)行優(yōu)化,以保證該游戲場(chǎng)景在運(yùn)行時(shí)幀數(shù)的穩(wěn)定。

綜上,本文所使用的算法思路步驟如圖2。

圖2 本文使用的算法思路步驟

3 場(chǎng)景搭建的具體算法

3.1 視差滾動(dòng)技術(shù)

(1)視差滾動(dòng)技術(shù)的一般實(shí)現(xiàn)算法

視差滾動(dòng)技術(shù)能夠在二維空間里營(yíng)造出三維空間中的縱深感。常用的實(shí)現(xiàn)視差滾動(dòng)效果的方法有四種,分別是圖層法、精靈法、重復(fù)紋理法和光柵法。其中,精靈法和光柵法是在上世紀(jì)末受限于某些主機(jī)的性能而針對(duì)這些主機(jī)開發(fā)出的方法,對(duì)于本文已不再適用。因此,本文主要運(yùn)用到其余的兩種方法:

圖層法,它實(shí)際上是最直接地模擬三維空間中實(shí)現(xiàn)視差滾動(dòng)原理的一種方法。嚴(yán)格來(lái)講,這種方法已經(jīng)讓空間從二維拓寬到了三維(如圖3所示),場(chǎng)景中出現(xiàn)的所有圖片元素,都包含了原本二維空間中不具有深度信息。這樣,在相機(jī)移動(dòng)時(shí),由于每一圖層與相機(jī)在深度軸向的距離不同,從而能夠產(chǎn)生視差效果。一些顯示系統(tǒng)還支持額外對(duì)單個(gè)圖層進(jìn)行速度控制,即給離相機(jī)近的圖層額外添加一個(gè)與之前相比更快的速度,而給離相機(jī)遠(yuǎn)的圖層額外添加一個(gè)更慢的速度。通過(guò)這種方式,提高各圖層的速度衰減速率,這樣使得視差滾動(dòng)的效果在深度軸向較小的空間里也可以更為明顯;

圖3 《風(fēng)語(yǔ)世界》中使用視差滾動(dòng)圖層的側(cè)視圖

重復(fù)紋理法,它將完整的圖片分成一個(gè)個(gè)單元格,每一個(gè)單元格的位置都可以單獨(dú)設(shè)置,這樣就可以通過(guò)讓這些單元格循環(huán)產(chǎn)生,或者在移出相機(jī)的瞬間從相機(jī)移出端將其位置調(diào)整到移入端,從而產(chǎn)生無(wú)限滾動(dòng)的錯(cuò)覺。這一技術(shù)常常用于在俯視角飛行射擊游戲中實(shí)現(xiàn)滾動(dòng)的星空背景效果。

本文將借鑒“圖層法”來(lái)實(shí)現(xiàn)視差滾動(dòng)技術(shù),并借鑒“重復(fù)紋理法”來(lái)對(duì)視差滾動(dòng)進(jìn)行優(yōu)化,實(shí)現(xiàn)無(wú)限滾動(dòng)的效果。

(2)基于Unity的視差滾動(dòng)技術(shù)具體實(shí)現(xiàn)

在Unity中,如果選擇在二維空間下搭建場(chǎng)景,那么對(duì)于該空間下的大多數(shù)二維游戲?qū)ο蟮匿秩臼峭ㄟ^(guò)名為“Sprite Renderer”組件實(shí)現(xiàn)的。不過(guò),該組件并不會(huì)像“圖層法”中那樣通過(guò)深度信息進(jìn)行排序。但取而代之的是,Unity會(huì)根據(jù)Sprite Renderer組件上的“Order In Layer"屬性,來(lái)決定多個(gè)圖片間的渲染順序。而這實(shí)際上就讓不同的圖片間有了層級(jí)的概念,從而可以借鑒“圖層法”中的思想,即根據(jù)相機(jī)的移動(dòng)速度改變其它各個(gè)圖層的速度。

在Unity中實(shí)現(xiàn)視差移動(dòng)的偽代碼如圖4所示:

圖4 實(shí)現(xiàn)視差移動(dòng)的偽代碼

這樣,上述程序就能夠控制各個(gè)圖層對(duì)象基于相機(jī)移動(dòng)的速度計(jì)算得出自身的移動(dòng)速度。并且,該程序中還設(shè)置了視差縮放系數(shù)變量,通過(guò)調(diào)整該變量的值就可以控制由近及遠(yuǎn)的不同圖層間的速度衰減量,從而形成不同程度的視差移動(dòng)效果。最后,在決定改變圖層對(duì)象的位置前做了平滑處理,以得到更柔和的視差移動(dòng)效果。

(3)基于Unity的自動(dòng)生成多圖層物體算法的實(shí)現(xiàn)

如果希望能夠讓視差滾動(dòng)效果更為明顯,那么就需要更多的圖層層級(jí),且每一層級(jí)中都要包含有多個(gè)游戲?qū)ο蟆,F(xiàn)代游戲中,開發(fā)人員通常不會(huì)以完全人工的手段擺放這些游戲?qū)ο?,而是?huì)通過(guò)一些自動(dòng)生成算法來(lái)快速搭建出所需的場(chǎng)景。

如育碧公司在2017年游戲開發(fā)者大會(huì)(Game Developers Conference)上分享公司旗下的《孤島驚魂5》在開發(fā)時(shí)所用到的自動(dòng)生成算法[8],其本質(zhì)上就是先由以人工的方式在場(chǎng)景中布置點(diǎn)、曲線以及面,再由算法根據(jù)這些人工的標(biāo)記進(jìn)行生成;而制作了《地平線:零之曙光》的開發(fā)商Guerrilla Games則在其官網(wǎng)上分享了他們快速生成場(chǎng)景的方法[9]:首先建立一套完整的筆刷系統(tǒng),這套系統(tǒng)不僅能夠在筆刷范圍內(nèi)生成植物、碎石等游戲?qū)ο?,并且在繪制時(shí)還會(huì)考慮繪制區(qū)域內(nèi)的地形(如太陡峭的斜坡上不能生成筆直生長(zhǎng)的樹),以及與附近已生成的游戲?qū)ο箝g的關(guān)系(如兩棵樹不應(yīng)離得太近、樹下應(yīng)有合理數(shù)量的灌木草叢覆蓋等等)。這樣,制作人員就可以快速地利用筆刷來(lái)生成物體,而算法則會(huì)在這個(gè)過(guò)程中幫助合理地規(guī)劃。

本文所構(gòu)建的場(chǎng)景與上述算法的應(yīng)用場(chǎng)景最大的區(qū)別在于維度不同。在三維空間下,需要在不同的空間位置生成物體;而在二維空間下,則需要在不同的層級(jí)生成物體。而分析上面提到的兩種算法,可以發(fā)現(xiàn)它們都采用了人工標(biāo)記配合算法自動(dòng)生成的思路。對(duì)應(yīng)于三維空間中在不同的空間位置添加人工標(biāo)記,在二維空間中就是在不同的圖層層級(jí)下進(jìn)行人工標(biāo)記的添加。

Unity中在給各個(gè)圖層對(duì)象下生成子對(duì)象時(shí),可以直接采用Unity函數(shù)庫(kù)給出的Instantiate方法。該方法不僅可以配置復(fù)制原型、生成位置、生成旋轉(zhuǎn)角度,還可以直接配置所生成對(duì)象的父對(duì)象。這樣就可以直接通過(guò)該方法為每一個(gè)生成對(duì)象指定不同的圖層對(duì)象,從而快速為不同的層級(jí)配置好多個(gè)游戲?qū)ο?。本文選取如圖5所示的樹木作為復(fù)制原型,直接通過(guò)Unity函數(shù)庫(kù)中的Instantiate函數(shù)生成的效果如圖6。

圖5 本文實(shí)現(xiàn)的項(xiàng)目所使用的復(fù)制原型

圖6 直接通過(guò)Instantiate函數(shù)生成的效果圖

從圖中可以看到,如果僅僅將這些樹木劃分到不同的圖層中,所能實(shí)現(xiàn)的效果非常有限。這是因?yàn)樵谌S空間中,依據(jù)“近大遠(yuǎn)小”的透視原理,位于遠(yuǎn)處的物體應(yīng)該看起來(lái)更??;同時(shí),樹木的位置、旋轉(zhuǎn)角度也過(guò)于單調(diào),應(yīng)該增添一些隨機(jī)的因素。

因此,對(duì)上述自動(dòng)生成算法進(jìn)行改進(jìn)。首先為每一個(gè)圖層對(duì)象配置如下的變量:用于記錄當(dāng)前圖層所需生成數(shù)量的變量,以及其對(duì)應(yīng)縮放系數(shù)的變量。而這就是二維空間下對(duì)不同圖層層級(jí)所添加的人工標(biāo)記?;诖耍倪M(jìn)后的自動(dòng)生成算法偽代碼如圖7所示:

圖7 自動(dòng)生成多圖層物體函數(shù)的偽代碼

這樣,就可以在自動(dòng)生成時(shí)讀取該圖層的相關(guān)配置,為不同的圖層生成具有不同位置及縮放的樹木對(duì)象,從而實(shí)現(xiàn)“近大遠(yuǎn)小”的視覺效果。并且,在生成同一圖層下的樹木時(shí),每一個(gè)樹木對(duì)象都在限定的范圍內(nèi)隨機(jī)生成一個(gè)不同的位置、旋轉(zhuǎn)角度及縮放系數(shù),以減弱畫面的重復(fù)感。改進(jìn)的自動(dòng)算法執(zhí)行效果如圖8所示:

圖8 自動(dòng)生成多圖層物體算法得到的結(jié)果

改進(jìn)后的效果與之前相比較明顯有所提升。但由于這些樹木的色調(diào)完全相同,使得不同圖層的樹木難以區(qū)分,畫面所營(yíng)造的縱深感并不足。

(4)視差滾動(dòng)技術(shù)的優(yōu)化:無(wú)限滾動(dòng)算法

正如重復(fù)紋理法中將完整圖片分成單元格并讓它們循環(huán)產(chǎn)生的思路,Unity中由于可以單獨(dú)控制每一個(gè)游戲?qū)ο?,因此也常常使用類似的方法,?duì)移出鏡頭的物體不進(jìn)行銷毀,而是調(diào)整其位置,讓其再次從其它方向進(jìn)入鏡頭的范圍。如使用兩張背景圖片,每張背景圖片的大小剛好能填充整個(gè)屏幕,假設(shè)相機(jī)向右移動(dòng),那么當(dāng)其中一張背景圖片從左側(cè)離開鏡頭范圍時(shí),程序會(huì)將它的位置調(diào)整到另一張背景圖片的右側(cè)。對(duì)另一張背景圖片也執(zhí)行相同的操作,由此就生成了無(wú)限滾動(dòng)的背景。這一優(yōu)化技巧在現(xiàn)代2D游戲中已經(jīng)屢見不鮮。但基于本文中所實(shí)現(xiàn)的項(xiàng)目,其本身已經(jīng)有“視差滾動(dòng)”在游戲運(yùn)行過(guò)程中持續(xù)執(zhí)行,因此需要對(duì)無(wú)限滾動(dòng)的一般實(shí)現(xiàn)方法做進(jìn)一步的改進(jìn)。

以地面圖片為例,通過(guò)對(duì)兩張地面圖片中移出鏡頭的那一張進(jìn)行位置的調(diào)整,一般情況下就可以實(shí)現(xiàn)無(wú)限滾動(dòng)的效果。但由于本項(xiàng)目中視差滾動(dòng)的影響,地面圖片本身會(huì)有一個(gè)移動(dòng)速度,這就會(huì)造成調(diào)整地面圖片的位置時(shí)會(huì)出現(xiàn)錯(cuò)誤的“割裂”的現(xiàn)象(如圖9);此外,在制作美術(shù)素材時(shí),美術(shù)人員通常不方便獲知多少的像素單位能夠正好填充游戲場(chǎng)景內(nèi)的相機(jī)范圍。當(dāng)搭建場(chǎng)景時(shí),可能需要更多的單位圖片才能填充一個(gè)屏幕。因此,實(shí)現(xiàn)方法中也需要考慮兩張以上的地面圖片存在的情況。改進(jìn)后的偽代碼如圖10所示:

圖9 調(diào)整圖片位置后出現(xiàn)的錯(cuò)誤結(jié)果

圖10 自動(dòng)生成多圖層物體函數(shù)的偽代碼

上述偽代碼只截取了檢測(cè)物體是否會(huì)從屏幕左側(cè)移出的情況,從其它方向移出屏幕的算法思路與其相同。

此外,由于像樹木這樣的物體并不存在精確接縫的問(wèn)題,因此也不需要每一幀都對(duì)它們所處的位置做檢測(cè)。所以腳本中還添加了控制檢測(cè)頻率的代碼。這樣,就可以針對(duì)不同類型的游戲?qū)ο笈鋫洳煌臋z測(cè)頻率,這對(duì)優(yōu)化計(jì)算量是十分有幫助的。

這樣,通過(guò)無(wú)限滾動(dòng)算法及視差移動(dòng)技術(shù),在游戲運(yùn)行過(guò)程中,當(dāng)相機(jī)發(fā)生移動(dòng)時(shí),不同圖層的樹木會(huì)有不同的移動(dòng)速度,且離開鏡頭范圍的游戲?qū)ο髸?huì)調(diào)整其位置形成無(wú)限滾動(dòng)的視覺效果(如圖11)。

圖11 無(wú)限滾動(dòng)的效果

3.2 2D景深效果

(1)景深效果的一般實(shí)現(xiàn)算法

在三維空間中,往往利用屏幕后處理技術(shù)中的景深效果來(lái)營(yíng)造畫面的縱深感。但在二維空間下,如果直接使用屏幕后處理的方法進(jìn)行景深處理,則得到的結(jié)果與期望的并不相同(如圖12所示)。

圖12 利用屏幕后處理的方式得到的錯(cuò)誤結(jié)果

從圖中可以看到,場(chǎng)景中所有的元素都被模糊處理了,而如果調(diào)節(jié)景深效果的相關(guān)參數(shù),會(huì)發(fā)現(xiàn)無(wú)論如何調(diào)整,都只會(huì)出現(xiàn)完全模糊或完全清晰兩種極端的結(jié)果。這是因?yàn)?,在三維空間中,作為屏幕后處理技術(shù)之一的景深效果是基于場(chǎng)景中物體的深度信息來(lái)實(shí)現(xiàn)的。而正如前文中提到的那樣,二維圖片是通過(guò)Sprite Renderer組件渲染到屏幕上的,而該組件對(duì)于二維圖片的著色處理并沒有為其設(shè)置不同的深度。也就是說(shuō),即便將這些樹木對(duì)象分配在不同深度軸向的位置上,以屏幕后處理技術(shù)為基礎(chǔ)的景深效果也無(wú)法發(fā)揮它的作用。因此,為實(shí)現(xiàn)二維空間下的景深效果,需要采用一種與三維空間下截然不同的實(shí)現(xiàn)方法。

(2)基于Unity的2D景深效果具體實(shí)現(xiàn)

在過(guò)去的游戲中,會(huì)直接利用一些圖像處理軟件對(duì)二維圖片進(jìn)行模糊處理。這樣做的好處是,在游戲引擎中對(duì)二維圖片進(jìn)行渲染時(shí),著色處理仍然僅僅是對(duì)原圖的紋理采樣,對(duì)GPU的壓力較小。但這樣處理也有更為明顯的缺點(diǎn):首先,需要對(duì)每一張不同的圖片進(jìn)行模糊操作,由此極大地增加了工作量;第二,這些圖片相較之前都會(huì)額外有一張模糊處理的版本,如果要求該圖片在多個(gè)需要視差滾動(dòng)的圖層中出現(xiàn),還需要通過(guò)設(shè)置不同的模糊參數(shù)制作出多個(gè)相應(yīng)的版本,這不僅提高了內(nèi)存占用,游戲自身容量也成倍的增加了;第三,如果在之后需要調(diào)整這些圖片的外形,盡管可以返回到原圖進(jìn)行修改,但修改完成后又需要再次進(jìn)行模糊處理。而直接在已經(jīng)經(jīng)過(guò)模糊處理的圖片上繪制細(xì)節(jié)無(wú)疑是一場(chǎng)災(zāi)難。

基于上述原因,本文嘗試采用能夠進(jìn)行模糊處理的著色器來(lái)實(shí)現(xiàn)二維空間的景深效果。與使用圖像處理軟件進(jìn)行模糊操作不同的是,模糊著色通常的實(shí)現(xiàn)方法是在二維圖片被渲染到屏幕上之前,通過(guò)對(duì)原圖紋理采樣得到的每一個(gè)紋素的顏色值同它周圍紋素的顏色值做給定程度的均值處理,以達(dá)到模糊的視覺效果。通過(guò)這種方法,只需要在程序中調(diào)整模糊強(qiáng)度參數(shù),就可以基于原圖生成不同程度的模糊版本(如圖13所示),這樣極大地減小了工作量,并節(jié)省了游戲的占用空間,且方便了后續(xù)對(duì)原圖細(xì)節(jié)的調(diào)整。

圖13 應(yīng)用不同模糊強(qiáng)度的效果

(2)基于Unity的2D景深效果具體實(shí)現(xiàn)

同自動(dòng)生成多個(gè)圖層的樹木對(duì)象相同,分別為每一個(gè)樹木對(duì)象分配相應(yīng)的模糊材質(zhì)顯然是不利于開發(fā)效率的。本文實(shí)現(xiàn)自動(dòng)分配模糊材質(zhì)算法的思路是:將該算法與自動(dòng)生成多圖層物體算法相結(jié)合。仍然通過(guò)獲取圖層上的人工標(biāo)記來(lái)得到當(dāng)前層級(jí)的相關(guān)配置參數(shù),再根據(jù)這些配置參數(shù)為生成的物體創(chuàng)建并分配相應(yīng)模糊強(qiáng)度的材質(zhì)。通過(guò)該算法所生成的模糊效果如圖14所示:

圖14 自動(dòng)生成多圖層模糊效果算法得到的結(jié)果

從Unity編輯器的Scene窗口可以看到(如圖15),盡管該場(chǎng)景是一個(gè)沒有深度軸向環(huán)境的二維空間,但是仍然能夠搭建出一個(gè)效果較好的透視錯(cuò)覺。

圖15 Unity編輯器的Scene窗口

3.3 場(chǎng)景中其他裝飾物及角色的添加

在場(chǎng)景的主要部分完成后,為場(chǎng)景添加一些諸如光束、落葉、湖面等裝飾性的元素,并將游戲角色添加到畫面當(dāng)中,最終利用屏幕后處理技術(shù)使畫面中的光照效果更加明顯并完善其邊緣的平滑過(guò)渡。由此得到的效果如圖16所示:

圖16 添加裝飾物及角色得到的效果

4 研究結(jié)果及對(duì)比分析

目前利用本文中的算法得到的效果如圖17所示。同時(shí)選取了2018年推出的剪紙風(fēng)格的游戲《尼山薩滿》作為對(duì)比(如圖18所示)。

圖17 通過(guò)本文算法得到的效果

圖18 2018年推出的游戲《尼山薩滿》

從圖中可以看出,《尼山薩滿》這款游戲采用二維游戲中常見的橫版視角,并嘗試模擬出三維空間下的多層背景。但“遠(yuǎn)處”的場(chǎng)景元素在視覺上只有顏色深淺的變化,盡管通過(guò)為場(chǎng)景中添加燈光使得一些圖片元素的顏色有了漸變的效果,但畫面所表現(xiàn)出的縱深感仍然不足。

而通過(guò)本文算法生成的場(chǎng)景,具有如下優(yōu)勢(shì):通過(guò)自動(dòng)生成算法,場(chǎng)景搭建的效率大大提高;隨著圖層離相機(jī)的距離逐漸增大,不同圖層樹木對(duì)象的縮放系數(shù)整體上呈減小的趨勢(shì),從而有了“近大遠(yuǎn)小”的視覺效果;同一圖層的樹木之間有微小的旋轉(zhuǎn)角度、縮放系數(shù)的變化,減弱了畫面的重復(fù)感;最后,模擬了三維空間中的景深效果,越“遠(yuǎn)”的樹木看起來(lái)越模糊,并且當(dāng)游戲運(yùn)行時(shí),不同圖層的樹木會(huì)根據(jù)相機(jī)的移動(dòng)對(duì)應(yīng)得出不同的移動(dòng)速度,距離相機(jī)越近的圖層移動(dòng)得會(huì)越快,這樣進(jìn)一步增強(qiáng)了場(chǎng)景的縱深感。

5 結(jié)論

本文針對(duì)中國(guó)剪紙游戲中所存在的問(wèn)題,從現(xiàn)代2D游戲中所用到的技術(shù)入手,并以中國(guó)傳統(tǒng)剪紙藝術(shù)為基礎(chǔ),提出基于Unity的自動(dòng)生成兼顧剪紙風(fēng)格與現(xiàn)代2D游戲視覺效果場(chǎng)景的算法。從實(shí)現(xiàn)的結(jié)果和與其他游戲的對(duì)比分析表明,本文的算法不僅僅能夠快速高效地搭建出一個(gè)場(chǎng)景,其所實(shí)現(xiàn)的畫面風(fēng)格也能夠更好地營(yíng)造出場(chǎng)景的縱深感,并且通過(guò)對(duì)現(xiàn)代2D游戲中技術(shù)的綜合運(yùn)用,使得整體的視覺效果得到了提高。但目前在視差移動(dòng)算法中所控制的縮放系數(shù)主要靠人為設(shè)定,得到的畫面效果形式較為單一,在今后,將繼續(xù)研究如何進(jìn)行風(fēng)格化的視差移動(dòng)縮放函數(shù)的設(shè)計(jì),以更好的實(shí)現(xiàn)不同視覺效果的剪紙風(fēng)格場(chǎng)景。

猜你喜歡
視差景深后處理
車身接附點(diǎn)動(dòng)剛度后處理方法對(duì)比
基于自適應(yīng)窗的立體相機(jī)視差圖優(yōu)化方法研究
一種結(jié)合物理模型和景深估算的圖像去霧算法
視差邊緣優(yōu)化的SGM 密集深度估計(jì)算法?
果樹防凍措施及凍后處理
Kobe—one of the greatest basketball players
基于分割樹的視差圖修復(fù)算法研究
基于柴油機(jī)排氣后處理的排放控制技術(shù)應(yīng)用研究
發(fā)動(dòng)機(jī)排氣后處理技術(shù)
簡(jiǎn)明FOTO詞典:景深
民权县| 陵川县| 丹巴县| 雅安市| 灌南县| 云龙县| 江阴市| 临桂县| 镇沅| 定南县| 黄平县| 建平县| 太和县| 秭归县| 比如县| 峨山| 沙湾县| 柏乡县| 稷山县| 邢台市| 若羌县| 仁寿县| 义马市| 奉化市| 松江区| 海安县| 中西区| 永济市| 高雄市| 福贡县| 苍山县| 民乐县| 三门峡市| 固安县| 茶陵县| 庆阳市| 盘山县| 宁化县| 金坛市| 镇沅| 西和县|