レイキャスティングテクノロジートレーニング、パート1

2Dインディー... 3D AAAプロジェクト...またはその間の何か?



すべての読者へのご挨拶。私は、レイキャスティング技術の研究に関するF.Permadiによる素晴らしい一連の記事「ゲーム開発およびその他の目的のためのレイキャスティングチュートリアル」を要約して翻訳することにしました。



画像


この出版物は、ゲーム開発のためのレイキャスティングレイキャスティングレイトレースのオリジナル記事に触れて組み合わせています。



疑似3Dエンジン(記事を書くこともできます)を作成するために、このチュートリアルを徹底的に研究したことは注目に値します。私は願って、私はこれが翻訳したときに最も成功した単語を見つけるためにも書かれていたものの意味を失わないように私を助けたと思います。



さて...始めましょう!



レイキャスティングとは何ですか?



レイキャスティング(以下、キャスティングと呼びます)は、限られたデータセット(最も単純化されたマップ、またはフロアプラン)を、視野全体の視点から「光線をキャスト」することによって3D投影に変換するテクノロジーです。たとえば、次の図は、スローによって2DAがほぼ3DBに変換される様子を示しています。



画像


レイキャスティングとレイトレース



レイキャスティングと同様に、レイトレースは「視点からシーン内のオブジェクトに向かって架空の光線をキャストすることにより、サーフェスの可視部分を定義します」。



前の2つの定義では、スローとトレースは同じものであるように見えます。実際、一部の本では両方の用語を同じ意味で使用しています。ただし、それでも、gamedev-programmersの観点からは、光線を投げることは、トレース実装の特殊なケースと見なす必要があります。



トレースよりも速く投げます。これは、レンダリングプロセスを高速化するためにいくつかの幾何学的制約を使用するという事実のために可能です。たとえば、壁は常に床に対して垂直です(これは、DoomやWolfenstein 3Dなどのゲームで見られます)。そのような制限がなかったら、投げる技術は不可能だったでしょう。



次の段落では、スローとトレースのグローバルな比較を提供します。覚えておくべき主なことは、「特定の幾何学的制約のため、スローはトレースよりも少ない光線を使用する」ということです。または、「スローはトレースの特殊な実装です」。



原理



投げる:光線は投げられ、いくつかの幾何学的制約に基づいてグループで移動します。たとえば、解像度が320x200の画面では、「レイジェネレータ」はそれらの320個のみをリリースします(この数は、幅が320ピクセルの画面に320の垂直列があるという結果から得られます)。



トレース:各光線は個別に計算されます。つまり、モニター画面上の各ポイント(通常はピクセル)は、独自の光線の1つによってトレースされます。たとえば、解像度が320x200の画面では、64千(320 * 200 = 64000)の光線が必要です。これは、投げる場合に比べて200倍遅くなります。





原則として、投げるとき、計算のエラーは許容されます。ルーティングするときは、すべてが可能な限り正確である必要があります。



速度



スローはトレースよりも何倍も高速であり、リアルタイムプロセスに適しています。トレースはどのような方法でも適していません(500 GHzの周波数のPCがない限り)。



品質



ドロップすると、中/低品質の画像が表示されます。ブロック要素への分割に気付くことができます。トレースするとき、画像は可能な限りリアルになります。場合によっては多すぎます。



画像


Wolfenstein3Dのシーン。写真が長方形のブロックに分割されていることに注意してください。オブジェクト(武器)と敵(犬)は、背景の上に拡大縮小されて描画される単純な透明なビットマップです。



画像


ゲーム7thGuestのシーン。レンダリング結果は素晴らしいです。ただし、プレーヤーの動きは以前に定義されたパスに制限されます(これは、事前にレンダリングされた画像の数が制限されているためです)。



外界



投げるとき、私たちは幾何学的に制限されており、単純な形しか利用できません。トレースするときは、任意の形状をレンダリングできます。



メモリ



スロー:レンダリングされた画像はディスクに保存されません。通常、シーンマップ自体のみがメディアに保存され、対応する画像がその場で生成されます。



トレース:レンダリングされた画像はディスクに保存され、必要に応じてそこからロードされます。現在、レイトレースの結果をオンザフライでレンダリングできるようなハードウェアパーツはありません。



の例



投げ:



  • Wolfenstein 3D(iDソフトウェア)
  • シャドウキャスター(レイヴン)
  • アリーナ(ベセスダ)
  • 運命(iDソフトウェア)
  • ダークフォース(LucasArts)


痕跡:



  • 7人目のゲスト(トリロバイト)
  • クリティカルパス(メカデウス)
  • 11時間(トリロバイト)
  • ミスト(シアン)
  • Cyber​​ia(Xatrix)


最初の部分の終わり




All Articles