UPDATE:问题的正式列表:
- 2D噪声实现的浮点值(输入参数和输出)代表什么 -部分回答,输入为坐标。欧普怎么样?另外,我可以用我的整数作为坐标的浮点值吗?1.0、122.0等
- 在2D噪声生成器中实现种子的好方法是什么 我应该使用第三个参数作为种子使其成为3D噪声生成器吗?这是否意味着每个种子都可以生成唯一的2D噪声
- 与2d地图一起,生成位图似乎是沿着相同的路线进行的 如何从输出生成位图 大概是漂浮的
我的问题是,剪切粘贴perlin噪波2D实现的浮点值(输入参数和输出)代表什么?如何从它们生成位图?如果我能得到某种数据类型的2d数组,我相信我能想出如何使用它来模拟我的地形。
而且,如果我能确保我能为它们播种价值,我会使用剪切粘贴实现。这是问题的另一部分,我在这里发现了一个没有答案的问题在噪声生成器中实现种子的好方法是什么?
好的,我知道这个问题已经被问了很多次了,所以让我解释一下我研究和发现了什么。
首先,我在这里找到了这个网站,它似乎是向我解释它的赢家。然而,我随后提出了另一个问题,我发现这个问题在这里被问到了,但并没有完全回答。
然后,我试着把手弄脏,用Java编写一些代码,这是我选择的语言。我发现了这个,这让我尝试了哈希函数作为我的噪声函数的答案,因为我可以在那里使用种子。然后我遇到了一个问题,它没有返回一个float来遵循教程中的其余过程。回到绘图板上。一路上,我发现了更多的网站有关于佩林噪音的问题。
我在这里发现了一个我甚至还没有想到的未回答的问题,因为我还没有让我的实现工作起来。我再也找不到链接了,但它说了一些类似的话,即使你有一个复制粘贴的实现,你在函数中输入的浮点值是多少?有人告诉我,我需要通过INTEGERS,这是我在地图上的x和y。我也从剪切和粘贴实现中获得浮点输出。这些是什么意思?那些2D怎么样?如果我能将事物保持为整数,这在我的大脑中是有意义的,但在某种程度上,我认为将它们保持为整数对于插值和平滑连续曲线的值来说是不合理的。
根据我对代码的理解,这些只是您想要值的坐标。
除非您想支持无抖动缩放,否则使用float
在这里似乎没有意义。使用float
值,可以通过计算中间值轻松地放大风景。
1/这些值是样本之间的线性或三次插值,随机点形成二维网格,因此每个点都是由随机函数生成的4个预定的非计算的最接近点之间的计算平衡。
2/这太棒了:
function rndng ( n: float ): float
{//random linear graph -1, 1
var e = ( n *122.459)%1;
return (e*e*143.754)%2-1;
}
function rnd2d ( n: float, m: float ): float
{//random 2d gooed enough for mountains -1, 1
var e = ( n*m *31.178694)%1;
return (e*e*137.21321)%1;
}
如果速度不是问题,你可以将它们乘以5-10来获得超随机函数,否则它是cpu上速度最快的函数。
3/您必须访问位图读写库函数,并写入像素,即获取像素、设置像素。读取和写入位图,以及创建和保存位图文件和文件名。