UE5 蓝图节点:二维 Perlin 噪声生成
在 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 的蓝图中。
- 创建一个新的蓝图函数库,并将其命名为
MyBlueprintFunctionLibrary。 - 在这个函数库中添加一个新的函数,并将其命名为
PerlinNoise2D。 - 将
PerlinNoise2D函数的五个参数添加到函数签名中:x、y、persistence、octaves和lacunarity。
现在,您可以在 UE5 的蓝图中使用 MyBlueprintFunctionLibrary 函数库,并调用 PerlinNoise2D 函数来生成二维 Perlin 噪声。
4. 使用自定义节点
将 MyBlueprintFunctionLibrary 添加到您的蓝图中后,您就可以使用 PerlinNoise2D 函数了。您可以将两个输入值作为函数的参数,并将其输出作为二维噪声值。
使用示例:
- 在蓝图中创建一个
PerlinNoise2D节点。 - 将
x和y坐标输入到节点的相应输入端口。 - 设置
persistence、octaves和lacunarity参数。 - 从
PerlinNoise2D节点的输出端口获取二维 Perlin 噪声值。
现在您已经成功地创建了一个自定义的 UE5 蓝图节点,可以生成二维 Perlin 噪声,并将其用于各种用途,例如地形生成、纹理生成和动画。
原文地址: https://www.cveoy.top/t/topic/jw8I 著作权归作者所有。请勿转载和采集!