3Dゲームマップの保存方法と処理方法


9

私はプログラマーですが、まだゲームを開発していません。

私はさまざまな3Dゲームをプレイしてきましたが、フィールドのマップがどのように保存およびレンダリングされるのかを常に疑問に思っていました。

一部のアクセラレーションカードが必要なハードウェアであることは知っていますが、画面にちらつきが1つもない状態でビューがどのように変更されるかを正確に示します。

これを理解するのに役立つオンライン資料はありますか?

ありがとう

回答:


9

一般に、世界は多数の三角形のマップであり、マップはこれらの三角形と各頂点の世界での位置のリストです。それらを描画するプロセスは次のとおりです。

  • 「カメラ」の位置を設定します-あなたが世界に立っていた場合、これはあなたが世界の位置になる場所です
  • 三角形の頂点を「カメラ空間」に変換
  • 三角形を「カメラスペース」から「スクリーンスペース」に変換します。これにより、遠近効果が発生します(遠くのものは小さくなります)。この時点で、三角形は2Dになります。
  • 非表示の画面に2D三角形を描画します。
  • すべての三角形が描かれたら、プレーヤーに画面を見せます。

最後のステップは通常、モニターのフレームレートに関連付けられているため、非表示画面を表示するプロセスは、vブランク期間中に行われます。これは、陰極線を右下から上に移動できるようにする陰極線管モニターから派生した概念です。左では、これは光線管の後部の偏向コイルの電圧を瞬時にではなく迅速に変化させる必要がありました。

これは本当に簡単な方法です。高いパフォーマンスを得るには、隠面の削除、オクルージョン、可視セットの決定などを追加する必要があります。何を描くかを決めるのに必要なアルゴリズムはたくさんあります。

また、世界は三角形で構成されていると言いましたが、この方法ではディスクに保存されない可能性があります。多くの場合、画面に描画される三角形は、実行時に高さマップ、スプライン、テサレーション、幾何学的プリミティブ(球、ボックスなど)などの高次プリミティブから定義されます。

専用のハードウェアは必要ありません-多くの初期の3Dゲームはすべて(FPUのない8ビットCPUでも)すべてソフトウェアで行いました。それはただそれをより速くそしてより簡単にします。

そのような単純な質問。簡単な答えはありません。


0

ダブルバッファリングにより画面がちらつくことなくビューが変更されます。バックバッファーですべてのデータを処理し、処理が完了したら、フロントバッファーでデータを交換します。

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