tft每日頭條

 > 遊戲

 > 3d遊戲烘焙貼圖

3d遊戲烘焙貼圖

遊戲 更新时间:2025-02-11 10:06:44

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)1

引言

瓷磚在遊戲開發中的作用可以說非常巨大,哪怕在現在的2016年,依舊有非常多的遊戲地表都是用有限的瓷磚拼起來的,除了id的mega texture以外,這裡面的原因恐怕是不言自明的,因此我這段時間主要研究了一下這裡面的一些技術問題,當然該問題跟美術相關性也比較大。

最早的瓷磚遊戲

早期在紅白機的幾乎所有遊戲都是瓷磚的,但是其中印象最深的或者最low的應該是dq1代,他的畫面是這樣的。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)2

從這個遊戲的畫面可以明顯的看到人為的瓷磚拼接痕迹,應該說瓷磚完全就是按類型劃分的,中間完全沒有過渡。 同樣的位置,在sfc時間,已經變成了這樣。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)3

我們隻看地形的話,特别是水與草地的連接區塊,已經明顯看到了有過渡,當然這種過渡本質上是美術做了第二個草地瓷磚導緻的。 順便說一句,dq1代是1986年出的,sfc版本在1993年同2代一起推出。

對于美國人來說,同樣的圖像進化印象最深的應該在Ultima IV到Ultima V的跨越。

瓷磚存在的問題

使用瓷磚的首個問題恐怕跟現實中的一樣,就是很明顯的人造物體,而在遊戲中,由于大量需要拟自然的草地,河流等,現在瓷磚首先需要處理的問題就是防止看起來像人造草地,人造河流。 其次是平滑的過渡,自然界的絕大部分地表與地表之間是有合理過渡的,比如草地與沙地,森林與草地等,而不會出現生硬的分割,比如dq1的fc版本。 最後一個問題是美術制作上的,如何生成一個可無限平鋪的瓷磚,這個在技術上有一些手段,當然主要的處理還是在美術上。

瓷磚過渡

最簡單的瓷磚過渡自然是人肉的方式,比如設計師在設計關卡的時候,根據周圍的瓷磚選擇應該選擇的瓷磚,而美術在制作的時候就會制作一些過渡瓷磚,比如dq1 sfc版中主角的與水相鄰的草地,就有明顯的水花,這也與現實生活的觀感一緻,設計師在設計大地圖的時候選中這塊瓷磚即可。

但是關卡設計師如果每次想做個草地都要進行類似的判斷,明顯是一件愚蠢的行為,因為采用哪個瓷磚完全可以程序化,簡單的說這個邏輯相當簡單,完全可以用程序解決,而關卡設計師隻要用填充工具填充一個草地即可,不需要關心用哪個過渡草地貼圖。

如何處理瓷磚過渡

簡單的計算下瓷磚過渡所需的塊數。

首先是最基本的一個類型一個瓷磚,那麼塊數顯然是1。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)4

下圖是我們預期達到的效果:

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)5

看上去有點複雜,怎麼計算需要多少塊草瓷磚與水的過渡呢,以上圖中三面環水的瓷磚舉例,可以看如下的抽象圖

1 0 0

0 # 0

1 1 1

#即那個瓷磚塊,由這這個簡易的抽象圖可以明白,實際上采用那個瓷磚塊由周圍的8個格子決定,所以排列組合有2^8個,即256種組合,而這僅僅是草與水的組合,如果草與沙、泥土等那不得是天文數字。

所以下一步就是如何優化這個組合數量,可以看到這種組合排列方式有是以地形類型在圖形中間為準的,即我們的思維方式是草,另外可以看到剛才抽象圖中左上角的1對#号并沒有相互影響的關系,也就是說,組合排列方式未必是相乘關系(當然想做的更好還是可以做不一樣的,這兩個草地相挨比較近,按道理中間應該有淺灘)。

現在來說一些詳細的對策,對策一就是将4個邊緣及4個對角的圖片拆開處理,在程序中在動态合并起來,這樣的話就隻需要2^4 2^4 = 32個圖片即可解決此問題,這種辦法可以參見此文。

