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

?

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

2022-03-15 09:42陳凌超
中國新技術(shù)新產(chǎn)品 2022年1期
關(guān)鍵詞:卡通引擎動畫

陳凌超

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

0 前言

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

1 游戲動畫渲染

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

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

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

2.1 系統(tǒng)模塊

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

2.2 底層渲染模塊

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

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

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

2.4 控制臺模塊

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

2.5 游戲接口模塊

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

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

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

3.1 Unity引擎參與制作CF大動畫

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

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

圖1 Unity引擎參與制作CF大動畫的流程

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

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”;//

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

Using system.Shoucang;

Using System.tongyongjihe;

Using danyuanfadongji;

Using danyuanfadongji.shiyongdemingmingkongjian;//shiyongdemingmingren

Public class FadeInOut:danyixingwei

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

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

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

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

3.2 Cartoon CG卡通渲染

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

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

4 結(jié)語

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

猜你喜歡
卡通引擎動畫
做個動畫給你看
動畫發(fā)展史
雞鳴狗盜皮皮豬卡通
我是動畫迷
趣味的卡通穿上身
無形的引擎
瘋狂看卡通
基于Cocos2d引擎的PuzzleGame開發(fā)
One?。牛睿纾椋睿濉。蹋澹妫糁皇O乱粋€引擎
息烽县| 皮山县| 监利县| 襄城县| 荆州市| 金昌市| 彩票| 怀宁县| 邵阳县| 镇雄县| 宁武县| 临安市| 湖南省| 晴隆县| 临澧县| 上高县| 武安市| 探索| 广南县| 神农架林区| 临潭县| 会东县| 察隅县| 休宁县| 乌兰县| 万州区| 滦平县| 河西区| 鹤峰县| 体育| 广州市| 特克斯县| 巩义市| 开平市| 东乡族自治县| 东阿县| 沾益县| 阿拉善右旗| 义马市| 开鲁县| 宁蒗|