您将如何实现完美的视线算法?

时间:2009-07-24 15:09:31

标签: algorithm graphics raytracing

免责声明:我实际上并没有尝试制作一个我只是好奇它是如何做到的。

当我说“最准确”时,我会包含基础知识

  • 距离
  • 光照水平

和更复杂的

  • 大气中的尘埃
  • 下雨,雨夹雪,雪
  • 植被

如果我想要编程,我应该查看哪些资源以及应该注意哪些事项? 此外,是否有关于视线背后理论的相关书籍,包括所有这些变量?

4 个答案:

答案 0 :(得分:4)

我个人对这个话题不太了解,但是一些谷歌搜索结果显示了一些包含一些非常相关信息的正式文件:

http://www.tecgraf.puc-rio.br/publications/artigo_1999_efficient_lineofsight_algorithms.pdf - 提供有效执行LOS计算的两种不同方法的详细说明,以及涉及的问题

http://www.agc.army.mil/operations/programs/LOS/LOS%20Compendium.doc - 这个目的是维护“当前唯一LOS算法列表”;它有一个部分列出了很多,并详细描述了它们,重点是军事应用。

希望这有帮助!

答案 1 :(得分:3)

通常,一个人将世界表示为在某种空间划分数据结构中保存的一组空间体积,然后将表示“视线”的光线与该结构相交以找到它所击中的物体集合;然后从射线原点开始按顺序走,以确定整体结果。反射物体会引发更多射线,不透明物体会阻止行走,半透明物体会对结果产生影响。

您可能想了解光线追踪;关于这个主题有大量的文献和很好理解的方法来解决你列出的基本相同的问题。

答案 2 :(得分:2)

显而易见的问题是,你真的想要最准确吗?为什么?

我参与了依赖于视线的游戏,你真的需要清楚地思考你想要什么样的视线。

首先,AI可以看到你身体的任何部位吗?或者你在谈论“眼对眼”LOS?

其次,如果玩家的相机视图不是他的化身的眼睛视图,则玩家将不会将您的高度准确的LOS视为高度准确。在这一点上,不准确是好的。

我不是想劝阻你,但要记住玩家的体验是#1,这可能意味着拥有最好的LOS。

我的一位好朋友已经完成了人工智能的一系列= - 一系列流行的主机游戏。他经常讲述一个关于人工智能在第一场比赛中最有趣(和有趣)的故事,因为他们偶然发现了你,而不是远远地看到你。现在,他有很棒的LOS并且花时间试图让他们愚蠢到让他们像第一场比赛一样有趣。

那你为什么要这样做?游戏需要它吗?或者你只是想要挑战?

答案 3 :(得分:0)

由于输入定义不明确,因此没有“一种算法”。 如果你把Dust-In-Atmosphere视为一个常数值,那么有一种算法可以考虑它,但事实是灰尘级别会因点而异,因此你想要的算法需要知道如何你的尘埃数据是结构化的。

当今光线跟踪器中最常用的算法只是增量光线行进,根据定义不正确,但它确实接近最终答案的公平程度。

即使你设法将所有这些属性合并到一个主算法中,你仍然必须以某种方式处理不同的人如何看待相同的设置。有些人近视,有些人有远见。那就是色盲。更不用说尘埃 - 气氛水平也会影响泪腺,从而影响能见度。然后是人们实际上在寻找什么以及他们认为他们正在寻找什么之间的完全二分法......

这里有太多变量可用于统一解决方案。将您的环境视为一个voxelated空间,并通过它拍摄你的光线。我怀疑这是你能在一生中完成的唯一解决方案......