【问题标题】:How to generate random blobs?如何生成随机 blob?
【发布时间】:2017-03-05 02:55:52
【问题描述】:

我想在 3D 中生成随机形状。我希望这些形状是斑点,基本上可以通过取一个球体并将其扭曲为不太规则的形状,但仍然主要是紧凑的。想想拿一个粘土球并轻轻捏或推拉它。表面上的表面曲率或不规则的尺度应该可以使用某种参数来控制。我希望输出是一个由体素组成的体积(1 表示内部,0 表示外部),尽管可以转换为体积的表面也可以。

我研究过高斯随机球体,它们是球谐函数的叠加。我无法弄清楚这些的数学原理,并且任何地方都没有示例代码。此外,它们不能生成任何具有悬垂的形状(即,来自球体中心的光线与表面多次相交)。

【问题讨论】:

    标签: random 3d shape shapes voxel


    【解决方案1】:

    使用 3D metaballs

    随机生成一组 3D 点。 5 或更少应该可以工作,但你可以改变这个。

    对于每个体素,计算到每个点的反距离(或体素和点坐标的一些其他函数)并将它们相加。如果总和等于或大于阈值,则在 blob 中,如果小于阈值,则在外部。

    您可以改变阈值,并可选择为每个点赋予不同的随机权重(可以为负数)。粗略地说,您希望每个点的阈值距离重叠,否则您将只有一堆单独的球体。

    【讨论】:

      【解决方案2】:

      我使用 libnoise ... http://libnoise.sourceforge.net/

      这是一个通用噪声库,设计用于生成 perlin / simplex 或其他类型的“伪随机”数据。

      “seudo”意味着它已播种,因此我们可以通过提供相同的种子值来重新计算完全相同的数据,例如程序生成纹理的虚拟世界。

      它可以很容易地配置为生成你想要的东西。

      【讨论】:

        猜你喜欢
        • 2013-12-08
        • 2017-05-10
        • 2011-02-19
        • 2011-10-19
        • 1970-01-01
        • 1970-01-01
        • 2021-05-15
        • 1970-01-01
        • 2020-08-06
        相关资源
        最近更新 更多