999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Unity3D的換裝系統插件設計①

2021-06-28 06:27:36黃兆銘
計算機系統應用 2021年6期
關鍵詞:游戲功能系統

黃兆銘,儲 穎

(深圳大學 計算機與軟件學院,深圳 518060)

如今的電子游戲,不僅僅是由代碼編寫的單純軟件,更承載了開發者的內心世界[1].正因如此,電子游戲的題材與玩法也愈加豐富.相比傳統電子游戲中固定的游戲角色,如今的開發者和玩家對游戲角色的期望值越來越高,希望在游戲中獲得更多的自由感(如:自定義游戲角色模型).換裝系統,正是游戲開發人員和游戲玩家追求自由的體現.

如果一款游戲搭載了優秀的換裝系統,對于開發者,有可能大大降低開發難度;對于玩家,則有機會升級游戲體驗.舉例來說,著名的裝扮類游戲《閃耀暖暖》[2]、模擬經營類游戲《模擬人生》[3]、大型多人在線角色扮演游戲《魔獸世界》[4]等,都內置優秀的換裝系統,且換裝系統已成為這些游戲不可或缺的一部分.

然而,獨立游戲開發者想要實現具備換裝功能的游戲,是相當有挑戰性的.原因在于,大型商業游戲工作室基本自研換裝系統,一般不會公開相關技術細節,而國內也沒有成熟的文獻資料供參考.因此,利用換裝系統插件完成換裝功能,成為眾多獨立游戲開發者和小型游戲工作室的首選.

設計換裝系統插件給開發人員帶來以下挑戰:

(1)由于插件的使用者多為美工,所設計插件應使無編程基礎的使用者也能快速上手;

(2)設計換裝系統插件涉及大量建模和圖形學知識,這就要求開發人員對美工職能有較為深刻的理解.

因此,游戲開發者要設計并實現換裝系統插件是有一定難度的.國內學者的研究工作有涉及換裝技術的,例如:楊靜[5]基于HTC VIVE 設計實現了虛擬換裝游戲,李俊等[6]基于人物替換技術實現了模擬試衣間,徐康熙等[7]基于物理方式實現了虛擬換衣系統.然而,這些換裝、試衣系統的功能較為單一,僅能實現特定環境下的基礎裝扮更換,不能稱為真正的換裝系統插件.

目前,市面上開源、開放使用的換裝系統插件寥寥無幾.少量可供使用的換裝系統插件中,功能較為強大的是國外開發者基于Unity3D[8]設計的Unity Multipurpose Avatar (UMA)系統.UMA 系統的特點是開源、易用和功能豐富,但也有缺點,例如:時間、空間復雜度較高;更適用于制作美術模型,而不適合運行時的角色動態合成.

為填補以上空白,論文設計并實現了一個基于Unity3D 平臺的國產、開源換裝系統插件,命名為方舟角色創建器(Ark Avatar Customization,AAC).AAC 插件采用改進的貼圖集生成、編輯器擴展和預制件優化技術,集成換裝、捏臉和換色功能,配合圖形化擴展工具,能夠充分滿足開發者游戲開發過程中的動態、個性化換裝需求.

1 系統總體架構

首先,從軟件工程思想出發,AAC 系統設計時需兼顧功能性、可維護性與可擴展性.同時,依據設計模式所倡導的單一職責原則[9],各個系統模塊應盡量獨立.因此,AAC 插件系統定義了一系列新的、功能獨立的概念,包括:裝扮、種族、角色、基因和染料.各概念具體含義如表1所示.

表1 AAC 插件系統概念定義

1.1 裝扮

AAC 系統規定,以裝扮為基本單位進行角色的合成,并使用字符串標識裝扮所屬的插槽類型.裝扮用以裝備在角色身上,每個插槽同一時間只能裝備一個裝扮.當為角色裝備插槽重復的裝扮時,舊的裝扮將會被替換掉.

裝扮代表了美術模型,可以是上衣、飾品或身體部位(取決于使用者的目的).通常,使用者會將完整模型按照不同部位切分為局部模型,如:頭發、上衣、下衣、鞋子等,再分別制作成裝扮.

