オススメ機能
Twitter
お気に入り
記事履歴
ランキング
4Gamer.net
お気に入りタイトル/ワード

タイトル/ワード名(記事数)

最近記事を読んだタイトル/ワード

タイトル/ワード名(記事数)

LINEで4Gamerアカウントを登録
[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
特集記事一覧
注目のレビュー
注目のムービー

メディアパートナー

印刷2019/03/22 00:00

イベント

[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

Alen Ladavac氏(CTO,Croteam)
画像(002)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
 GDC 2019の初日となる2019年3月18日(北米時間),会場では1日かけてゲームグラフィックス関連の最新技術を開発スタジオ自らが紹介していく「Advanced Graphics Techniques Tutorial」という技術コースセッションが行われた。
 本稿ではこの中から「Serious Sam 4: Planet Badass」(以下,SeriousSam 4)の地形レンダリングを取り扱った「Advanced Graphics Techniques Tutorial: Four Million Acres, Seriously: GPU-Based Procedural Terrains in 'Serious Sam 4: Planet Badass'」(Serious Sam 4: Planet Badassにおける400万エーカーのGPUベースのプロシージャル地形生成技術)をレポートしたいと思う。登壇したのは,同作の開発を担当したゲーム開発スタジオCroteamでCTOを務めるAlen Ladavac(アレン・ラダヴァック)氏だ。

画像(006)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
画像(005)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用 画像(004)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 まずは,実際にセッション中にも流されたSeriousSam 4の公式プロモーション映像再生してみてほしい。


 この映像からも,本作はとてつもなく広大な地形表現を実現できていることが感じ取れるのではないだろうか。この広大な地形表現をどのように実装したのか,その種明かしを行ったのが,このセッションでである。

 まず語られたのはこの地形表現のグラフィックス仕様だ。
 Ladavac氏によれば,本作では取り扱うゲーム世界は128×128km四方となったそうで,かなり規模が大きい。
 地形表現用のテクスチャは,最高精度表現では1mあたり1024テクセルを割り当てており,1ピクセルが1mm×1mmに割り当てられるイメージだ。地形の凹凸解像度(Elevation Detail)は,1mあたり64頂点程度。つまり,分解能としては1ポリゴンの一辺が約1.5cm程度のイメージとなる。ジオメトリおよびテクスチャの分解能は相応に高いと言える。

目標として設定したゴール仕様
画像(007)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 いきなりだが,ここで余談。Ladavac氏のスライドでは距離の表現128「km」が128「kim」となっているが,これは本作におけるプログラム上では1kmを103mではなく,210(=1024)mとして扱っているためだ。同様にmmもmimと表記されている点に留意したいが,一般読者ならとくに意識をしなくても問題ないだろう。

 さて,上記の仕様でそのまま地形を制作してデータ化すると,1mあたり64頂点だと,128×128kmの地形データは,約800万×800万頂点のポリゴンで表現され,総頂点数は約640億となる。ポリゴンデータに換算した場合の総データ量は100TBになる見積もりだ。
 ちなみに,分解能を下げて1mあたり1頂点にしたとしても,総データ量は約32GBになるとのことなので,アクションゲーム向けの地形データとしては,これでも大きすぎるという判断になったようだ。

 いっそのこと,ランタイムでリアルタイムにプロシージャル生成する方法も実験してみたが,今度は品質やパフォーマンスの面で納得がいかなかったとLadavac氏。
 そこで,128×128kmの地形を階層構造で表現するデータ構造とし,実際のランタイムでの描画では,事前モデリングした地形構成パーツ(草木,岩石など)と,要所要所をプロシージャル生成した地形パーツを組み合わせて作っているという,「手動デザイン」と「プロシージャル生成」の両方を織り交ぜたハイブリッド手法の実現を目指すこととなったという。

 まず,128×128km(※ただし1km=1024mとする)の地形において,これを最も粗い分解能である4096×4096テクセルへ割り当てる。すると,

  128×1024÷4096=32

となる。1テクセルで32×32mのタイルを最も粗い分解能の地形データとして地形情報を表現するわけだ。以下,各解像度のタイルを地形タイルと表記する。

 このとき,最も分解能の細かい地形タイルは1枚あたり25×25cmで表現される。つまり地形タイルは32×32mの粗さから25×25cmの細かさまでの階層構造で地形データを表現することとなる。この地形タイルは最も細かい分解能では33×33頂点,すなわち32×32ポリゴンで構成される。

地形タイルの階層
画像(008)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 この階層構造の実装にあたっては4分木構造(1要素が最大4要素の子ノードを持つことができる木構造:Quadtree)が採用されている。そして各ノード(≒地形タイル)は凹凸情報,植物の植生情報,テクスチャとしてのアルベド情報などのマテリアル情報を持っている。

スライドのマゼンタ色の格子が最も粗い地形タイル(32×32m)。中央付近に黄色や水色のさらに小さい四辺形が見えるが,1つの地形タイルがさらに小さい4つの地形タイルからなっている構造が4分木構造である
画像(009)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 この「テクスチャとしてのアルベド情報」は,その地形タイルが,視点から見て最も遠方になったときに,そのまま描画される「色」の情報となる。例えば,その地形タイルが森の一部だった場合は濃い緑色あたりが「テクスチャとしてのアルべド情報」として表現されるわけである。
 この地形タイルが視点から近ければ,ちゃんと実体のある樹木がその位置に生成されたり,草が生やされたり,斜面として生成されたりして描画されるが,視点から超遠方にあれば,平坦な「濃い緑」色の1ピクセルとして描画される。超遠方になると32×32mという比較的大きな領域であっても1ピクセルサイズまでに小さくなってしまい,立体物としての木として描画するまでもないからだ。

 この手法で地形データを取りまとめてみたところ,総データ量は約200MBとなり,この程度あれば(HDDから必要に応じて読み出す必要もなく)オンメモリで置いておくことができる。

右下の画面はもっとも粗い32×32mの地形タイルをそのまま1ピクセル相当で描画したもの。「衛星写真のような表現となる」とはLadavac氏の弁
画像(010)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 前述したように地形タイルは複数のマテリアルデータを持つことができる仕様となっており,植物の植生情報はもちろん,砂,草地,土,岩肌,雪といった情報を持つことができる。また,異なるマテリアル同士が重なり合うことにも対応する。

異なる地形の種類を緩やかに遷移させる表現にも対応。遷移部分は濃淡テクスチャとノイズテクスチャを掛け合わせて線形補間(Linear Interpolate:Lerp)している
画像(011)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
岩肌と草地が斑(まだら)に混ざり合う事例
画像(012)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
異なる地形種類を遷移させるときにシンプルな線形補間ではなく,高さにも配慮するとさらにリアルになるというスライド
画像(013)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
左は窪んだところに草が生えている表現。右は高い石畳が草地から顔を出している表現
画像(014)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 また,地形タイルは凹凸情報を持つことができるので,単なる斜面だけでなく,複数の周波数のノイズが畳み込まれた算術ノイズ(※パーリンノイズなど)を種にして垂直および水平方向の凹凸表現にも対応できる。
 垂直方向の凹凸表現というのは,いわば直上の空に向かって凹凸を生成するもの。水平方向の凹凸というのは例えば「張り出した崖」や「えぐられた浅い凹み(横方向の穴)」のような凹凸だ。

地形タイルに仕込まれた凹凸情報に従ってそのまま描画した状態
画像(015)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
マルチバンドノイズを種にして垂直方向の凹凸をプロシージャル生成した状態
画像(016)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
同様に水平方向の凹凸をプロシージャル生成した状態。「垂直方向の凹凸生成は過去にも採用したゲームタイトルがあったが,水平方向の凹凸生成までを地形生成に適用した事例は我々以外に見たことがない」とLadavac氏
画像(017)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 この地形の凹凸表現は,視点から比較的近い位置では実際にポリゴンの組み合わせで表現される凹凸として描画されるが,視点から遠くなると,法線マップによるバンプマッピングに置き換わる。実に手が込んでいる。

中央の遠方の山の頂上の岩肌の凹凸表現は法線マップによるフェイク
画像(018)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 マテリアルデータは石畳や畑,そのほかの人間の手が入った人工物の埋め込みにも対応する。さらにフォトグラメトリで生成したテクスチャを貼り付けるような複雑な形状のオブジェクトも埋め込める。そうしたマテリアルは,アルベド,法線,鏡面反射率などのパラメータを持つことになる。

石畳などの人工物などはフォトグラメトリなどの技術を活用して生成している。こうしたハンドメイドのオブジェクトや材質を組み込むことができる設計になっている
画像(019)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用


凝りに凝った樹木の生成システム


 草木などの植物は,地形タイルごとに設定されている植生データに基づいてランタイム上でリアルタイム生成される。
 植生データとは「どの種類の植物」が「どの向き」で「どのくらいの位置」に「何色」で生えているかなどテクセル単位でを示すものだ。「どの向き」というのは,回転を意味している。現実世界の樹木は1本1本が個別の形状をしているが,ゲームではさすがに数万本の樹木をモデリングするわけもいかないので,ハンドモデリングした樹木モデルを数バリエーション用意しておき,向きを変えて植えることで形状バリエーションがいっぱいあるかのように見せているわけだ。
 1本の木を,前から見たときと左から見たときとでは形状が違って見えるのは想像がつくと思うが,それをランタイム時の植え込みの際に処理するわけである。

事前にデザインした植生データに基づいてランタイムで森林はリアルタイム生成して描画する
画像(021)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用
数バリエーションの樹木モデルであっても,拡大縮小や回転,色を微妙に変えることで無数の種類があるように見せている
画像(022)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 上で,はるか遠方の地形タイルは1ピクセルで描画されてしまうこともあると述べたが,同様に樹木を3Dモデルとして描くのは視点から近いものだけで十分だ。
 本作では,ある程度距離の離れた位置にある樹木は,ビルボード(いわゆる2Dスプライト。スライドではImposter:ニセモノ)描画を行う。3Dモデルとしてモデリングされた樹木をテクスチャマップとして生成しておき,これをポリゴンに貼り付けて,プレイヤー(視点)に向けて描画するのだ。

 Ladavac氏は,3Dモデルの樹木を8方向から描画したテクスチャを事前に生成しておき,プレイヤーからその樹木を見たときの角度に一番近い二つの角度バリエーションを選択し,それらをブレンドして描画していると説明していた。この手の手法は,注意深く見るとビルボードから実体3Dモデルへと描画が切り替わるタイミングに気が付くが(いわゆるポッピング現象),樹木が立ち並ぶ森の中であればほとんどポッピングは知覚されないとのことである。

左右どちらかが3Dモデルでどちらかがビルボード。「どっちがどっちだか私も忘れてしまった。見分けがつかない」とLadavac氏
画像(023)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 というのも,確かに2Dのビルボードに描画されるフェイクな樹木ではあるのだが,各樹木のビルボードは深度情報,自己遮蔽情報,法線情報,表面下散乱材質情報などを含むため,実体3Dモデルには及ばないまでも,それに近いレベルのライティング,影生成が適用されるためだ。そう,ビルボードの中の2D樹木は,「元の3Dモデルと同等」とまではいかないものの,太陽光の向きに応じた陰影やセルフシャドウまでが再現されるのである。

ビルボード化された樹木は,2.5D的な情報を保持しているのでライティングや影生成にも対応している。なのでかなり立体的に見え,光が動けばその陰影も変化するのだ
画像(024)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

草も植生データに基づいてランタイム時にリアルタイム生成される。遠方から手前に向かって描画するだけで,草の前後関係は無視して重ね描きしている。花の咲いた植物に関してはα抜き処理を行っているとのこと
画像(025)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 こうして見てくると,本作の地形設計と実装のアプローチは「手を掛けて制作したい部分はハンドメイドで」「そこまで手を掛けなくてもよいところはプロシージャル技術で」というアプローチになっており,プロシージャル技術を作業効率アップやデータ効率改善のために使っていることが見えてくる。
 おそらくこの制作スタイルが,現在のプロシージャル技術でちょうどよい使い方なのではないだろうか。

地形制作ツール上でアーティストがマップ上に曲線を描き,それを道路と指定すると,自動的にそこが道路として地形の凹凸が均され,マテリアル生成もされる仕組みだ。プロシージャル技術はランタイムだけでなくツール上にも適用されているということである
画像(020)[GDC 2019]「Serious Sam 4」は地形生成にハンドメイドとプロシージャル技術を組み合わせたハイブリッド技法を採用

 本作は,開発開始のアナウンスが行われたのが2013年で,その開発期間はかなりの長期にわたっている。2019年3月時点でも発売日は未定となっているだけに,このまま本当に完成するのかがちょっと不安なところもあるが,今回の発表は,ある意味,順調に開発が進んでいることの中間報告にもなっており,ファンはちょっと安心したのではないだろうか。
 ただ,セッション中,「今のところはこういう仕様になっているが,完成版はそのままとなるかはまだ分からない」というような言い回しが何度かあったので,すぐに完成するという感じもしないのが気になるところだ。ファンは開発チームを信じて,とにかく完成を待つことにしよう。

「Serious Sam 4: Planet Badass」公式サイト

  • 関連タイトル:

    Serious Sam 4: Planet Badass

  • この記事のURL:
4Gamer.net最新情報
プラットフォーム別新着記事
総合新着記事
企画記事
トピックス
スペシャルコンテンツ
注目記事ランキング
集計:05月19日〜05月20日