5 ポイント 投稿者 GN⁺ 2024-07-29 | 1件のコメント | WhatsAppで共有
  • プロジェクト概要

    • ここ数年、ブラウザで動作する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件のコメント

 
GN⁺ 2024-07-29
Hacker Newsの意見
  • 過去に手続き型生成に挑戦した経験がある

    • 特に、見栄えの良い木を作ろうとした
    • ジオメトリを簡単に接続する方法が足りないと感じた
    • 2つのシリンダーを作るのは簡単だが、それらを接続するのは非常に難しい
    • 理論上はCSGがこの隙間を埋められるが、3D形状としてモデリングする必要があるため難しい
    • 2つのループを接続するルーチンを作ろうとしたが、うまく動かなかった
    • 将来的には、モジュール式の手続き型生成システムが自発的に動作するゲームを作りたい
  • 良い地形生成は簡単ではない

    • ワールドスケールでも目線の高さでも難しい
    • 単純なアプローチでは、現実にはほとんど似ていない凸凹のハイトマップが生成される
    • Dwarf Fortress は、基本的な中点変位法を出発点にしつつ、多くのカスタム処理を行っている
  • Webにおける手続き型技術についての素晴らしい記事だ

  • デプスプリパスの使用については評価が分かれる経験をしている

    • 何度か試した際、中〜上位のデスクトップGPUで大きな性能向上は感じられなかった
    • 理由ははっきりしないが、early-Z rejection によってピクセルシェーダー呼び出しが節約されていた可能性がある
    • 通常は不透明メッシュを前から後ろへレンダリングしている
    • 公平を期すと、私の実験はゲームではなくCAD/CAMアプリケーションの文脈で行われた
    • シーンは一般的なゲーム環境とは異なり、テクスチャは最小限で、ポリゴン数の非常に多いジオメトリを持っていた
  • 3Dアーティストとして非常に興味深い記事だった

    • このテーマに関する良い記事は非常に少ない
    • Three.js を試してみるつもりだ