问候,读者。这是“用于游戏开发和其他目的的铸造教程”翻译系列的第二部分。第二部分之前是第一部分,也可以查看第一部分。
开始吧!让我们继续!
射线投射限制
光线投射技术之所以快速是因为它使用了一些几何约束。在大多数情况下,墙壁始终垂直于地板(请注意,这不适用于墙壁之间的拐角)。
因此,我们遇到了另一个限制:视点无法沿Z轴旋转(众所周知,Z轴为应用的轴-大约为Per。)。为什么?想象相反:允许旋转。在这种情况下,壁会倾斜,因此失去了绘制这些壁的垂直截面的优势。旋转限制是无法将射线投射视为完整3D的原因之一。
光线投射技术允许玩家向前/向后移动并向右/向左移动,但不能绕Z轴旋转(这种旋转称为侧滚(如果Y轴是垂直的,则沿其旋转是俯仰,而沿X轴则是偏航,-大约。 。)。
步骤1:创建环境
为了渲染射线投射工作,我们将基于以下几何约束创建一个迷宫场景:
64x64x64 ( , , 2. , ). , , , , .
, ( - ), - . .
. , . - .
2.
, , . :
, (FOV - Field Of View),
, . FOV, , . FOV 90° . , . 60°, ( - FOV). , 32 . , , . ( -, : 2.4 / 1.7 = 1.41 - . .).
, - , . , , FOV - . .
, X-, Y- . 3 POV (point of view) .
, - (1, 2), 45 , FOV , . ( 64x64 ).
POV, . - FOV - . - . .
, , . 320 200 - , .. VG .
POV , , .
FOV .
:
, ( ): 320200 (160, 100). " ". - . .
( , , , , ).
FOV 60. 320 , 60° 320 , , 1 60 / 320 . - . .
FOV . , 320 / 2 = 160 : 90°, 60° / 2 = 30° 90° - 30° = 60° . (277), . - . .
:
() = 320200
(160, 100)
= 277
= 60 / 320
(有时将连续射线之间的角度称为相邻列之间的角度。稍后,将使用该角度在循环中从一列到下一列进行迭代。缩放时需要与投影平面的距离。)