2012-04-19 45 views
0

所以,我试图绘制使用openGL随时间变化的抽象形状。为此,我想使用Perlin噪声函数。这个代码(http://www.sorgonet.com/linux/noise_textures/)对我来说是一个完美的开始,除了这里发现的函数只有两个坐标。我想要一个需要两个空间坐标和第三个空间坐标,随着时间的推移。从2D功能制作3D perlin噪声功能

我的问题是:是否有可能使这个函数适用于多一个坐标?

回答

1

是的,这是可能的。

您可以将时间维度作为空间维度处理,而不会有任何问题。

对于2D噪音,您将使用2D插值这样,使用双线性作为一个例子,但这个想法应该与双立方等:

第一步工作:

你有4点以外的值,并在他们的内部获得价值。

+ + 

    x 


+ + 

第二步:

插值在Y轴上。

+-+--+ 

    x 


+-+--+ 

第三步:

插值在Y轴上。

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

现在我们有插值了。

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

+0

这种方法比单工噪声慢,并且产生更多(对于大多数用途而言较小)伪影;) – Monkey 2012-04-19 01:55:24

+1

@Monkey:是的,但OP要求佩林噪声,所以我不想混淆他。 – 2012-04-19 11:47:50