【问题标题】:How to find multiple concave & convex shapes in an image如何在图像中找到多个凹凸形状
【发布时间】:2016-11-21 01:46:57
【问题描述】:

所附图像是游戏的“可行走空间”蒙版,由玩家绘制,因此可以是任何东西。我需要创建碰撞器来防止玩家走到面具的蓝色部分(水)。游戏本身在 3D 空间中,遮罩用于地形纹理(虚幻引擎 4)。

我目前所做的是将纹理的大小从 2048x2048 减小到 256x256,并在 3D 空间中为蒙版中的每个蓝色像素创建一个碰撞器。这适用于少量蓝色像素,但如果有很多蓝色像素(水),它就不会很好/根本无法正常工作。会有太多的对撞机在运行中生成。

所以我想唯一的其他选择是找到构成图像中任意数量凹形边界的点。我将使用它来创建墙壁对撞机。

希望这是有道理的。非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: algorithm geometry shapes unreal-engine4 concave-hull


    【解决方案1】:

    在将大小减小到较小的值后,用 0 和 1 填充 bool 数组,有蓝色的地方是蓝色的,没有蓝色的地方是零。从那里你可以把所有没有零邻居的人都归零。那是因为如果一个单元格没有空的邻居并且它本身也不是空的,那么没有物体可以与它发生碰撞,你不需要检查。这应该会大大提高性能,但如果您需要更多,您可以找到所有填充单元格的直线并检查与这些直线的碰撞。所以它看起来像这样:

    在这种情况下,您最终必须检查 6 个对象而不是 18 个对象的碰撞,并且随着 blob 变大,差异会越来越大。

    【讨论】:

    • 感谢您的建议,非常感谢。我会实现它,看看它的表现如何!
    • @Dann 那么,它的表现如何?
    猜你喜欢
    • 2012-11-05
    • 2016-10-21
    • 2012-04-30
    • 1970-01-01
    • 2014-10-31
    • 2011-10-05
    • 2013-07-11
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多