UE5多人MOBA+GAS 42、提高头像画质
文章目录
- 添加接口修改渲染摄像机的位置和旋转
- 提高画质
添加接口修改渲染摄像机的位置和旋转
添加一个接口RenderActorTargetInterface
,用于修改头像渲染的摄像机位置以及方向
#pragma once#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "RenderActorTargetInterface.generated.h"// This class does not need to be modified.
UINTERFACE(MinimalAPI)
class URenderActorTargetInterface : public UInterface
{GENERATED_BODY()
};/*** 角色渲染目标接口* 用于获取角色渲染时的捕获位置和旋转(如头像渲染、预览等)*/
class IRenderActorTargetInterface
{GENERATED_BODY()// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:// 获取捕获的本地位置virtual FVector GetCaptureLocalPosition() const = 0;// 获取捕获的本地旋转virtual FRotator GetCaptureLocalRotation() const = 0;
};
让角色基类继承该接口
class ACCharacter : public ACharacter, public IAbilitySystemInterface, public IGenericTeamAgentInterface, public IRenderActorTargetInterface
public:// 获取头像截取的位置virtual FVector GetCaptureLocalPosition() const override;// 获取头像截取的旋转virtual FRotator GetCaptureLocalRotation() const override;private:// 头像截取位置和旋转UPROPERTY(EditDefaultsOnly, Category = "Capture")FVector HeadshotCaptureLocalPosition;UPROPERTY(EditDefaultsOnly, Category = "Capture")FRotator HeadshotCaptureLocalRotation;
FVector ACCharacter::GetCaptureLocalPosition() const
{return HeadshotCaptureLocalPosition;
}FRotator ACCharacter::GetCaptureLocalRotation() const
{return HeadshotCaptureLocalRotation;
}
void USkeletalMeshRenderWidget::NativeConstruct()
{Super::NativeConstruct();// 获取拥有该UI的玩家角色ACharacter* PlayerCharacter = GetOwningPlayerPawn<ACharacter>();// 尝试转换为渲染目标接口IRenderActorTargetInterface* PlayerCharacterRenderTargetInterface = Cast<IRenderActorTargetInterface>(PlayerCharacter);if (PlayerCharacter && SkeletalMeshRenderActor){// 配置骨骼网格和动画类SkeletalMeshRenderActor->ConfigureSkeletalMesh(PlayerCharacter->GetMesh()->GetSkeletalMeshAsset(), PlayerCharacter->GetMesh()->GetAnimClass());// 获取场景捕捉组件USceneCaptureComponent2D* SceneCapture = SkeletalMeshRenderActor->GetCaptureComponent();// 如果接口和场景捕捉组件都有效if (PlayerCharacterRenderTargetInterface && SceneCapture){// 设置捕捉组件的相对位置和旋转SceneCapture->SetRelativeLocation(PlayerCharacterRenderTargetInterface->GetCaptureLocalPosition());SceneCapture->SetRelativeRotation(PlayerCharacterRenderTargetInterface->GetCaptureLocalRotation());}}
}
到角色中设置摄像机的位置以及旋转
提高画质
取消这个大气的勾选后背景将会变成黑色
添加新的材质设置为后期处理
勾选输出透明度
把刚刚的材质放入后处理材质中
修改头像UI的尺寸
到GameplayWidget中再用一个尺寸框包裹住头像,重载其高度和宽度
应该算是有提升吧