Unreal笔记-禁止Actor或Component进行视锥剔除(frustum-culling)(Render)
自定义UPrimitiveComponent时,通过PDI进行绘制时发现会发生视锥剔除(frustum-culling)的问题
查询原因是没生成Bounds的问题.(UE是通过边缘检测进行视锥剔除的)
可通过重写UPrimitiveComponent::CalcBounds模拟一个Bounds
Ref:
unreal 的剔除原理:
https://docs.unrealengine.com/4.27/en-US/RenderingAndGraphics/VisibilityCulling/
e.g:
UCLASS() class XXX_API UCanvasGridProxy final : public UPrimitiveComponent { GENERATED_BODY() public: UCanvasGridProxy() { PrimaryComponentTick.bCanEverTick = false; } private: virtual FBoxSphereBounds CalcBounds(const FTransform& LocalToWorld) const override { FBoxSphereBounds b ; b.Origin = FVector(0); b.SphereRadius = 1000; b.BoxExtent.Set(1000, 1000, 1000); //b.SphereRadius = 1000; return b; } virtual FPrimitiveSceneProxy* CreateSceneProxy() override { return new FCanvasGridProxy(this); } };
如果要限制FPrimitiveSceneProxy的遮挡剔除可以重写FPrimitiveSceneProxy::CanBeOccluded,自己计算遮挡剔除的运算逻辑
virtual bool CanBeOccluded() const override { return false; }//这里直接均不进行遮挡剔除
Note:CalcBounds的调用由UE完成,需要更新calcBounds函数时请调用函数:
UActorComponent::MarkRenderStateDirty()
本文原创,不定时更新
可以随意转载到任何网站
~但是~ 转载也要按“基本法”
请注明原文出处和作者
分类:
UE4
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理