【问题标题】:Make 3D perlin noise function from 2D function从 2D 函数制作 3D perlin 噪声函数
【发布时间】:2012-04-19 00:57:15
【问题描述】:

所以,我正在尝试使用 openGL 绘制随时间变化的抽象形状。为此,我想使用 Perlin 噪声函数。这段代码 (http://www.sorgonet.com/linux/noise_textures/) 对我来说是一个完美的开始,除了这里找到的函数只需要两个坐标。我想要一个需要两个空间坐标的,第三个会随时间变化。

我的问题是:是否可以调整此功能以使用更多坐标?

【问题讨论】:

    标签: c opengl noise perlin-noise


    【解决方案1】:

    是的,有可能。

    您可以毫无问题地将时间维度视为空间维度。

    对于 2D 噪声,您将使用像这样的 2D 插值,以双线性为例,但这个想法应该适用于双三次等:

    第一步:

    您有 4 个外部值,其中一个点用于获取值。

    +    +
    
      x
    
    
    +    +
    

    第二步:

    在 Y 轴上插值。

    +-+--+
    
      x
    
    
    +-+--+
    

    第三步:

    在 Y 轴上插值。

    +-+--+
      |
      x
      |
      |
    +-+--+
    

    现在我们有了插值。

    现在,要添加第三个维度,我们从 8 个值开始并添加一个额外的步骤:在 Z 轴上插值。这将扩展到任意多个维度。

    【讨论】:

    • 这种方法比 Simplex Noise 慢,并且会产生更多(对于大多数目的来说是次要的)伪影;)
    • @Monkey:是的,但是 OP 要求 Perlin 噪音,所以我不想混淆他。
    【解决方案2】:

    3d perlin 噪声怎么样? http://webstaff.itn.liu.se/~stegu/aqsis/DSOs/DSOnoises.html

    为您的几何图形使用 2 个坐标,一个用于时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-30
      • 2011-08-01
      • 2015-08-16
      • 1970-01-01
      • 2012-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多