【问题标题】:How would you implement a perfect line-of-sight algorithm?你将如何实现一个完美的视线算法?
【发布时间】:2013-06-08 00:42:19
【问题描述】:

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

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

  • 距离
  • 光照度

还有更复杂的

  • 大气中的灰尘
  • 雨、雨夹雪、雪
  • 植被
  • 烟雾

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

【问题讨论】:

  • 这是关于算法的。它当然可以编程......
  • 我认为你应该先阅读一些物理书籍。
  • 编程相关的。这是图形编程。应该有人对其进行编辑和澄清。
  • 当然它在编程领域具有潜在的相关性;可能用于游戏,可能用于 GPS 或导弹制导,也可能用于其他不太明显的应用
  • @Michael 你是说算法研究与编程无关?这很奇怪,因为有大量与编程相关的书籍专注于算法。而且我相信计算机科学理论也与编程有关。那么这个问题与编程无关?即使它不直接涉及代码,它也会影响编码实现和进一步的问题。不过我不得不说,我相信这属于 CW,因为它要求“好”的书,这是主观的。

标签: algorithm graphics raytracing


【解决方案1】:

我个人对这个话题了解不多,但通过 Google 快速搜索了一些包含一些非常相关信息的正式论文:

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 算法的当前列表”;它有一个部分列出了很多并详细描述了它们,重点是军事应用。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    通常,一个人将世界表示为保存在某种空间分区数据结构中的一组空间体积,然后将表示您的“视线”的射线与该结构相交以找到它所击中的对象集;然后从射线源开始按顺序遍历这些以确定整体结果。反射物体会导致发射更多光线,不透明物体会停止行走,半透明物体会部分影响结果。

    您可能想阅读光线追踪;有大量关于该主题的文献以及解决您列出的基本相同问题的易于理解的方法。

    【讨论】:

    • 我见过的大多数光线追踪资源都只关注我列出的基础知识,我找不到与任何高级相关的任何内容
    • 把所有这些东西想象成半透明的对象。因此,烟雾是一个空间体积,其不透明度与穿过它的光线部分的长度成正比,等等。对于实际的光线追踪,您还需要阅读诸如程序噪声生成之类的主题,但对于 LOS你只是对不透明度/反射性感兴趣,对吧?
    【解决方案3】:

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

    我做过依赖视线的游戏,你真的需要清楚地考虑你想要什么样的视线。

    首先,人工智能可以看到你身体的任何部位吗?还是您说的是“眼对眼”LOS?

    其次,如果玩家的镜头视野不是他的虚拟形象的视野,玩家将不会将您的高度准确的 LOS 视为高度准确。在这一点上不准确是可以的。

    我并不是要劝阻你,但请记住,玩家体验是第一,这可能意味着没有拥有最好的 LOS。

    我的一个好朋友为一系列流行的主机游戏制作了 AI。他经常讲述一个关于 AI 在第一场比赛中如何最有趣(和最有趣)的故事,因为他们偶然发现了你,而不是从远处看到你。现在,他拥有出色的 LOS,并花时间试图让它们变得笨拙,以使它们像第一场比赛中一样有趣。

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

    【讨论】:

    • 挑战是其中很大一部分,当我研究天气预报模型并想知道创建一个视线算法与它们一起工作会有多难时,我想到了这个想法。
    【解决方案4】:

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

    当今光线追踪器中最常用的算法只是增量光线行进,这在定义上是不正确的,但它确实在一定程度上接近了终极答案。

    即使您设法将所有这些属性合并到一个主算法中,您仍然必须以某种方式处理不同的人如何看待相同的设置。有的人近视,有的人远视。然后是色盲。更不用说大气中的灰尘水平也会影响泪腺,进而影响能见度。然后是人们实际看到的和他们认为看到的之间的完全二分法......

    这里有太多变数,无法以统一的解决方案为目标。将您的环境视为体素化空间,并通过它发射光线。我怀疑这是您在一生中能够完成的唯一解决方案...

    【讨论】:

      猜你喜欢
      • 2014-03-26
      • 1970-01-01
      • 2010-12-08
      • 1970-01-01
      • 2011-03-24
      • 2016-02-20
      • 2016-07-14
      • 2010-10-14
      • 1970-01-01
      相关资源
      最近更新 更多