随机放置对象使用ALPHA MAP

时间:2016-03-14 16:39:59

标签: random procedural

我想使用ALPHA MAP随机放置对象(仅黑色,不是灰度)。地图上的黑色区域用于确定我们可以放置物体的位置。

为什么我要这样做?例如,我们有一些河流的地形。我们想在这个地形上随机放置一个胸部,重点是我们希望我们的胸部不要在河里。我们有一个特殊的位置来放置胸部,并且该位置可以具有非常复杂的结构。

湖泊和河流的简单地图:

link for simple map with lake and river image

放置物品的位置的黑/白地图:

link for black/white map of the location for placing objects image

当然,我们可以使用Random.Range()获取随机点,并通过将其与像素值进行比较来检查每个点:“黑点上的点是什么?”但是如果我们将具有非常小(<总面积的10%)和复杂的“可用”区域(例如,沼泽中的岛屿)那么将存在非常大量的“垃圾”点。因此这是一种非常低效的方法。

快速和性能技术是否存在以获得理想数量的“可用”点?

1 个答案:

答案 0 :(得分:1)

理论上,您可以按颜色分割alpha贴图以获得区域的几何多边形表示,然后可以在一组黑/白多边形内生成点algorithmically。 但是如果你愿意为速度换取内存,那么有一个更简单的解决方案:只需将alpha贴图表示为两个像素(黑色和白色)像素坐标,然后从所需数组中随机选取一个点。