4 ポイント 投稿者 GN⁺ 2025-01-05 | 1件のコメント | WhatsAppで共有

Voxel Space

ウェブデモ: Voxel Spaceエンジン

歴史

  • 1992年当時、CPUは現在よりも1000倍遅く、GPUアクセラレーションはあまり知られていないか高価だった。
  • 3DゲームはCPUでのみ計算され、レンダリングエンジンは単色のポリゴンをレンダリングしていた。
  • 1991年にMicroProseのゲーム『Gunship 2000』と、1992年にNovaLogicのゲーム『Comanche』が発売された。
  • Comancheは当時としては驚くほどのグラフィックを提供し、テクスチャ、シェーディング、影を表示した。

レンダリングアルゴリズム

  • ComancheはVoxel Spaceという技術を使用しており、これはレイキャスティングと似た考え方に基づいている。
  • Voxel Spaceエンジンは2.5Dエンジンで、一般的な3Dエンジンが提供するすべての自由度を提供していない。
高さマップとカラー マップ
  • 地形を表現する最も簡単な方法は、高さマップとカラーマップを使用することだ。
  • Comancheゲームでは、1024 * 1024サイズの1バイト高さマップとカラーマップを使用していた。
  • このようなマップは周期的で、複雑な構造物は表現できないが、カラー マップにはすでにシェーディングと影が含まれており、レンダリング処理でライティングを計算する必要がない。
基本アルゴリズム
  • 3Dエンジンのレンダリングアルゴリズムは非常にシンプルである。
  • Voxel Spaceエンジンは高さマップとカラーマップをラスタライズして垂直線を描画する。
  • 画面をクリアし、後方から前方へのレンダリングで隠れを保証する。
  • 視点からの光学的距離に相当するマップのラインを決定する。
  • そのラインをラスタライズして画面の列数に合わせる。
  • 2Dマップでラインセグメントに対応する高さと色を取得する。
  • 高さ座標に対して透視投影を実行する。
  • 透視投影から得られた高さとその色で垂直線を描画する。
回転を追加
  • 上記アルゴリズムでは北向きしか見えない。
  • 別の角度を見るには、座標を回転させる数行のコードが必要になる。
パフォーマンス向上
  • パフォーマンスを上げるためのいくつかのトリックがある。
  • 背面から前面へ描画する代わりに、前面から背面へ描画できる。
  • 隠れた面を保証するために追加のy-バッファが必要となる。
  • 詳細レベルを調整して、近い場所では多めのディテール、遠くでは少なめのディテールをレンダリングする。

リンク

  • ウェブプロジェクトのデモページ
  • Voxel地形エンジンの紹介
  • 個人ウェブサイト

マップ

  • 色, 高さ

ライセンス

  • ソフトウェア部分はMITライセンスの下にある。
  • Voxel Space技術は、一部の国では依然特許が存在する可能性がある。
  • カラー マップと高さマップはゲームComancheからリバースエンジニアリングされたもので、ライセンスの対象外。

1件のコメント

 
GN⁺ 2025-01-05
Hacker Newsのコメント
  • ハードウェア資源が限られていた時代は、独創的でエレガントなアルゴリズムがまるで魔法のような体験を生み出していた。だからこそ、あの頃が恋しい。
    • 今では、PICO-8のようなファンタジー・プラットフォームの方が、AAAスタジオの反復的なゲームよりずっと面白い。
    • VoxelSpaceのようなアルゴリズムは、少ないコードで地形をレンダリングする方法を示している。
  • mars.comというプログラムに関する動画も面白い。
    • Pouetのサイトで関連情報が見つかる。
  • このレンダリング方法は面白いが、任意のボリュームをレンダリングできないため、ボクセルとして分類するのは難しい。これは高さマップレンダラーのきれいな実装だ。
  • タイトルに2020年版あるいは2017年の議論が含まれている可能性がある。2021年にも同じリポジトリについての議論があった。
  • プログラミングを始めたころ、QBasicで地形の高さマップを生成してアイソメトリックスタイルでレンダリングするプログラムを作成したのを覚えている。これはプログラミングを続けるきっかけの一つだった。
  • Adventure Game Studioでこの技術を使ってゲームを作成した。エンジンの旧バージョンでは最適化されていないが、いつかアップデートするつもりだ。
  • 大半の現代ゲームでは山が空洞に見えることが多いが、この方法を使うと山がしっかりした印象になる。
  • Comancheゲームを初めてプレイしたときの感動を覚えている。未来か映画の中から来たような感覚だった。
  • ソフトウェアレンダラープロジェクトは楽しく、週末プロジェクト向きだ。過去に似たアルゴリズムを実装したことがあるが、いまの実装はずっと性能が高くシンプルだ。
  • GPUがボクセルベースだった別のタイムラインで生きたい。