UE5 蓝图自定义节点:C++ 实现图片灰度值读取
UE5 蓝图自定义节点:C++ 实现图片灰度值读取
本文将介绍如何在 UE5 蓝图中创建自定义节点,使用 C++ 代码实现根据输入图片逐像素读取灰度值,并将结果输出到数组。
代码实现
Header 文件 (MyBlueprintFunctionLibrary.h):
#pragma once
#include "Kismet/BlueprintFunctionLibrary.h"
#include "MyBlueprintFunctionLibrary.generated.h"
UCLASS()
class MYPROJECT_API UMyBlueprintFunctionLibrary : public UBlueprintFunctionLibrary
{
GENERATED_BODY()
public:
UFUNCTION(BlueprintCallable, Category = "MyFunctions")
static TArray<float> GetGrayscalePixels(UTexture2D* Texture);
};
CPP 文件 (MyBlueprintFunctionLibrary.cpp):
#include "MyBlueprintFunctionLibrary.h"
#include "Engine/Texture2D.h"
TArray<float> UMyBlueprintFunctionLibrary::GetGrayscalePixels(UTexture2D* Texture)
{
TArray<FColor> Colors;
Texture->GetMipData(Colors, 0);
TArray<float> GrayscalePixels;
GrayscalePixels.SetNumUninitialized(Colors.Num());
for (int32 i = 0; i < Colors.Num(); i++)
{
float Grayscale = (Colors[i].R + Colors[i].G + Colors[i].B) / 3.0f;
GrayscalePixels[i] = Grayscale;
}
return GrayscalePixels;
}
代码解释:
- 头文件:声明一个名为
UMyBlueprintFunctionLibrary的类,继承自UBlueprintFunctionLibrary,并定义一个名为GetGrayscalePixels的静态函数,该函数接受一个UTexture2D类型的纹理指针,并返回一个包含灰度值的TArray<float>数组。 - CPP 文件:实现
GetGrayscalePixels函数,该函数首先通过Texture->GetMipData获取纹理的像素数据,存储在TArray<FColor>数组Colors中。然后,创建一个同等大小的TArray<float>数组GrayscalePixels,用于存储灰度值。最后,循环遍历每个像素的颜色,计算其灰度值,并将结果存储在GrayscalePixels数组中。
使用方法
在 UE5 蓝图中,你可以使用这个自定义节点来读取图片的灰度值。只需将一个 Texture2D 类型的图片连接到节点的输入端口,即可得到包含灰度值的数组。
示例:
// 获取图片的灰度值
GrayscalePixels = GetGrayscalePixels(ImageTexture);
// 使用灰度值进行其他操作
...
总结
本文提供了一个在 UE5 蓝图中创建自定义节点,并使用 C++ 代码实现图片灰度值读取的完整示例。通过使用 C++ 代码,你可以扩展 UE5 蓝图的功能,实现更复杂的操作。
原文地址: https://www.cveoy.top/t/topic/jtHT 著作权归作者所有。请勿转载和采集!