系統實現方面,由于模型包含骨骼、網格和貼圖數據,因此裝扮需要存儲它們作為角色合成時的數據依據.為符合單一職責原則,AAC 系統定義了兩個概念分別存儲美術模型數據,它們是:槽位資源和布局資源.槽位資源負責存儲模型的骨骼和網格,布局資源負責存儲模型貼圖,如圖1所示.

圖1 AAC 布局資源和上下文示意圖

需要指出的是,槽位資源為裝扮合成提供骨骼和網格依據,而布局資源的功能不限于提供原模型貼圖.類似Photoshop 的圖層疊加原理,假如將原模型貼圖定義為第1 組上下文,AAC 系統規定:布局資源可以包含一組以上的上下文(見圖1(a)).進行裝扮合成時,從第2 組開始,依次將各上下文疊加至第1 組上下文,最終得到目標貼圖組(見圖1(b)).

這樣設計的好處在于:能夠實現類似“紋身”的裝扮效果.僅需更換“紋身貼圖”,就可以在不破壞、不冗余原模型貼圖的情況下,生成新的目標貼圖.此外,由于“紋身貼圖”一般來說精度不高,系統可以使用較低的分辨率存儲它們以節省空間.結合染料的概念,“紋身貼圖”還可以起到遮罩圖層的作用,即:僅改變“紋身貼圖”中非透明區域的顏色.

圖1中,第2 組上下文的“吃豆人紋身”的有效區域只有很小一部分,但為了與第一組上下文中左邊背心的中心對齊,貼圖預留了很多“黑邊”.為進一步優化內存空間,可以縮小“吃豆人紋身”的貼圖大小,采用記錄偏移值的方式,將“紋身”移動到背心中間.

1.2 種族

AAC 定義種族的目的,是為創建角色提供依據.與現實生活類似,具有相同特征的個體被劃分至同一種族.換言之,種族描述了這些特征的共性.種族的基礎數據定義如下:

(1)骨架描述和人類描述;

(2)裝扮類型描述;

(3)基因描述和基因作用器描述;

(4)染料描述.

其中,骨架描述用來重建角色的初始骨架,人類描述用來創建Unity3D 動畫系統中的標準人類骨架.它們都可以從導入至Unity3D 的模型數據中獲取.

裝扮類型描述定義了某種族可接受的插槽類型.AAC 系統規定,只有處于裝扮類型描述中的裝扮才是有效的、能夠參與角色合成的裝扮.通過配置不同的裝扮類型描述,可以實現為游戲主角(或者其種族)裝備更多部位裝扮、而為NPC (Non-Player Character)裝備較少裝扮的效果.

基因描述和染料描述的含義,將分別在1.4和1.5節中詳細介紹.

1.3 角色

進一步地,為了區分種族中每個單獨作用的個體,AAC 系統提出角色的概念.角色在種族中創建得到,但每個角色可以有各自不同的表現(如:裝備的裝扮不同).系統需要為每個角色單獨存儲以下數據:

(1)裝扮集合;

(2)骨架和Avatar;

(3)基因數據和染料數據;

(4)渲染數據.

其中,裝扮集合存儲了角色當前裝備的裝扮.骨架、Avatar、基因數據和染料數據分別從種族的骨架描述、基因描述、染料描述中創建得到.

1.4 基因

和現實生活中生物的特性由基因決定類似,AAC系統中的基因特指那些能夠影響角色參數的屬性.例如:命名為身高的基因影響角色的身高,命名為肥胖程度的基因影響角色的肚子、手臂和臉等部位.基因作用器則負責產生這些影響.

換言之,基因負責定義角色有哪些受影響因素,基因作用器則定義了這些影響因素如何影響角色.之所以分別定義基因和基因作用器,原因在于:

(1)基因影響的功能十分豐富,如:影響骨骼、影響染料顏色、給角色裝卸裝扮等.為了支持這種靈活性,AAC 系統定義了不同類型的作用器以匹配相對應的功能;

(2)某些基因的改變需要多個基因作用器共同作用才能實現.最直觀的例子,肥胖程度基因需要修改肚子、手臂、臉等多個部位,分別對應著多個不同的基因作用器.

圖2展示了基因和基因作用器的工作原理.當角色從種族中創建時,會讀取并包裝基因,成為基因數據.當基因數據中的數值發生改變時,AAC 系統會將與此基因相關的基因作用器應用至角色身上.

圖2 基因和基因作用器工作原理圖

1.5 染料

