Perlin噪声目的是为了生成连续变化的随机值。这里推荐一个使用unity实现的perlin噪声插件,包含源码,源码下载地址:https://download.csdn.net/download/hulinhulin/88323641https://download.csdn.net/download/hulinhulin/88323641
插件界面:
点击Generate生成噪声,点击SaveToDisk将噪声保存到本地
主要参数说明:
SaveToDiskPath:保存路径
Resolution:分辨率
Frequency:频率
Is3D:生成3D噪声
IsTilable:生成连续的噪声,需要保证分辨率/频率=整数,例如 256 / 4,256 / 8
FbmIteration:分形噪声迭代次数
RemapTo01:将噪声值重新映射到[0,1]
Invert:将噪声值反相
Evolution:演化动画,需要配合脚本使用
提示:3D噪声的内存占用和运算量都比较大,生成3D噪声时,分辨率最好不要超过256(除非你的显卡很棒)
示例
默认2D噪声
关闭/开启连续
不连续
四方连续
开启重映射,FbmIteration = 8
演化,需要配合脚本使用
public class PerlinNoise_Test_Evolution : MonoBehaviour {
public float evolutionSpeed;
public PerlinNoise perlinNoise;
private void FixedUpdate() {
float time = Time.realtimeSinceStartup;
if (time % 3 < 1) {
perlinNoise.evolution.x += Time.fixedDeltaTime * evolutionSpeed * 1.0f;
perlinNoise.evolution.y += Time.fixedDeltaTime * evolutionSpeed * 0.75f;
perlinNoise.evolution.z += Time.fixedDeltaTime * evolutionSpeed * 0.5f;
}
else if (time % 3 < 2) {
perlinNoise.evolution.x += Time.fixedDeltaTime * evolutionSpeed * 0.75f;
perlinNoise.evolution.y += Time.fixedDeltaTime * evolutionSpeed * 1.0f;
perlinNoise.evolution.z += Time.fixedDeltaTime * evolutionSpeed * 0.5f;
}
else {
perlinNoise.evolution.x += Time.fixedDeltaTime * evolutionSpeed * 1.0f;
perlinNoise.evolution.y += Time.fixedDeltaTime * evolutionSpeed * 0.5f;
perlinNoise.evolution.z += Time.fixedDeltaTime * evolutionSpeed * 0.75f;
}
perlinNoise.Generate();
}
}
关闭/开启连续
不连续
六方连续
开启重映射,FbmIteration = 8