射线投射技术培训,第1部分

2D独立游戏... 3D AAA项目...或两者之间?



致所有读者的问候。我决定总结并翻译F. Permadi撰写的有关光线投射技术研究的精彩文章“用于游戏开发和其他目的的光线投射教程”



图片


该出版物涉及并结合了“什么是雷铸造”和“雷铸造与游戏开发的雷追踪”原始文章。



值得注意的是,为了创建一个伪3D引擎(您也可以写一篇文章),我彻底研究了本教程。我希望我认为这有助于我在翻译时找到最成功的单词,同时也不会失去所写内容的含义。



好吧...开始吧!



什么是射线投射?



射线投射(以下称为投射)是一项技术,它通过从整个视场的角度“投射射线”将一组有限的数据(最简化的地图或平面图)转换为3D投影。例如,下图显示了投掷如何将2D A转换为几乎3DB。



图片


射线投射和射线追踪



像光线投射一样,光线追踪“通过从视点向场景中的对象投射虚构的光线来定义表面的可见部分”。



前两个定义使throw和trace看起来是一样的。实际上,有些书将两个术语互换使用。但是,从游戏开发人员的角度来看,投掷光线应被视为跟踪实现的特殊情况。



投掷比跟踪快。这是可能的,因为它使用了一些几何约束来加快渲染过程。例如,墙壁始终垂直于地板(这在Doom或Wolfenstein 3D等游戏中可以看到)。如果不是这样的限制,投掷技术将是不可能的。



以下各段提供了引发和跟踪的全局比较。要记住的主要事情是:“由于某些几何约束,投掷使用的光线少于跟踪的光线”。否则,“抛出是跟踪的专门实现”。



原理



投掷:根据某些几何约束,光线会成组投掷并移动。例如,在分辨率为320x200的屏幕上,“射线生成器”将仅释放其中的320个(我们从宽度为320像素的屏幕具有320个垂直列的结果中得到此数字)。



跟踪:每条光线是单独计算的,也就是说,监视器屏幕上的每个点(通常是一个像素)都由其一条光线跟踪。例如,在分辨率为320x200的屏幕上,我们需要6.4万条(320 * 200 = 64000)射线,这比投掷要慢200倍。





通常,抛出时允许计算错误。路由时,所有内容都应尽可能准确。



速度



抛出比跟踪快很多倍,并且适合于实时过程。跟踪无论如何都不适合(除非我们有一台频率为500 GHz的PC)。



质量



掉落时,我们得到的图像质量中等/较差。您会注意到划分为块元素。跟踪时,图片尽可能逼真-有时甚至太多。



图片


来自Wolfenstein 3D的场景。请注意,图片分为矩形块。对象(武器)和敌人(狗)只是透明的位图,可以在背景上缩放和绘制。



图片


游戏第7位来宾的场景。渲染效果惊人。但是,玩家的运动仅限于预先定义的路径(这是由于预渲染图像的数量受到限制这一事实)。



外部世界



投掷时,我们在几何上受到限制,只有简单的形状可用。跟踪时,可以渲染任何形状。



记忆



抛出:渲染的图像不会保存到磁盘。通常,仅场景图本身存储在介质上,并且动态生成相应的图像。



跟踪:渲染的图像保存到磁盘并根据需要从那里加载。当前,没有这样的硬件部件能够即时渲染光线跟踪的结果。



示例



投掷:



  • Wolfenstein 3D(iD软件)
  • 暗影施法者(乌鸦)
  • 竞技场(贝塞斯达)
  • 厄运(iD软件)
  • 黑暗力量(LucasArts)


跟踪:



  • 第7位来宾(Trilobyte)
  • 关键路径(Mechadeus)
  • 第11小时(Trilobyte)
  • 神秘(青色)
  • Cyber​​ia(Xatrix)


第一部分结束




All Articles