AAC 系統定義了染料的概念以實現換色功能.和基因的定義原理類似,染料指那些能夠改變裝扮顏色的名稱.例如,上衣的裝扮中有上衣顏色染料,通過修改染料,可以修改上衣裝扮的顏色.

換色的原理本質上與圖1布局資源中多組上下文合并的原理是一樣的.區別在于,此時第二套上下文中的貼圖是純色的,而非“紋身”.

具體實現方式為:當角色從種族創建時,會讀取并包裝其為染料數據.增加兩個顏色參數(乘性因子Multiple和加性因子Additive),分別作為乘法因子乘以貼圖顏色和作為加法因子加在貼圖顏色上,以獲取換色后的目標顏色,見式(1).

其中,Cold為目標顏色,Cols為原貼圖顏色.

綜上,AAC 系統概要設計圖如圖3所示.由圖3可見,基于Unity3D 的編輯器擴展技術,AAC 插件通過提供圖形化界面和擴展工具,使零編程基礎的使用者也能輕松上手,完成自定義游戲角色的換裝功能.

圖3 AAC 插件系統概要設計圖

2 系統實現關鍵技術

2.1 基于切割擴展的貼圖合并算法

AAC 插件以裝扮為單位進行角色的合成,包括骨骼合成、網格合成和貼圖合成.貼圖的合成結果稱為貼圖集,又名紋理集.盡管Unity3D 平臺提供了紋理集合成的接口函數,AAC 系統卻無法調用.原因在于,角色合成過程中需要用到染料,而Unity3D 并不支持這一AAC 系統自定義概念.因此,需要自行設計并實現貼圖合并算法.

貼圖集生成是計算機圖形學中提高計算機生成貼圖利用率的技術[9].在貼圖集生成、優化方面,國內外已有大量的研究工作.例如,Maillot 等[10]提出交互式紋理映射方法,Lévy 等[11]提出基于最小二乘保角映射的方法,Purnomo 等 [12]提出無縫紋理圖集的概念,宋歌等[13]提出基于動態空間合并的算法,詹勇[14]提出針對重復紋理的合并算法,戴雪峰等[15]提出基于貪心算法和退火算法的混合算法.論文在現有研究成果的基礎上,針對AAC 系統對時間空間敏感、游戲模型貼圖尺寸通常等于2 的整數次冪的特點,實現了一種基于切割擴展的貼圖集合并算法,主要包含兩個過程:

(1)切割過程:以空閑空間(Free Room,FR)表示貼圖集中的空白區域;向其插入一張貼圖將會切割得到若干個更小的FR;不斷地將貼圖插入這些FR 并進行合并(見圖4(a)至圖4(c));

(2)擴展過程:當貼圖較大,無法插入任一現有FR 時,放入更大的FR 進行擴展(見圖4(d)).

圖4 AAC 貼圖集生成、切割與擴展示意圖

AAC 系統貼圖合并算法的關鍵代碼如代碼1 所示.其中,FRL 代表空閑空間鏈表,Stex代表待合并的貼圖集合,Srect代表貼圖集上的矩形集合,CAW和CAH分別代表當前圖集的寬度和高度.

2.2 編輯器擴展

為了使美工和程序開發人員都能方便地使用,AAC系統設計了圖形化操作界面,使用者無需編寫代碼即可調用相關API.通過Unity3D 平臺提供的編輯器擴展功能,用戶甚至能制作出無需編寫代碼就能開發游戲的開發套件[16].此外,Unity3D 開源了C#引擎和編輯器代碼[17],二者均為實現編輯器擴展的利器.

具體來說,與圖形界面軟件開發原理類似,AAC系統通過Unity3D 提供的繪制組件接口,在窗口內逐個繪制組件,并響應用戶輸入,以及執行不同的邏輯操作,包括:

(1)裝扮制作:提供裝扮快捷制作擴展工具;

(2)種族制作:提供裝扮類型編輯器、基因編輯器、基因作用編輯器、染料編輯器;

(3)角色快速編輯擴展工具:包括修改角色種族、裝卸裝扮、修改基因、修改染料、修改紋理集大小、序列化和反序列化、保存為預制件等.

