unity实现Perlin噪声

        Perlin噪声目的是为了生成连续变化的随机值。这里推荐一个使用unity实现的perlin噪声插件,包含源码,源码下载地址:https://download.csdn.net/download/hulinhulin/88323641icon-default.png?t=N7T8https://download.csdn.net/download/hulinhulin/88323641

插件界面:

unity实现Perlin噪声_第1张图片

点击Generate生成噪声,点击SaveToDisk将噪声保存到本地

主要参数说明:

SaveToDiskPath:保存路径

Resolution:分辨率

Frequency:频率

Is3D:生成3D噪声

IsTilable:生成连续的噪声,需要保证分辨率/频率=整数,例如 256 / 4,256 / 8

FbmIteration:分形噪声迭代次数

RemapTo01:将噪声值重新映射到[0,1]

Invert:将噪声值反相

Evolution:演化动画,需要配合脚本使用

提示:3D噪声的内存占用和运算量都比较大,生成3D噪声时,分辨率最好不要超过256(除非你的显卡很棒)

示例

默认2D噪声

unity实现Perlin噪声_第2张图片

关闭/开启连续

unity实现Perlin噪声_第3张图片

不连续

unity实现Perlin噪声_第4张图片

四方连续

开启重映射,FbmIteration = 8

unity实现Perlin噪声_第5张图片

演化,需要配合脚本使用

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();
    }
}

unity实现Perlin噪声_第6张图片

unity实现Perlin噪声_第7张图片

unity实现Perlin噪声_第8张图片

关闭/开启连续

unity实现Perlin噪声_第9张图片

不连续

unity实现Perlin噪声_第10张图片

六方连续

开启重映射,FbmIteration = 8

unity实现Perlin噪声_第11张图片

你可能感兴趣的:(图像视频处理,unity,游戏引擎)