高さマップと3Dモデルメッシュ


8

私は現在3D PCゲーム(C ++およびDirectX 9.0で作成)に取り組んでおり、レベルデータをメモリに格納するための最良の方法を見つけようとしています。

ゲームのアクションは地面の下で行われるため、常にプレーヤーの上に天井があります。地面はかなりでこぼこで、石筍のようなものが常に存在しています。レベルは小さめで、ほとんどが廊下のように見えます。これまでに見つけたオプションは次のとおりです。

ハードドライブにビットマップまたはバイナリ/テキストファイルとして保存されている2つの高さマップ。天井(上部)と地面の高さマップ。

または

いくつかの3Dモデル形式(たとえば、.fbx、.x、.objなど)の単一の3Dメッシュ。

レベルのデータストレージにどのようにアプローチすればよいですか?パフォーマンスに関して言えば、私の最善の選択肢は何でしょうか?高さマップを介してロードされたレベルのテクスチャリングに関しても問題があります。3Dモデルを使用すると、テクスチャリングが簡単になります。

ありがとう!

回答:


4

パフォーマンス面では、遅かれ早かれすべてがモデルに変換されるため、両方のオプションは同等でなければなりません。

ハイトマップ:
+保存と編集が
簡単+事前計算されていない場合のテクスチャ座標の計算が簡単-
急勾配の表面でのテクスチャリングが
不十分-コンパニオンモデルが必要なため詳細がわかり
ません-地形のオーバーラップを許可しません(オーバーハングなし)。

モデル:
+水平方向の変位のより詳細な制御
+オーバーラップするテレインが可能
+テクスチャの最大の制御-
衝突は少し複雑
です-ディスク上の少し多くのメモリを使い果たす可能性があります

私の経験では、ベーステレインにはややフラットなハイトマップを使用し、石筍などのモデルには使用モデルを使用することをお勧めします。また、そのようなオブジェクトに繰り返しモデルを使用して(メモリを節約するため)もできます。

もちろん、ベクトルフィールドを使用することもできますが、これは基本的にテクスチャリングが簡単なモデルです。


1

ゲームのジャンルやカメラの表示などを教えていただければ助かるでしょう。FPSについて話していると思いますが、よくわかりません。

:とにかく、ここで私は興味深い発見し、あなたのアイデアを与えることヘイローウォーズにおける地形についての話へのリンクですhttp://www.gdcvault.com/play/1277/HALO-WARS-The-Terrain-ofが。それはあなたが言及した問題と可能な解決策のいくつかを扱います。


0

必ずしもどちらか一方を選択する必要はありません。どちらも効果的であり、2つを組み合わせられない理由はありません。

ハイトマップを使用する場合は、個人的にビットマップ形式を選択します。Directxは、すべてのビットマップの読み込みを実行して、それを使用可能なリソースに変換できる必要があります。プレーンテキストファイルを使用する場合は、自分で解析する必要があります。もちろん、これによりファイルを解釈する際の自由度が増し、実験を容易にするための出発点として最適です。

ただし、ハイトマップでは解像度が固定されるため、マップ全体のピクセル密度を上げない限り、言及した石筍を適切に表現するのは難しいかもしれません。

一般に、高さマップは地形を保存するための効果的な手段だと思いますが、石筍のような詳細を追加すると、モデルの柔軟性が大幅に向上します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.