在 UE5 蓝图中使用 C++ 生成二维 Perlin 噪声节点

本教程将指导您使用 C++ 创建一个自定义的 UE5 蓝图节点,用于生成二维 Perlin 噪声。该节点将接受两个输入值(x 和 y 坐标)以及噪声参数(persistence、octaves 和 lacunarity),并输出一个二维 Perlin 噪声值。

1. 创建自定义蓝图节点

首先,我们需要创建一个新的 C++ 类并继承自 UE5 的 UBlueprintFunctionLibrary 类。

头文件代码 (MyBlueprintFunctionLibrary.h)

#pragma once

#include "CoreMinimal.h"
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"

UCLASS()
class MYPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
    GENERATED_BODY()

public:
    UFUNCTION(BlueprintCallable, Category = "My Functions")
    static float PerlinNoise2D(float x, float y, float persistence, int octaves, float lacunarity);
};

在这个头文件中,我们声明了一个名为 PerlinNoise2D 的静态函数。该函数接收五个参数:

  • x:x 坐标
  • y:y 坐标
  • persistence:持续性
  • octaves:八度数
  • lacunarity:间隙

并返回一个 float 类型的二维 Perlin 噪声值。

2. 实现 PerlinNoise2D 函数

接下来,我们需要实现 PerlinNoise2D 函数的代码。在这个函数中,我们将使用 FMath::PerlinNoise2D 函数来生成二维 Perlin 噪声。

CPP 代码 (MyBlueprintFunctionLibrary.cpp)

#include "MyBlueprintFunctionLibrary.h"
#include "Math/UnrealMathUtility.h"

static const int32 MAX_OCTAVES = 10;

float UMyBlueprintFunctionLibrary::PerlinNoise2D(float x, float y, float persistence, int octaves, float lacunarity)
{
    float total = 0;
    float frequency = 1;
    float amplitude = 1;
    float maxValue = 0;

    for (int i = 0; i < octaves; i++)
    {
        total += FMath::PerlinNoise2D(FVector2D(x * frequency, y * frequency)) * amplitude;
        maxValue += amplitude;
        amplitude *= persistence;
        frequency *= lacunarity;
    }

    return total / maxValue;
}

在这个函数中,我们首先定义了一些常量和变量:

  • MAX_OCTAVES:最大八度数
  • total:噪声值的总和
  • frequency:频率
  • amplitude:振幅
  • maxValue:振幅的最大值

然后,我们使用一个循环来生成多个八度的噪声值。在每个八度中,我们使用 FMath::PerlinNoise2D 函数生成一个二维噪声值,并将其乘以当前的振幅。我们还将振幅乘以持续时间,将频率乘以间隙。最后,我们将所有八度的噪声值相加,并将其除以振幅的最大值,得到最终的二维 Perlin 噪声值。

3. 将节点添加到 UE5 蓝图中

现在我们已经实现了 PerlinNoise2D 函数,接下来我们需要将其添加到 UE5 的蓝图中。

  1. 创建一个新的蓝图函数库,并将其命名为 MyBlueprintFunctionLibrary
  2. 在这个函数库中添加一个新的函数,并将其命名为 PerlinNoise2D
  3. PerlinNoise2D 函数的五个参数添加到函数签名中:xypersistenceoctaveslacunarity

现在,您可以在 UE5 的蓝图中使用 MyBlueprintFunctionLibrary 函数库,并调用 PerlinNoise2D 函数来生成二维 Perlin 噪声。

4. 使用自定义节点

MyBlueprintFunctionLibrary 添加到您的蓝图中后,您就可以使用 PerlinNoise2D 函数了。您可以将两个输入值作为函数的参数,并将其输出作为二维噪声值。

使用示例:

  1. 在蓝图中创建一个 PerlinNoise2D 节点。
  2. xy 坐标输入到节点的相应输入端口。
  3. 设置 persistenceoctaveslacunarity 参数。
  4. PerlinNoise2D 节点的输出端口获取二维 Perlin 噪声值。

现在您已经成功地创建了一个自定义的 UE5 蓝图节点,可以生成二维 Perlin 噪声,并将其用于各种用途,例如地形生成、纹理生成和动画。

UE5 蓝图节点:二维 Perlin 噪声生成

原文地址: https://www.cveoy.top/t/topic/jw8I 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录