對策二就是去除一些在遊戲中不會出現或者不需要處理的過渡區塊,比如剛才的草地對角(剛才也解釋了,在這種情況下,實際上有會更好),對角外牆的銜接,這種處理往往在牆這種材質中比較常出現,适合泰格瑞亞這類遊戲,具體可以參考此文中的Blob模式(僅需要47塊),應該來說非常适合做此類遊戲。

對策三是最常使用的招數,絕大部分遊戲都使用此處理方式,那就是将瓷磚類型信息放在對角進行考慮,這樣2^8 就直接變成了2^4即16個瓷磚組合。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)6

當然這種方式也有幾個問題,因為整體瓷磚有偏移,所以地表需要做偏移量,否則與人物等上層圖層會有偏移。另外一塊瓷磚就不僅僅是一個類型信息了,而是有四個類型信息,也就是占用内存會更多點。

在遊戲應用上還有一種瓷磚過渡方式與此方式完全不同,過渡塊實際上是一個單獨的圖片,程序會在遊戲運行時動态用過渡塊混合原始圖片,這樣美工的工作量很少很多,而且過渡塊可以通用于很多資源,下圖說明一切。

原理圖

效果圖

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)7

當然這種通用出來的過渡模闆不可能通用一切類型,一般需要多個類型之間做幾種,比如這個是我從帝國時代中截圖得到的不同過渡塊模闆。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)8

瓷磚類型間的過渡

剛才讨論的僅僅是兩種瓷磚間的過渡,我們成功将256種可能縮減到了幾十個,而如果有其他類型相互組合又如何處理呢,比如水與沙地,是否要重新制作幾十個過渡塊?

這個解決方法也有許多,比如在真實世界中,水一般不太可能跟磚塊,鐵等相互銜接,所以一般制作上不會按n*m的方式制作所有過渡塊,隻會在需要的時候制作即可,待會我們介紹Tiled編輯器的時候可以看到他是如何記錄多個類型之間的過渡的。

另外一種處理方式比較讨巧,就是定好多個類型之間的層級關系,比如草地一定是在水上方,而岩石一定是在草地上方,而圖片原型含有透明度,遊戲運行是按層級做透明混合即可(war3即是這樣的處理方式)。

2D遊戲中的瓷磚過渡

下面我想舉一些遊戲中的例子,來說明下以上的做法。

編輯器Tiled

目前Tiled應該是2d瓷磚編輯器的王者,基本上包含了一個直接可用的瓷磚編輯器,另外他在0.9的版本新增了地形元素,包含了瓷磚過渡的功能。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)9

可以看到沙地與鵝卵石、普通路面間均有過渡,另外操作上也很直觀,采用的是方案三,即4斜角判斷類型的方式,所以僅需16塊瓷磚(實際上隻需要15塊,沒有全是0的可能)即可自身瓷磚做任意平鋪。不需要對角銜接的情況還可以去除兩塊。 具體的操作可以查看Tiled文檔嘗試一下。

泰格瑞亞

泰格瑞亞的采用比較極端,在Reddit上有泰格瑞亞美術的回答,他們使用的是256個過渡塊,這個美術同學滿是吐槽,我扒了下電腦上泰格瑞亞的遊戲,還真是。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)10

這個美術同學說,如果重新設計的話,他比較希望采用47塊的那種方式,當然這種方式會導緻對角塊沒有銜接,但是問題不大。

Starbound

Starbound是泰格瑞亞團隊成員重新創立的一個科幻版的類泰格瑞亞,我沒有仔細玩過,不過我特地研究過了一下他的tile拼接方式,發現他的格子是這樣的。

瓷磚非常小。另外外部的銜接塊隻有4px,中間的塊則是8px,我第一眼的直覺就是,這個應該還是類似方案三的過渡方式,上面的8×8的應該是對角銜接。于是我用ps重新做了下透明像素填充,為了能在Tiled中直接使用,于是這個泥土塊變成了這樣。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)11

