如何找到多个凹面&图像中的凸形

时间:2016-07-18 12:38:40

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

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

我目前所做的是将纹理的大小从2048x2048缩小到256x256,然后在面板中的每个蓝色像素的3D空间中创建一个对撞机。这适用于少量蓝色像素,但如果有很多蓝色像素(水),它根本无法正常工作。在飞行中产生的碰撞器太多了。

所以我想唯一的另一个选择是找到构成图像中任意数量凹形的边界的点。我将用它来创造墙壁碰撞器。

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

感谢enter image description here

1 个答案:

答案 0 :(得分:1)

在将尺寸减小到更小的尺寸之后,用零和1填充bool数组,有蓝色的填充数组和零填充,其中没有#t; t。从那里你可以将没有零邻居的所有那些变为零。这是因为如果一个单元格没有空的邻居并且它本身没有空,那么没有任何对象可能会与它发生碰撞而您不需要检查。这应该会大大提高性能,但是如果你需要更多,你可以找到填充单元格的所有直线并检查与那些冲突的冲突。所以它看起来像这样:

enter image description here

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