大佬们好,使用r.SetNearClipPlane 可以设置相机的近裁面。但是是一个局的设置。
但是我们场景相机,对话NPC的SceneCapture相机,3d UI的相机,都是不同的相机。没办法只使用一个全局r.SetNearClipPlane参数来设置近裁面。
有什么便捷的方法来设置不同相机的近裁面吗?
如果是魔改引擎来实现的话,有什么指引吗?官方会推荐这样子做吗?
大佬们好,使用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里设置的