この記事の3行まとめ
- Unity Technologies、クライミングシミュレーションゲーム『Cairn』の岩壁レンダリング手法を紹介した記事を公開
- 洞窟内部などの複雑な立体形状を制御するため、2Dブレンドマップから3Dブレンドマップへ移行
- GPUによる岩肌の描画とCPU側でのピトン禁止エリアの座標判定を同期させるため、Compute Shaderを導入した事例なども紹介
Unity Technologiesは同社公式ブログにて、『テクニカルアートの詳細解説:Cairnが3Dブレンドマップを使用して、ゲームプレイに特化した岩のマテリアルをどのように描画するか』と題した記事を公開しました。
(画像は記事本文より引用)
クライミングシミュレーションゲーム『Cairn』では、落下防止用のチェックポイントとして岩壁に「ピトン」(※)を打ち込むことができます。
※ 命綱をつなぐために岩壁に打ち込む金属製のスパイク
ピトンは消費したスタミナを回復できる休息地点としても機能しますが、本作では難易度向上のため一部ピトンを打ち込めないエリアが設けられています。
記事では、ピトンの打ち込みが禁止されたエリア(開発陣は「No-Piton Surfaces」と呼称)の座標判定を実装した技法などについて解説しています。
Cairn – Launch Trailer
『Cairn』の舞台となる山は、キットバッシュ(※)による3Dレベルデザインで構築されています。そのため、ジオメトリを追加して地形のバリエーションを作るアプローチは困難でした。
※ キットバッシュ……既製の3Dモデルパーツを組み合わせ、大きな3Dモデルを形成する手法
山を構成する数々のパーツが配置されている様子(画像は記事本文より引用)
当初は「TexturePainter」と呼ばれる内製のカスタムツールを使用し、描画したブレンドマップ(Texture2D)をモデルに投影する手法で実装していました。
しかし、洞窟の内部や複雑な凹凸を持つ壁面などで、2D投影では立体的な制御が不十分という課題に直面しました。
そこで、距離場(Distance Field)を表現する3Dテクスチャ(Texture3D)を用いた3Dブレンドマップへの移行を実施。3Dテクスチャにワールド座標ベースのノイズを加えることで、自然な岩肌のバリエーションを作り出しています。
プリミティブ図形(楕円、ボックスなど)を利用し、ピトン禁止エリアの描画範囲を編集している(画像は記事本文より引用)
この3Dブレンドマップの導入により視覚的な課題は解決しましたが、岩のシェーダー側でノイズを加えているため、CPU側で行う「プレイヤーがピトン禁止エリアにいるかどうか」の判定と、GPU側で処理を行うグラフィックの間にズレが生じるという問題が発生しました。
その解決策として、プレイヤーがピトンを打ち込もうとした際にレイキャストで座標を特定し、Compute Shader(※)に送信する仕組みを導入。これによって岩を描画するシェーダーと同じ座標情報を取得可能となり、正確な判定同期を実現しました。
※ Unity上でGPGPU(GPUを描画以外の汎用処理に活用する技術)を使用するためのシェーダー
また、プレイヤーの周囲にある複数のポイントをサンプリングし、通常エリアとピトン禁止エリアの境界線付近でも、ピトンが有効な位置を自動的に見つける仕組みを追加しており、遊びやすさも確保しています。
ピトン禁止エリアを緑ライン、通常の岩肌を青ラインのチェックマークで表示した様子(画像は記事本文の動画より切り出して引用)
詳細は、ブログ記事本文をご確認ください。
テクニカルアートの詳細解説:Cairnが3Dブレンドマップを使用して、ゲームプレイに特化した岩のマテリアルをどのように描画するか