4

タイトルが示すように、OpenGL や DirectX などの API を使用せずに、3D ゲーム (おそらく BattleZone のクローン) をプログラミングしたいと考えています。肝心なのは、基本的な 3D シェイプを画面に描画して操作する方法を学びたいということです。がらくたのように見えても気にしないでください。以前に OpenGL を使用して同様の目的を達成したことがありますが、これらのトピックについては実際には知りませんでした。

問題は、どこから始めればよいかわからないことです。Doom のソース コードをダウンロードしましたが、ちょっとわかりにくかったです。私は少しプログラムしましたが、グラフィカルな問題は私の深さではありません。

私の目的を達成するのに役立つリンクやコード (任意の言語で) を誰かが提供してくれたら、とてもありがたいです。

4

2 に答える 2

5

エキサイティングなプロジェクトのようですね。私は90年代後半に似たようなことをしました。OpenGL と DirectX が普及する前は、このテーマに関する素晴らしい本がたくさんありました。

基本的には、次の方法を学ぶ必要があります。

  • 3D ジオメトリを表現する
  • そのジオメトリを変換します (平行移動と回転)
  • そのジオメトリを 2D 画面に投影します。

これらの主要なトピックのそれぞれには、多くのサブトピックがあります (たとえば、複雑なオブジェクトは多数のポリゴンから構築できます。ポリゴンを三角形のみで構築するように制限したり、他のポリゴンをサポートしたりしたい場合があります。共通モデルをロードしたい場合があります。市販のツールでモデルを作成できるように、.obj ファイルなどをフォーマットします)。

ここで詳細な回答をするには、トピックが広すぎます。本全体がこの主題について書かれています。

Black Art of 3D Game Programming (書籍、驚くほどまだ入手可能)

一般的なトピックへの適切な導入については、以下をご覧ください。

http://en.wikipedia.org/wiki/3D_projection

http://en.wikipedia.org/wiki/Orthographic_projection

http://en.wikipedia.org/wiki/Transformation_matrix#Perspective_projection

すでに見た Doom は、高さフィールド レンダリングと呼ばれる特別な最適化を使用しており、任意の 3D 形状のレンダリングを許可していません (たとえば、Doom には橋の下を歩くことができません)。

于 2012-06-11T20:31:28.660 に答える