• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      3D游戲引擎構(gòu)架及游戲動(dòng)畫渲染技術(shù)分析

      2022-03-15 09:42:32陳凌超
      關(guān)鍵詞:卡通引擎動(dòng)畫

      陳凌超

      (福州英華職業(yè)學(xué)院,福建 福州 350018)

      0 前言

      2019年,國(guó)務(wù)院發(fā)布《國(guó)家職業(yè)教育改革實(shí)施方案》。隨后,教育部聯(lián)合其他相關(guān)部門印制并發(fā)布《關(guān)于在院校實(shí)施“學(xué)歷認(rèn)證+若干職業(yè)技能等級(jí)證書”制度試點(diǎn)方案》(簡(jiǎn)稱“1+X”證書制度試點(diǎn)),3D引擎技術(shù)應(yīng)用職業(yè)技能等級(jí)認(rèn)證引發(fā)了在校師生的關(guān)注,虛擬動(dòng)畫應(yīng)用技術(shù)專業(yè)教學(xué)資源庫亟待完善、更新。因此,分析3D游戲引擎構(gòu)架、游戲動(dòng)畫渲染技術(shù)具有非常重要的意義。

      1 游戲動(dòng)畫渲染

      游戲動(dòng)畫渲染是一種去真實(shí)感的方法,即利用類似手繪的效果代替電腦生成的圖像。一般需要專業(yè)人員利用專門的卡通渲染著色器使游戲圖像、卡通以及漫畫達(dá)到形似且簡(jiǎn)潔明了的效果。游戲動(dòng)畫渲染是計(jì)算機(jī)圖形學(xué)的“副產(chǎn)物”,可以借助.FX文件靈活渲染游戲關(guān)卡,保證實(shí)際場(chǎng)景與游戲運(yùn)行階段的效果相同,規(guī)避因多次切換渲染程序而導(dǎo)致出現(xiàn)渲染幀率水平下降的問題。還可以根據(jù)前期制作的渲染效果庫,以添加C++代碼的方式引用渲染程序模塊,將渲染程序中的參數(shù)編碼到模型、紋理以及頂點(diǎn)中,達(dá)到提高渲染速率的目的。

      2 3D游戲引擎構(gòu)架

      在“1+X”證書制度試點(diǎn)的過程中,“1+X”證書職業(yè)技能標(biāo)準(zhǔn)與《現(xiàn)世代游戲建模與手繪貼圖》、《專業(yè)綜合實(shí)訓(xùn)》等專業(yè)課程的實(shí)踐內(nèi)容實(shí)現(xiàn)了有效銜接,保證游戲設(shè)計(jì)實(shí)訓(xùn)滿足行業(yè)規(guī)范要求。在3D游戲的實(shí)訓(xùn)過程中,3D游戲引擎的組建必不可少。3D游戲引擎主要包括以下5個(gè)模塊。

      2.1 系統(tǒng)模塊

      系統(tǒng)模塊是引擎、機(jī)器本身開展信息交互的模塊,也是平臺(tái)移植時(shí)唯一需要進(jìn)行代碼擴(kuò)加的模塊。系統(tǒng)模塊一般包括輸入、計(jì)時(shí)器、圖形、配置以及聲音5個(gè)子模塊,可以在主系統(tǒng)內(nèi)對(duì)全部子模塊進(jìn)行初始化、關(guān)閉或更新。其中,輸入子模塊主要負(fù)責(zé)對(duì)游戲板、鍵盤以及游戲手柄等輸入裝置的輸入觸發(fā)進(jìn)行統(tǒng)一控制、接收和處理,通過向輸入子模塊發(fā)送請(qǐng)求來獲取玩家位置等信息,從而滿足玩家自由切換的需求。計(jì)時(shí)器負(fù)責(zé)為時(shí)間觸發(fā)開展移動(dòng)變化提供支持。圖形子模塊則是利用軟件渲染、OpenGL以及Direct3D等工具抽象出“圖形層”并將其放置在API實(shí)現(xiàn)層上,以提高系統(tǒng)的兼容性、增強(qiáng)表現(xiàn)效果。配置位于頂端,負(fù)責(zé)讀取命令行參數(shù)、配置記錄文件或進(jìn)行設(shè)置修改,在系統(tǒng)初始化、正式運(yùn)行期間,配置需要與全部子模塊進(jìn)行信息交互,為游戲載入、聲音支持選項(xiàng)、按鈕定義、圖像解析度調(diào)整以及色深調(diào)整提供支持。聲音負(fù)責(zé)載入、播放3D聲音。

      2.2 底層渲染模塊

      在3D游戲引擎架構(gòu)中,底層渲染模塊又可劃分為碰撞檢測(cè)與反饋、可見裁剪、動(dòng)態(tài)幾何體、靜態(tài)幾何體、粒子系統(tǒng)、攝像器、節(jié)點(diǎn)陰影、光線、輸出、網(wǎng)格、布告板以及天空體。底層渲染模塊由若干個(gè)獨(dú)立的軟件工具庫構(gòu)成,可被引擎上層多次、重復(fù)利用,提供最原始的渲染功能,并根據(jù)控制臺(tái)數(shù)據(jù)調(diào)用圖形API,以完成渲染工作。一般在底層渲染模塊的應(yīng)用過程中,需要先對(duì)其進(jìn)行封裝,根據(jù)OpenGL庫、Direct3D庫從業(yè)務(wù)渲染提交程序中進(jìn)行拆解,也可以利用多邊形裁剪算法(Sutherland Hodgman)、基于Voronoi區(qū)域的碰撞算法或基于BSP引擎的碰撞檢測(cè)算法直接進(jìn)行操作。

      2.3 數(shù)據(jù)存儲(chǔ)模塊

      數(shù)據(jù)存儲(chǔ)模塊包括3D游戲引擎內(nèi)全部數(shù)學(xué)成分、文件載入器、存儲(chǔ)管理器以及數(shù)據(jù)容器等。其中,游戲引擎中數(shù)學(xué)成分主要為面、點(diǎn)和矩陣等。數(shù)據(jù)存儲(chǔ)模塊主要負(fù)責(zé)定義游戲內(nèi)使用的數(shù)據(jù)格式、數(shù)據(jù)組織方式。例如游戲文件內(nèi)數(shù)據(jù)存儲(chǔ)組織、游戲運(yùn)行階段內(nèi)存數(shù)據(jù)組織、數(shù)據(jù)讀取以及保存歷程等。在3D游戲中,數(shù)據(jù)結(jié)構(gòu)類庫較多,數(shù)據(jù)結(jié)構(gòu)類庫之間也存在相應(yīng)的傳遞、保存渠道。例如,在游戲運(yùn)行階段內(nèi)存數(shù)據(jù)組織時(shí),就可以采用指針、鏈表對(duì)數(shù)據(jù)結(jié)構(gòu)類庫關(guān)系進(jìn)行處理,從而滿足數(shù)據(jù)快速傳遞、即時(shí)保存的需求。

      2.4 控制臺(tái)模塊

      控制臺(tái)模塊是3D游戲引擎構(gòu)架的核心模塊,可以通過命令行函數(shù)、變量調(diào)整來滿足用戶在不重啟的情況下改變游戲引擎設(shè)置的需求。從本質(zhì)上來說,控制臺(tái)模塊逐一用于3D引擎設(shè)置以及調(diào)試。例如,在開發(fā)控制臺(tái)模塊時(shí),如果需要測(cè)試系列命令行變量值,開發(fā)人員就要將其輸入控制臺(tái)中,快速測(cè)試變量是否準(zhǔn)確,從而提高開發(fā)效率。在3D游戲引擎運(yùn)行期間,如果出現(xiàn)錯(cuò)誤,那么技術(shù)人員可以在不立即退出程序的情況下對(duì)游戲引擎運(yùn)行錯(cuò)誤進(jìn)行簡(jiǎn)便控制、“disable”處理,以提高調(diào)試效率。

      2.5 游戲接口模塊

      游戲接口模塊多為3D游戲引擎、游戲開發(fā)工作者連接端口,游戲開發(fā)工作者可以通過游戲接口來利用3D游戲引擎的局部或整體功能。例如,游戲接口模塊可以為游戲渲染模塊的每個(gè)子模塊提供接口,從而與系統(tǒng)相關(guān)屬性配置模塊(設(shè)置、方向和位置)連接,進(jìn)而根據(jù)3D游戲引擎每個(gè)部分的動(dòng)態(tài)屬性進(jìn)行靈活改變。同時(shí),游戲接口模塊還負(fù)責(zé)連接控制臺(tái)與系統(tǒng)模塊,便于控制臺(tái)模塊實(shí)時(shí)修正輸入操作、聲效播放、攝像器、光線、碰撞檢測(cè)與反饋等子模塊。一般來說,游戲接口模塊多為對(duì)象+圖形界面的形式,也可以通過關(guān)卡編輯器設(shè)計(jì)邏輯腳本語言,便于游戲開發(fā)工作者在更高層上編寫游戲事件與方法。

      3 3D游戲動(dòng)畫渲染技術(shù)

      在國(guó)家印制并發(fā)布《國(guó)家職業(yè)教育改革實(shí)施方案》后,“1+X”證書成為動(dòng)漫游戲人才培養(yǎng)的主要抓手。“游戲美術(shù)設(shè)計(jì)職業(yè)技能等級(jí)證書”是游戲及相關(guān)專業(yè)職業(yè)技能等級(jí)考試的重要內(nèi)容,主要考查內(nèi)容為3D游戲動(dòng)畫渲染技術(shù),特別是基于Unity軟件的動(dòng)畫制作與渲染操作。3D游戲動(dòng)畫渲染技術(shù)及應(yīng)用的要點(diǎn)如下。

      3.1 Unity引擎參與制作CF大動(dòng)畫

      CF動(dòng)畫是一款FPS游戲,中文名為《穿越火線》,部分環(huán)節(jié)和內(nèi)容的制作離不開Unity引擎,利用Unity改進(jìn)傳統(tǒng)動(dòng)畫流程,以奠定全引擎流程的基礎(chǔ)。與傳統(tǒng)動(dòng)畫制作時(shí)特效、角色以及動(dòng)畫模塊劃分的模式相比,Unity引擎參與制作的CF動(dòng)畫是數(shù)字資產(chǎn)的組織,Unity二進(jìn)制文件在同一時(shí)刻實(shí)現(xiàn)便捷操作的難度較大,此時(shí),就需要從提高效率的角度出發(fā),落實(shí)并行分工原則,由導(dǎo)演、執(zhí)行導(dǎo)演分別利用Cinemachine、Timeline制作鏡頭以及白模Layout場(chǎng)景。對(duì)“子彈發(fā)射出去”的場(chǎng)景來說,將Cinemachine的Target“綁”到子彈上就可以保證鏡頭隨子彈進(jìn)行平滑運(yùn)動(dòng)。在高模進(jìn)入尾聲后,因?yàn)轶w型、關(guān)節(jié)點(diǎn)已確定,所以可以綁定3D Max拓?fù)涞湍_M(jìn)行UV劃分,并由材質(zhì)師在Unity內(nèi)模擬布料進(jìn)行ID貼圖,再由地編師利用Unity打包各種主界面、副本場(chǎng)景,將其放入Loading圖,促使一系列游戲?qū)ο笳故驹贖ierarchy層級(jí)窗口內(nèi),完成初版場(chǎng)景的搭建工作并分層輸出序列幀。例如,在港口拍攝場(chǎng)景內(nèi)需要進(jìn)行Timelin類型場(chǎng)景拆分,并嵌套“組員”、“組長(zhǎng)”以及“導(dǎo)演”3個(gè)級(jí)別的Timeline,實(shí)現(xiàn)出片場(chǎng)景整合的目標(biāo)。同時(shí),選擇主拍攝場(chǎng)景燈光、拆分區(qū)域,并加載多區(qū)域燈光的Unity場(chǎng)景。

      Unity引擎參與制作CF大動(dòng)畫的流程如圖1所示。

      圖1 Unity引擎參與制作CF大動(dòng)畫的流程

      第一步,封裝標(biāo)簽,創(chuàng)建1個(gè)“Tags”腳本,以const常量的方式對(duì)項(xiàng)目?jī)?nèi)全部待使用標(biāo)簽進(jìn)行分裝,局部標(biāo)簽分裝腳本如下。

      Using System.Shoucang;

      Using System.tongyongjihe;

      Using danyuanfadongji;

      Public class Tags{

      Public const string wanjia=“wanjia”;//

      Public const string youxikongzhiqi=“youxikongzhiqi”;//

      Public const string diren=“diren”;//

      第二步,為了實(shí)現(xiàn)屏幕淡入、淡出的效果,將1個(gè)“FadeInOut”空物體創(chuàng)建到場(chǎng)景面板內(nèi)并加入組件GUI Teture,將顏色設(shè)置、Texture分別設(shè)置為黑色(black)、swatch_black_dff(在導(dǎo)入資源內(nèi)搜索)。同時(shí),為FadeInOut創(chuàng)建1個(gè)效果實(shí)現(xiàn)腳本,局部FadeInOut效果創(chuàng)造腳本如下。

      Using system.Shoucang;

      Using System.tongyongjihe;

      Using danyuanfadongji;

      Using danyuanfadongji.shiyongdemingmingkongjian;//shiyongdemingmingren

      Public class FadeInOut:danyixingwei

      第三步,將標(biāo)簽(Tag)為GameController的空物體創(chuàng)建到場(chǎng)景面板內(nèi),完成按鍵輸入封裝工作。

      第四步,將名稱為FP_wanjia的空物體創(chuàng)建到場(chǎng)景面板內(nèi),并將空物體在方向的位置設(shè)置為16.44,在方向的位置設(shè)置為-45.65。同時(shí),加入角色控制組件——character controller,將參數(shù)中心內(nèi)的縱軸()、半徑()分別改為1.0、0.4,使角色控制器控制全部角色行為,完成用戶輸入?yún)?shù)封裝工作。

      第五步,創(chuàng)建1個(gè)fps_FPInput的腳本并將其拖動(dòng)到FP_wanjia內(nèi),完成用戶輸入?yún)?shù)賦值工作。創(chuàng)建1個(gè)主要攝像機(jī)(第一人稱)并將其設(shè)定到FP_wanjia的子目錄內(nèi);同時(shí),新建腳本,完成第一人稱相機(jī)控制工作。

      第六步,在FP_wanjia物體下進(jìn)行fps_wanjiaControl腳本創(chuàng)建,完成“none”(無)、“idle”(無用)、“walk”(工作)、“crouch”(低頭)以及“run”(跑動(dòng))等角色控制參數(shù)定義。同時(shí),將Audio Source組件創(chuàng)建到FP_wanjia內(nèi),并將FootstepRouck05(Audio文件夾內(nèi))、JumpGeneric分別拖動(dòng)到AudioClip、JunpAudio(fps_wanjiaControl)內(nèi)。

      3.2 Cartoon CG卡通渲染

      Cartoon CG卡通特指以計(jì)算機(jī)為主要工具,利用3D模擬引擎制作完成的三維動(dòng)畫短片,具有畫面絢麗、情景真實(shí)的特點(diǎn),例如暴雪公司出產(chǎn)的魔獸爭(zhēng)霸3戰(zhàn)役、星際爭(zhēng)霸2開頭等。在制作CG動(dòng)畫的過程中,需要利用3D動(dòng)畫軟件進(jìn)行虛擬角色搭載,在實(shí)現(xiàn)完美手繪表達(dá)的同時(shí)利用卡通渲染、材質(zhì)貼圖的方式將三維立體影像渲染為單一顏色、線條展現(xiàn)的二維畫面,降低手動(dòng)繪制動(dòng)畫工作量。最后利用手工對(duì)渲染后的線條進(jìn)行修改,獲得個(gè)性化模擬手工繪制風(fēng)格的繪畫。Cartoon CG常用工具為Cel-shading等具有藝術(shù)風(fēng)格的光線渲染算法,可以減少色階數(shù)量,用單調(diào)的平面色彩(白灰雙色階)代替顏色豐富的漸變色彩。同時(shí),利用維基百科貼圖等多層次漸變采樣貼圖代替代碼幅值顏色,從而豐富細(xì)節(jié),進(jìn)而利用片段光照權(quán)重(單位法向量、單位光源朝向向量)進(jìn)行UV采樣。在該基礎(chǔ)上,為了獲得類似于漫畫書、卡通的獨(dú)特紙質(zhì)紋理,需要運(yùn)用shader方法對(duì)其進(jìn)行處理。以街頭籃球題材的Cartoon CG卡通渲染為例,根據(jù)其充滿動(dòng)感、電影視聽表達(dá)以及手繪動(dòng)畫的特點(diǎn),首先,可以利用Low-polygon Moder進(jìn)行低面數(shù)模型建模,盡可能地壓縮“面”的量,從而準(zhǔn)確描述形態(tài)結(jié)構(gòu)。其次,根據(jù)自然運(yùn)動(dòng)規(guī)律調(diào)控角色模型骨骼,使其做出超現(xiàn)實(shí)的夸張動(dòng)作。最后,利用Cel-shading渲染技術(shù),配合3D計(jì)算機(jī)軟件內(nèi)虛擬攝像機(jī)位置、視點(diǎn)操縱,賦予模型卡通材質(zhì)并將粗細(xì)適當(dāng)?shù)倪吘€添加到模型上,對(duì)精彩動(dòng)畫鏡頭進(jìn)行渲染,凸顯“線”的豐富藝術(shù)美感。

      除Low-polygon Moder、Cel-shading渲染技術(shù)外,Unity在Cartoon CG卡通渲染中也較為常用。在實(shí)際應(yīng)用過程中,首先,需要以Step函數(shù)或RampMap貼圖的方式修改光照模型,對(duì)NDotL計(jì)算蘭伯特光照進(jìn)行修改。其中,Step函數(shù)修改光照模型主要是通過直接給定1個(gè)數(shù)值,使光照結(jié)果在給定數(shù)值之間平滑過渡。給定數(shù)值標(biāo)準(zhǔn)為,當(dāng)其大于相應(yīng)數(shù)值時(shí)為1,小于相應(yīng)數(shù)值時(shí)為0;而RampMap貼圖方式則是將蘭伯特光照視為映射值,利用ramp圖(LUT查找表)的色彩過渡獲得對(duì)應(yīng)的風(fēng)格化光照。其次,在光照模型修改后,可以在Unity的“Shader Graph”中計(jì)算Fresnel 節(jié)點(diǎn),獲得基礎(chǔ)的邊緣光。一般卡通的基礎(chǔ)邊緣光傾向于軟、硬2層邊緣光的混合。深度偏移邊緣光需要將模型頂點(diǎn)偏移后重新對(duì)采樣深度進(jìn)行調(diào)整,使調(diào)整后模型深度與初始模型深度超過某一值域(邊緣),從而獲得類似于《原神》人物邊緣的亮邊效果。再次,在控制NdotL值實(shí)現(xiàn)像素顏色變化的同時(shí)要實(shí)現(xiàn)卡通著色,就可以在法線區(qū)域內(nèi)進(jìn)行二值化陰影、頭發(fā)投影以及面部陰影操作,使其合并到NDotL內(nèi)。同時(shí),混合加入高光、頭發(fā)與線性光,保證卡通渲染中色彩混合效果。最后,為了獲得整潔的邊緣線,可以利用Unity內(nèi)的“Sobel算子”進(jìn)行邊緣檢測(cè),發(fā)現(xiàn)多余的描邊信息后,將不同色塊的純色填充到邊緣檢測(cè)區(qū)。在邊緣線渲染后,可以對(duì)Unity內(nèi)的UV進(jìn)行打直處理,僅繪制與軸(或軸)呈90°的直線,獲得銳利的本村線。此外,在實(shí)際操作過程中,因?yàn)榭ㄍㄤ秩咎卣魃婕拜^多非物理屬性,所以需要根據(jù)項(xiàng)目情況對(duì)多個(gè)差異性特征參數(shù)進(jìn)行取舍。

      4 結(jié)語

      綜上所述,游戲引擎特指基于通用技術(shù)細(xì)節(jié)整理與封裝的游戲應(yīng)用程序接口,可以幫助游戲開發(fā)工作者縮短開發(fā)周期。在“1+X”證書制度試點(diǎn)背景下,游戲引擎的應(yīng)用備受關(guān)注。而渲染是游戲引擎的一部分,根據(jù)游戲類型的差異,對(duì)3D游戲動(dòng)畫渲染的要求也具有較大差異。技術(shù)操作者應(yīng)根據(jù)游戲類型,選擇適應(yīng)3D游戲引擎框架的渲染技術(shù)。一般CF大動(dòng)畫可以選擇基于Unity的動(dòng)畫渲染技術(shù),而CG卡通則可以選擇Cel-shading渲染技術(shù),在規(guī)避渲染程序多次、重復(fù)切換的同時(shí)保證游戲可以高幀率地運(yùn)行。

      猜你喜歡
      卡通引擎動(dòng)畫
      做個(gè)動(dòng)畫給你看
      動(dòng)畫發(fā)展史
      我的動(dòng)畫夢(mèng)
      文苑(2019年22期)2019-12-07 05:28:56
      藍(lán)谷: “涉藍(lán)”新引擎
      商周刊(2017年22期)2017-11-09 05:08:31
      雞鳴狗盜皮皮豬卡通
      我是動(dòng)畫迷
      趣味的卡通穿上身
      Coco薇(2015年12期)2015-12-10 03:10:00
      無形的引擎
      河南電力(2015年5期)2015-06-08 06:01:46
      瘋狂看卡通
      找不同
      读书| 东阿县| 富裕县| 潜山县| 辽中县| 东兰县| 涿鹿县| 七台河市| 邹平县| 吴旗县| 娄底市| 镇康县| 鸡泽县| 长治县| 巴林左旗| 西丰县| 绍兴市| 遂昌县| 南召县| 鹤壁市| 安远县| 金寨县| 大石桥市| 廊坊市| 岐山县| 建水县| 泸溪县| 昌邑市| 合肥市| 全椒县| 侯马市| 囊谦县| 桂阳县| 舞阳县| 庄河市| 沾化县| 江安县| 泽州县| 萨嘎县| 集贤县| 大埔县|