【问题标题】:How to render vision, based on the motion in the environment?如何根据环境中的运动来渲染视觉?
【发布时间】:2016-12-22 19:25:15
【问题描述】:

我有一个游戏创意,你的角色的视觉完全基于环境中的运动。

我只是对这个想法的原型制作感兴趣并查看结果,但是我不知道如何接近“基于运动的视觉”算法。

我很感激任何关于从哪里开始研究的指导,以及对解决方案的直接答案。

提供有关问题的详细信息;

-角色的视觉仅限于环境中的运动。如果一个球在截锥体内移动,则只有球的运动可见,其他一切都是黑暗的。

-如果角色旋转,由于从视锥体的参考角度来看,整个场景看起来就像在移动,角色只要保持旋转就会看到整个环境。当它停止旋转时,一切都应该恢复为黑色。如果角色向任何方向移动,同样适用。只要视锥体移动,环境就会按照视锥体的参考视角移动,从而实现运动。

所以想一想,问题的简化版本是(?)向播放器显示屏幕上的任何更新,并将其他所有内容变暗。

正如我所说,我只对制作原型感兴趣,我并没有真正考虑过游戏玩法会如何。但是,如果您对游戏的荒谬程度有任何预见性,我也想听听您的意见。

提前谢谢你。

PS:我不确定标签,所以如果你能在问题中添加相应的标签,我真的很感激。

【问题讨论】:

    标签: unity3d unity5 opticalflow


    【解决方案1】:

    好主意!使用 Unity 5.4 中引入的 Renderer.motionVectors 通行证。它可能出于运动模糊目的而存在,但可能非常适合您的原型。

    一个简单地将美感渲染与去饱和运动矢量值相乘的自定义通道可以解决问题。

    如有任何进展,请回来!

    可以阅读更多关于Optical FlowOpenCV 的信息。

    【讨论】:

    • 我认为如果物体是静态的并且相机移动,这将不起作用,对吧?也许读取屏幕上的所有像素,然后与前一帧的像素进行比较?我知道这是一个非常缓慢的操作,但也许这是一条值得探索的道路。
    • @JonasGrumann 很好,它说“除了默认的相机重建运动矢量”。每个对象似乎表明可以包含/排除整个效果以呈现每个对象。 继续尝试。无论如何,如果可行的话,永远不要迟到移动整个场景而不是相机。
    • @JonasGrumann 像素比较:这是光流所做的,也是运动矢量所不具备的。 :)
    • 我明白这一点,但是如果除了相机之外没有任何物体在移动,运动矢量会起作用吗?
    • @JonasGrumann 我还没有使用运动矢量,但是你为什么不直接渲染一些东西看看呢?
    【解决方案2】:

    根据您的描述,您似乎对motion detection 感兴趣,而不是motion estimation/tracking/optical flow

    从某种意义上说,您始终可以通过运动估计技术获得运动检测,但估计结果需要更长的时间(尤其是众所周知的光流技术很慢)。此外,当您放松问题时,可以使用某些方法。

    话虽如此,您项目的一个有趣灵感来源可能来自编码方面......也许是您没有考虑过的。

    如果您的系统对视频使用了合理的编码器,例如 h264、h265、vp8 或 vp9,那么您很可能拥有您正在寻找的信息……免费。运动是视频有效传输的一部分。如果您可以破解接收端的解码器,您可以将信息与生成的帧一起获取。然后,您可以“轻松”删除更改因子较小的补丁。这样做的好处是您需要的 CPU 或内存资源可以忽略不计,并且延迟时间基本上为零(光流不会出现这种情况)。

    不利的一面是,许多解码器中固有的运动对于除编码之外的其他任何事情都非常不可靠,但可以通过一些智能信号处理技巧来克服这一点

    祝你好运,好主意:)

    【讨论】:

      猜你喜欢
      • 2020-04-21
      • 2021-08-28
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      相关资源
      最近更新 更多