首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >撕纸效果(将一个矩形分割成随机形状)

撕纸效果(将一个矩形分割成随机形状)
EN

Stack Overflow用户
提问于 2018-06-16 13:35:43
回答 1查看 377关注 0票数 0

我要找的是在这个古老的问题中显示的效果

代码语言:javascript
运行
复制
+--------+--------+
|\       |   2    |
| \  1   |''--..__|
|  ------|  5     |
| 3  /   \________|
|   /    /\   6   |
|__/ 4  /  \______|
|      /  7       |
+-----+-----------+

最终的目标是制作一个程序上的“撕纸”效果,类似于这张图片的形状。

Voronoi图的建议并没有做我想做的事情,因为它看起来不是“有机的”,也不会产生凹的部分。

每一小部分,我以后可以处理,现在我正在寻找如何做这个问题的宏的建议。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-16 14:30:44

在你所展示的图像中,切割是由直线上方的随机噪声构成的。如果去掉噪声,就会留下一串直线(在本例中为8),并且所有的部分都是凸的。从最下面的左边取第三个部分:它看起来像一个5面(也许是6面)凹面,但实际上它只是一个4面凸起的部分。它的顶部是非常不均匀的,但这是噪音的结果,顶部的底部-最水平的切割。如果这就是你所说的“有机外观”的意思,那么这里就是你可以做的复制它的方法。

首先,一个接一个地产生随机直线,最好是使用蓝色噪声或类似的东西(这样你就不太可能在大的旁边得到很多微小的碎片)。蓝色噪声常用于空间采样,以避免使用白噪声或根本没有噪声的固有问题(常规模式)。

如果您需要在最后得到一定数量的片段,您可以轻松地计算它们(并停留在这个数字上),方法是计算每一个新的相交点的行数。不与任何其他切割相交的裁剪只会产生另一片。对于每一个新的交叉口,它会产生另外一个:如果一个切分与前面的两个切分相交,那么它会产生一个加两个:多三个片段。

一旦你计算出一组令人满意的直线,在每条直线上都加上粉红色的噪音。例如,粉色噪声(或分形噪声)被用于视频游戏中的随机地形生成(显然有更多的,但它往往是一个主要的成分)。Perlin噪声是粉红色噪声的一个例子。这将给你“有机的外观”,至少在当地。

这给了你每一个切割的形状。最后一个要处理的问题是在交叉口(包括边境):由于切割的形状不规则,你可能会在切割相交的地方产生很小的碎片。解决这个问题的一个方法是让每个人一个一个地切下来,然后在离开报纸的时候停下来,即使在那之后它还会持续一点点。对于第一个切割,您只需注意边界。对于下一个,你也需要注意与以前的削减交叉。

如果您需要更多关于不同噪音颜色的信息,我可以推荐如下:噪声函数与地图生成

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50888387

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档