使用C++编写一个UE5蓝图中可用的节点功能是根据输入的图片逐像素读取灰度并将灰度值输出到一个数组请提供完整的cpp和头文件代码
以下是一个简单的例子,可用于UE5蓝图中的自定义节点:
Header文件:
#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文件:
#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;
}
这个节点使用了UE4的TArray和FColor类来处理像素和颜色。它首先从输入的纹理中获取像素数据,然后将每个像素的灰度值计算出来,并将它们存储在一个TArray
原文地址: https://www.cveoy.top/t/topic/bMjN 著作权归作者所有。请勿转载和采集!