萌えハッカーニュースリーダー

2025/05/19 09:01 Raycasting

出典: https://lodev.org/cgtutor/raycasting.html
hakase
博士

ロボ子、今日はRaycastingについて話すのじゃ!

roboko
ロボ子

Raycastingですか?Wolfenstein 3Dに使われていた技術ですね。

hakase
博士

そうそう!昔のPCの性能が低かった時代に、3Dっぽく見せるための画期的な技術だったのじゃ。

roboko
ロボ子

記事によると、Raycastingは画面の垂直線ごとに計算を行うため、高速に処理できるとありますね。

hakase
博士

その通り!でも、初期のRaycastingエンジンは制限も多かったのじゃ。例えば、Wolfenstein 3Dでは、壁の高さが全部同じだったり、階段やジャンプが表現できなかったり。

roboko
ロボ子

なるほど。でも、DoomやDuke Nukem 3Dでは、傾斜した壁や高さの違いも表現できるようになったんですね。

hakase
博士

そうじゃ!より高度なRaycastingエンジンが使われたからこそじゃな。テクスチャ付きの床や天井、透明な壁も表現できるようになったのじゃ。

roboko
ロボ子

RaycastingとRaytracingの違いは何ですか?

hakase
博士

Raycastingは高速な準3D技術で、Raytracingは反射や影をサポートするリアルなレンダリング技術じゃ。簡単に言うと、Raycastingは軽いけど見た目がちょっと粗く、Raytracingは重いけど見た目がめっちゃ綺麗、って感じかの。

roboko
ロボ子

なるほど。処理速度が重要だった時代には、Raycastingが最適だったんですね。

hakase
博士

その通り!Raycastingの基本的な考え方は、2Dマップ上でレイを飛ばして、壁に当たるまでの距離を計算して、それを元に壁の高さを決めるのじゃ。

roboko
ロボ子

DDAアルゴリズムというのも出てきますね。これは何ですか?

hakase
博士

DDAは、レイがマップのどの正方形に当たるかを高速に特定するためのアルゴリズムじゃ。これがないと、計算がめっちゃ遅くなるのじゃ。

roboko
ロボ子

カメラとFOV(視野角)についても説明がありますね。

hakase
博士

FOVは、どれだけ広い範囲が見えるかを表す角度じゃ。方向ベクトルとカメラ平面ベクトルの長さの比率で決まるのじゃ。

roboko
ロボ子

方向ベクトルとカメラ平面ベクトルの長さが同じ場合、FOVは90°になるんですね。

hakase
博士

そうじゃ!視野角が広いほど、一度に見える範囲が広くなるのじゃ。

roboko
ロボ子

プレイヤーが回転すると、カメラも回転する必要があるんですね。

hakase
博士

その通り!方向ベクトルと平面ベクトルの両方を回転させる必要があるのじゃ。そうすることで、レイも自動的に回転するのじゃ。

roboko
ロボ子

テクスチャRaycasterについても説明がありますね。テクスチャがないRaycasterと何が違うんですか?

hakase
博士

テクスチャRaycasterでは、壁にテクスチャを貼り付けることができるのじゃ。これにより、見た目がよりリアルになるのじゃ。

roboko
ロボ子

テクスチャの座標はどのように計算するんですか?

hakase
博士

まず、壁がヒットした正確な値を計算するのじゃ。次に、その値を使ってテクスチャのx座標を計算するのじゃ。y座標は、垂直ストライプの各ピクセルに対して計算するのじゃ。

roboko
ロボ子

パフォーマンスに関する考慮事項についても触れられていますね。

hakase
博士

Raycastingは垂直ストライプで動作するけど、メモリ内の画面バッファは水平スキャンラインでレイアウトされるから、キャッシュのメモリ局所性にとっては悪いらしいのじゃ。あと、ソフトウェアブリッティングも遅い原因の一つじゃな。

roboko
ロボ子

なるほど。ハードウェアレンダリングと比較すると、大きな解像度では遅くなるんですね。

hakase
博士

そういうことじゃ!でも、Raycastingは今でも面白い技術じゃし、学んでおくと役に立つこともあると思うぞ。

roboko
ロボ子

そうですね。私もRaycastingについてもっと勉強してみます。

hakase
博士

よし!最後に、Raycastingで作られたゲームで遊んでみるのはどうかの?

roboko
ロボ子

いいですね!Wolfenstein 3Dをプレイしてみましょう。

hakase
博士

そういえば、ロボ子。Raycastingって、昔の技術なのに、今でもたまに「壁ドン」に使われるらしいぞ。

roboko
ロボ子

えっ?壁ドンですか?それは一体どういう…

hakase
博士

(ニヤリ)壁との距離を測って、ドキドキさせるテクニックらしいのじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search