手続き型ゲーム開発のための私のお気に入りのツールと手法
(cprimozic.net)-
プロジェクト概要
- ここ数年、ブラウザで動作する3Dシーンやレベルを制作してきた
- 当初は個別のデモとして始まったが、次第に相互につながったゲームのようなプロジェクトへと発展した
- 手続き型および生成型の技術を使って特定の要素を実装している
-
Shaders + Textures
- テクスチャの大半はシームレスになるよう設計されており、広い領域でもパターンが目立たない
- Three.JSでカスタムシェーダーを作成し、追加機能を提供している
-
Triplanar Mapping
- UVマップなしでメッシュにテクスチャを適用でき、手続き的に生成された地形に有用
- 比較的簡単に実装でき、さまざまなメッシュに適用可能
pow()関数を使って重みを調整し、品質を改善しつつ性能を最適化している
-
Hex Tiling
- シームレステクスチャの繰り返しを隠すアルゴリズム
- Three.JSプロジェクトに簡単に統合できるスタンドアロンライブラリとして移植した
- UVマップが必要で、性能オーバーヘッドが大きい
-
Depth Pre-Pass
- 性能向上のため、シーンを2回レンダリングしてピクセルの深度を記録する
- オーバードローの多いシーンでは、性能を30%以上向上させられる
-
AI-Powered PBR Texture Synthesis
- AI生成テクスチャを使ってシーンの品質を高める
- DeepBumpとMaterializeを使ってPBRマップを生成する
-
Volumetric Fog/Clouds
- シーンに雲や霧を追加するシェーダーを開発した
- LoDノイズルックアップを使ってさまざまな機能を追加している
-
Meshes + Geometry
- ランタイムでメッシュを生成・変形する技術を研究している
- 主に装飾や背景要素を手続き的に生成している
-
LoD Terrain
- ノイズ関数を使って地形を生成し、カメラとの距離に応じて解像度を動的に調整する
-
Procedural Mesh Processing + Manipulation Pipeline
- 低ポリゴンメッシュを手続き的に細分化・変形するパイプラインを構築した
- 法線処理には多くの労力が必要
-
Future Work
- Constructive Solid Geometry(CSG)を使ってメッシュを結合したり切り抜いたりする作業を計画中
- Rustへ移植し、より深く理解することを目標としている
GN⁺のまとめ
- この記事では、手続き型ゲーム開発に役立つさまざまな技術とツールを紹介している
- Triplanar MappingやHex Tilingのようなテクスチャリング手法により、性能と品質を同時に向上させている
- AIを活用したテクスチャ生成とVolumetric Fog/Cloudsシェーダーは、シーンのリアリティを高める
- Constructive Solid Geometryのような今後の取り組みは、メッシュ変形に大きな可能性を持つ
- 類似機能を持つプロジェクトとしては、UnityのProBuilderやHoudiniがある
1件のコメント
Hacker Newsの意見
過去に手続き型生成に挑戦した経験がある
良い地形生成は簡単ではない
Webにおける手続き型技術についての素晴らしい記事だ
デプスプリパスの使用については評価が分かれる経験をしている
3Dアーティストとして非常に興味深い記事だった