Mesh生成组件
ProcedualMeshComponent (PMC)
UE自带
CreateMeshSection:将零散的三角面集整理成 PMC 分段数据
CreateSceneProxy:将数据从 PMC 分段转换成代理版本,也就是渲染器数据
FPrimitiveSceneProxy:在渲染数据都准备就绪后,渲染器会在合适的时机在渲染线程调用一系列接口以获取渲染需要信息
UpdateCollision:更新组件的碰撞数据
SimpleDynamicMeshComponent (SDMC)
不支持物理
StaticMeshComponent (SMC)
UE自带
参数
UStreamableRenderAsset
:用来序列化资源的,也就是对应硬盘上的资源
LockedProperties
RenderData
LODResources
:
应用场景:当玩家靠近您在场景中放置的静态网格模型时,您想要让网格模型看起来非常细致。但是,一旦玩家远离网格模型,您就不需要让网格模型那么细致和复杂了。
LODs:Level of Details
LODVertexFactories
ScreenSize
:默认8个屏幕大小配置
NaniteResources
Bounds
SourceModels
RuntimeMeshComponent (RMC)
第三方组件
参考网址:link
URuntimeMeshComponent
与UStaticMeshComponent相似
URuntimeMesh
不直接在主存中存储数据,依赖于URuntimeMeshProvider重新获取
URuntimeMeshProvider
其主要涉及一个URuntimeMesh如何获取配置,renderable mesh data 以及 碰撞信息 等
官方Mesh讲解
渲染流程
1、FPrimitiveSeceneProxy:为了保证线程安全,采用代理对象表示游戏线程
2、针对DynamicMesh,由于cache中没有与其相关的信息,通过调用GetDynamicMeshElement()
获得FMeshBatch
,达到FPrimitiveSeceneProxy
与MeshPass解耦的效果
3、绘制,Traverse StaticMeshDrawList
以及Drawing Policy
Drawing Policy
指导绘制通道,包括基本通道以及阴影通道等
Traverse StaticMeshDrawList
以及Drawing Policy
功能:
构建Pipeline State,如shaders+graphics state
4、通过绘制得到RHICommandList commands
集合
5、最后转换为DrawIndexedPrimitive
更改 4.22
去除Traverse StaticMeshDrawList
以及Drawing Policy
FMeshDrawCommand