代碼1.AAC 系統貼圖合并算法關鍵代碼開始//初始化FRL,放入適當大小的FR Init FRL with a appropriate_size_FR// 設置CAW和CAH與此FR 的寬高一致CAW=appropriate_size_FR.w CAH=appropriate_size_FR.h// 對按照面積從大到小排序Sort S_tex by area from largest to smallest For tex in S_tex// 循環直到從FRL 中找到合適的FR S tex

While( !FindFirstBestFit( tex,out FR) )// 若沒找到,則進行擴展Expand()// 向S_r 中添加此貼圖所處的矩形S_r.Add( Rect(FR.x,FR.y,tex.w tex.h))// 切割此FR,并添加進FRL 中FRL.Add( FR.Sqlit( tex ) )return S_r,CAW,CAH結束?

圖5展示了AAC 系統編輯器擴展示例圖,包括:槽位資源編輯器、布局資源編輯器、裝扮資源編輯器、基因作用器編輯器、燃料編輯器、裝扮類型編輯器、基因描述編輯器、種族編輯器、裝扮制作擴展工具和角色快速編輯擴展工具.

圖5 AAC 編輯器擴展圖

2.3 預制件優化

AAC 換裝系統中,每個游戲角色是獨立的.因此,系統會為每個角色分配獨立的內存.但是,假如兩個角色的數據完全相同,例如:擁有相同的裝扮、基因和染料,系統仍然得為它們維護兩份獨立內存,從而產生數據冗余.

傳統方法利用Unity3D 提供的預制件技術來減少這部分數據冗余.預制件是一種可重復利用的游戲對象資源類型[18],所有從預制件實例化得到的游戲對象都有與預制件相同的對象數據.換言之,若將游戲角色制作為預制件,通過預制件實例化,這些對象實例將共享相同的網格和紋理集,從而減少冗余數據(原理見圖6).

圖6 Unity 3D 預制件技術原理圖

然而,由圖6可見,基于Unity3D 的預制件方法在制作過程中僅保留了渲染數據中的網格、貼圖集和骨架信息,丟失了裝扮、基因數據、染料數據和種族信息.也就是說,該方法不具備換裝功能.

為了既減少空間開銷又保留換裝功能,AAC 系統設計了保留換裝功能的預制件,具體實現方式如下:

(1)生成預制件的同時,將角色的種族及附屬資源一并寫入預制件中;

(2)當從此預制件實例化時,將會加載這些資源,從而獲得所有的系統功能.

實際應用時,建議開發者通過以上方式制作一個類似“素體”且保留換裝功能的預制件.所謂“素體”,是指只有基本裝扮(如軀干),沒有修改過基因和染料的角色.在此開發模式下,只有額外的裝扮才會產生渲染數據,“素體”部分的空間占用是共享的.因此,與不使用AAC 預制件優化技術的情形相比,此方法將大幅度減少冗余空間,提高換裝速度.

3 示例程序與性能分析

3.1 換裝示例程序

我們設計和開發了一個能調用AAC 插件的換裝示例程序以展示換裝效果.程序建模工作流包括:(1)制作模型;(2)在線綁定骨骼和蒙皮;(3)對模型進行加工處理.

由圖7可見,添加AAC 插件后,換裝示例程序具備了捏臉、換裝、換色等功能.其中,捏臉功能不局限于臉部基因的改變,也包括身體各部位的變化;換色功能既包括裝扮(如帽子、上衣等)顏色的改變,也包括基因(如膚色、眼球)顏色的變化.

圖7 AAC 插件換裝功能展示

3.2 性能比較與分析

3.2.1 時間開銷

本節對不同裝扮數量下AAC與UMA 系統的時間開銷進行比較(見表2),結論如下:

表2 不同換裝系統、不同裝扮數量情況下時間開銷比較(單位:ms)

(1)對于不同的裝扮數量,游戲角色進行換裝合成所消耗的時間是不同的.無論哪種系統,時間開銷均隨裝扮數量的增長呈正比例增長.

(2)大部分情況下(更換裝扮數量少于7 件),AAC系統比UMA 系統的時間開銷小;當裝扮數量接近上限,AAC 系統性能與UMA 系統性能持平.

3.2.2 空間開銷

本節比較的是隨機裝扮數量下AAC與UMA 系統的空間性能(見表3).實驗條件:創建相同數量、隨機裝扮的角色;觀察對象:創建前后系統內存的使用情況.

表3 不同換裝系統空間開銷比較(單位:MB)

