Oblivion(および他のゲーム、確かに、十分にプレイしていない)に見られるようなテクノロジーの背後にある基本的な前提は何ですか?遠くからオブジェクトを遠くから見ると漠然と表示されますか?たとえば、大きな塔が1マイル離れていると、その漠然とした長方形が地平線から突き出ているのがわかります...明らかに、巨大な3Dシーンをすべてレンダリングできるわけではなく、高さマップの場合は近似アルゴリズムしかないことを私は知っています。これは、カメラから離れた高さマップの品質を下げるために使用されますが、特定のオブジェクトの場合、それらを表示するための最良の方法は何ですか?
風景の周りの特定の場所を選び、その場所の周りにすべてのハイトマップと3Dモデルを描画して写真を撮るプログラムを作成する、事前レンダリング手法を考えていました。何枚か写真を撮り、プレーヤーがその場所の近くにいると、その写真はスカイボックスとして使用されます。
もう1つのより明白な手法は、非常にラフな3Dモデルを保存することですが、3Dレンダリングシステムは、他のそれほど重要ではない(そしておそらくそこからは見えない)ラフモデルではなく、建物のラフモデルをレンダリングすることを具体的にどのように選択しますか?距離)オブジェクト?そのようなものをハイトマップと一緒にどのように保存しますか?おそらく設計上、そのような重要なランドマークをいくつかだけ持って、それらのリストを小さなファイルに保存し、各フレームでx未満のランドマークを実際に遠くにレンダリングしますか?
Haloシリーズはゲームをレベルに分割することを選択し、各レベルには異なる手作りのスカイボックスがあることを私は知っています。これは私が最初の提案で目指していたようなものですが、それについてはよくわかりません。限られた時間と知識でプロトタイプを作成できるように、他のアイデアやアイデアの改良点や問題を収集しようとしているだけだと思います。
もう1つの関連トピックは、山を遠くに表示する方法です。山は高さマップの一部であり、その上に3Dモデルがないため、大まかなバージョンを作成することはできず、高さマップ近似アルゴリズムが失敗する可能性があります。そのような非常に遠い距離から山を登ります(おそらくそうしないであろう、そのような遠いジオメトリを近似してレンダリングしようとさえすると仮定します)。あなたがあなたの答えでもこれをカバーするならば、ボーナスポイント。:)
ありがとう!
PS私はOpenGLを使用しています。基本的な概念を探していますが、サンプルコードを投稿する場合は、OpenGL関数と用語を使用してください。:)
編集:答えてくれてありがとう!ドキュメントの目的で、私が見つけた別のリソースがあります。ゲームプログラミングGems 2の第4.9章では、遠くの風景をスカイボックスにレンダリングする概念について説明しています。http://books.google.com/books?id=1-NfBElV97IC&lpg=PA416&ots=SOpnfijZly&dq = render%20distant%20to%20skybox&pg = PA416 (残念ながら、そのプレビューは章の最初のページにすぎません... 8月に戻ったらすぐに、大学のライブラリからその本を入手する必要があります)
また、これらのことを読んだ後でも、LODはまだかなり近い距離にあるオブジェクト用であると私は考えています。オブジェクトのサイズが1ピクセルでもない場合でも、オブジェクトをグラフィックカードにフィードしている場合は、LODを使用しているかどうかに関係なく、電力を浪費しているだけです。そして、それは絶対的に最大の遠方のオブジェクト以外のすべてに当てはまります。ほとんどの場合、いくつかの高い建物といくつかの山がありますが、細部のモデル(茂み、木、岩、その他の風景など)は、このような距離からは見えません。ですから、スカイボックスへのレンダリング手法が好きです。この橋に着いたら、それを渡ります。すべてのモデルにLODを使用するようにしますが、そのような距離はレンダリングしません。
ちなみに、私はOblivionゲームの方針に沿って考えているので、答えはゲームのジャンルによって異なる場合があります。