如何便捷地修改不同相机的近裁面。

大佬们好,使用r.SetNearClipPlane 可以设置相机的近裁面。但是是一个局的设置。

但是我们场景相机,对话NPC的SceneCapture相机,3d UI的相机,都是不同的相机。没办法只使用一个全局r.SetNearClipPlane参数来设置近裁面。

有什么便捷的方法来设置不同相机的近裁面吗?

如果是魔改引擎来实现的话,有什么指引吗?官方会推荐这样子做吗?

您好,cine camera是支持逐个camera修改 nearplane的

在 UCineCameraComponent::GetCameraView 中

DesiredView.PerspectiveNearClipPlane = bOverride_CustomNearClippingPlane ? CustomNearClippingPlane : -1.0f;

可以参考cinecamera,自己继承一个 CameraComponent,添加​

uint32 bOverride_CustomNearClippingPlane:1;

float CustomNearClippingPlane;

然后在​ GetCameraView 中修改

嗯。

如果这么修改的话,场景的主机相,可以直接使用cinecamera吗?

我们现在想只改游戏主相机的近裁面,而不修改其它UI相机, scene capture相机的。

因为,那些相机在现在的代码中很多,要把那些相机换成cinecamera逻辑层要改比较多的代码。

所以,我们保留其它相机参数不变,只修改场景主相机的近裁面。还有别的建议吗?

我觉得最简单的还是直接修改 camera component,在 GetCameraView 中对 DesiredView.PerspectiveNearClipPlane 赋值就可以了

好的,我们试试。

这样改的话,是否会影响到camerastacktypes.cpp里的逻辑。

特别是像FMinimalViewInfo::CalculateProjectionMatrix()

在GetCameraView里更新DesiredView.PerspectiveNearClipPlane的值,就是给CalculateProjectionMatrix 的时候用的

在构造这个投影矩阵前,一般都会调用GetFinalPerspectiveNearClipPlane(), 而这个值就是在 GetCameraView里设置的