需要說明的是,由于網格和貼圖集占用內存的比例最高,因此僅以網格和貼圖的內存空間占用量作為代表進行比較.本實驗中,網格頂點數不少于25 000 個,貼圖集尺寸約為2–4 KB.

實驗結論如下:

(1)相同內存占用下,AAC 系統容納角色的數量接近UMA 的4 倍.

(2)相比UMA 系統,AAC 系統的時間空間復雜度更低,更適合用于運行時的角色動態生成任務.

4 結論與展望

本文設計并實現了一個基于Unity3D 平臺的換裝系統插件:方舟角色創建器,簡稱AAC 系統.該系統具備游戲角色換裝、捏臉、換色等功能.通過編輯器擴展技術,該插件可提供圖形化操作界面,令使用者無需具備編程基礎也能輕松掌握.再結合預制件優化技術,AAC 系統在完整保留系統換裝功能的同時,還可進一步提高系統的時間和空間利用率,使換裝系統適用于運行時角色動態生成的應用場景.

需要指出的是,AAC 系統也存在一些不足,如:(1)與UMA 系統相比,缺少高級功能;(2)未設計資源管理組件.進一步完善AAC 插件功能,將是未來的研究工作重點.

猜你喜歡
游戲功能系統
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
關于非首都功能疏解的幾點思考
數獨游戲
瘋狂的游戲
飛碟探索(2016年11期)2016-11-14 19:34:47
爆笑游戲
第八章直接逃出游戲
小學科學(2015年7期)2015-07-29 22:29:00
主站蜘蛛池模板: 国产午夜福利亚洲第一| 亚洲欧洲日韩国产综合在线二区| 国产性猛交XXXX免费看| 国产毛片基地| 国产亚洲视频免费播放| 精品久久人人爽人人玩人人妻| 小蝌蚪亚洲精品国产| 亚洲一区精品视频在线| 国产毛片网站| 国产精品手机在线观看你懂的| 成人免费午夜视频| 国产91在线|日本| 99久久国产综合精品2020| 国产成人综合亚洲网址| 欧美.成人.综合在线| 国产精品妖精视频| 日本午夜视频在线观看| 91麻豆国产精品91久久久| 日韩精品一区二区深田咏美| 美女扒开下面流白浆在线试听| 欧美激情成人网| 最近最新中文字幕在线第一页| 动漫精品中文字幕无码| 日本精品视频| 青青草一区二区免费精品| 国产精品九九视频| 国产精品永久免费嫩草研究院| 欧美亚洲一二三区| 蜜臀AV在线播放| 欧美日韩一区二区在线播放| 久久婷婷综合色一区二区| 国产高清国内精品福利| 999在线免费视频| 麻豆精选在线| 亚洲an第二区国产精品| 亚洲精品爱草草视频在线| 中文字幕在线播放不卡| 91成人在线免费观看| 久久这里只精品国产99热8| 亚洲AV无码精品无码久久蜜桃| 免费毛片全部不收费的| 亚洲精品视频免费观看| 2022国产无码在线| 国内99精品激情视频精品| 久久亚洲黄色视频| 国产拍揄自揄精品视频网站| 国产精品午夜福利麻豆| 亚洲熟女中文字幕男人总站| 久草热视频在线| 99久久这里只精品麻豆| 国产免费观看av大片的网站| 精品黑人一区二区三区| 伊人成色综合网| 精品人妻一区无码视频| 国产微拍一区二区三区四区| 久久综合丝袜日本网| 99热这里只有精品国产99| 亚洲中久无码永久在线观看软件| www.亚洲一区| 无码精油按摩潮喷在线播放| jizz在线免费播放| 9久久伊人精品综合| 亚洲V日韩V无码一区二区| 精品一区二区三区水蜜桃| 97在线公开视频| 久久美女精品| 国产精品浪潮Av| 午夜精品区| 亚洲中文字幕日产无码2021| 一区二区自拍| 最新国产精品鲁鲁免费视频| 一本色道久久88综合日韩精品| 九九久久精品国产av片囯产区| 国产高潮流白浆视频| 国产精品美人久久久久久AV| 激情六月丁香婷婷四房播| 日本黄网在线观看| 久久精品嫩草研究院| 国产人人乐人人爱| 538精品在线观看| 久久无码av三级| 国产成人综合久久精品下载|