关闭Unreal Engine移动端HDR导致AR模板相机画面垂直翻转
Unreal Engine Android端关闭HDR后AR相机画面翻转的解决方案
问题背景
关闭UE移动端HDR渲染解决了光照异常、网格体渲染故障及应用卡顿问题,但引发AR模板相机画面垂直翻转。已尝试修改相机流材质UV、调整项目设置,均未解决。
蓝图实现方案
方案1:后处理材质翻转画面
- 创建后处理材质(Material Domain设为Post Process)
- 材质节点中,将纹理采样的UV坐标Y分量取反:
1 - TextureCoordinate.Y - 将该材质添加到AR相机所属的后处理体积,或直接绑定到相机的
Post Process Settings,设置高优先级确保生效
方案2:修改相机投影矩阵
- 在AR相机蓝图中,获取
Get Camera Projection Matrix节点 - 用
Make Matrix或Set Matrix Component将矩阵的Y轴缩放值改为原数值的相反数 - 通过
Set Camera Projection Matrix将修改后的矩阵应用到相机
C++代码实现方案
方案1:后处理材质绑定
在AR相机Actor的派生类中添加代码:
#include "Camera/CameraComponent.h" #include "Engine/PostProcessVolume.h" #include "Materials/MaterialInstanceDynamic.h" void AARCameraFixActor::BeginPlay() { Super::BeginPlay(); // 创建并绑定翻转后处理材质 UMaterial* FlipPostProcessMat = LoadObject<UMaterial>(nullptr, TEXT("/Game/PostProcess/PP_FlipVertical.PP_FlipVertical")); if (FlipPostProcessMat) { UMaterialInstanceDynamic* DynMat = UMaterialInstanceDynamic::Create(FlipPostProcessMat, this); APlayerController* PC = GetWorld()->GetFirstPlayerController(); if (PC) { PC->AddPostProcessMaterial(DynMat, 100.f); // 设置高优先级 } } }
方案2:直接修改投影矩阵
#include "Camera/CameraComponent.h" void AARCameraFixActor::BeginPlay() { Super::BeginPlay(); UCameraComponent* CameraComp = GetCameraComponent(); if (CameraComp) { FMatrix ProjMatrix = CameraComp->GetProjectionMatrix(); // 翻转Y轴投影 ProjMatrix.M[1][1] = -ProjMatrix.M[1][1]; CameraComp->SetProjectionMatrix(ProjMatrix); } }
额外排查建议
- 确认项目设置
Rendering > Mobile > Disable HDR已勾选 - 检查AR模板默认相机流材质是否存在硬编码UV逻辑,可尝试替换为自定义材质
- 查看
Project Settings > Rendering > Mobile中是否有Camera Image Flip相关选项,直接调整系统设置
内容的提问来源于stack exchange,提问作者mohammad ramezani
相关产品推荐
相关产品推荐