由此來看,泰格瑞亞的瓷磚過渡塊是非常不人道的。順便說下,starbound和饑荒的關卡編輯都是用Tiled制作的,雖然他們都包含了絕大部分程序化的世界生成,但是有非常多的套路關卡直接用Tiled設計了。

RPG Maker VX

這個是做RPG遊戲非常有名的編輯器,出名的遊戲我就不列舉了,而這個編輯器給我最大的印象就是我在08年用js做一個rpg引擎時,一直苦惱于如何程序化銜接每個類型的瓷磚,而這個編輯器打開用,我很驚豔于他直接可用的過渡瓷磚,但是當時因為時間有限,并沒有去深入研究他的實現,現在因為本篇文章的整理,基本上明白了他的實現原理就是我的類似方案三的實現,隻不過他的地表應該是自帶偏移了。他的磚塊集如下,為了更明确的明白他的實現,我特地在一個可銜接磚塊上标注了1到6。

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)12

不過我的标注應該是錯誤的,他實際上應該是13塊的實現,即沒有對角過渡。

3D遊戲中的瓷磚過渡

3d遊戲中普遍還是瓷磚地圖,隻不過絕大部分可能用了紋理混合達到細微調整。

魔獸争霸3

war3實際上在上面已經提到了,他使用15塊過渡瓷磚做的地表,另外明确多個地表類型之間的層級關系,不過由于是3d遊戲,有光照和陰影對場景的影響,所以導緻看上去紋理并沒有明顯的重複。

下圖是我用Tiled設定的war3草地圖

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)13

與上面不同的是,war3有對角銜接圖。

DotA2

DotA2的平面地表是可以做多材質,多紋理的混合的,而且混合效果非常好,銜接區塊是不需要制作的,完全是用程序混合生成。

Wang Tiles

除了邊角處理以外,中間都相交的區塊重複度還是很高,所以一般遊戲基本上都會做多套随機使用,比如war3的圖片,明顯是有非常多的中間區塊用來随機使用的,有沒有更好的辦法将這種重複感覺進一步弱化呢,答案是Wang Tiles。

本質上就是将随機選取中間塊變成了根據更加多元化的邊界及樣式将人造感弱化。

流亡黯道

流亡黯道的處理方式跟上文的瓷磚過渡沒有太大關系,主要是使用了wang tiles的做法,做了一個比較不錯的應用,我把他放在這裡,官方這個教程很不錯,主要是美術同學如何制作可以用來做wang tile的教程。

其他方案

上文的瓷磚過渡方案主要都是美術制作的,而目前市面上3d遊戲另外一部分制作是通過程序混合的,類似地形高度圖的使用,應該是生成了專門的筆刷圖或者頂點屬性,在地圖加載的時候動态混合出來使用的。 這樣的話,美術可以直接在地圖編輯器裡作畫,可以節省更多的美術資源,不過效果如何還是要看美術的功力。

比如在Dota2 Workshop中的這裡文章中可以看到應該是在頂點中存了同個材質不同紋理在頂點的所占比重達到了混合效果,從dota2實際效果看,混合得挺不錯的。

遊戲樣例分析

饑荒

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)14

饑荒的地表明顯是Blob模式,即47塊,每塊為136像素 比較特别的是,饑荒的地表跟Blob模式是反向的,即實際操作中對應Blob模式的實物居然是空地,我在簡單實現中發現,饑荒應該在設計階段用的是1,0等簡單的标示地表類型,而通過程序動态算出使用的區塊的,因為如果是地表編輯的時候使用此方式,那麼筆刷很難操作。

帝國時代

3d遊戲烘焙貼圖(關于遊戲開發中瓷磚貼圖的過渡)15

帝國時代的地表也是Blob模式,雖然有很多重複的上下左右貼圖,不過那些應該在遊戲中隻是減少重複感使用的。 不過帝國時代需要銜接的地表類型比較多,所以通用了一個Blend紋理。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关遊戲资讯推荐

热门遊戲资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved