[UE学习笔记][基于源码] 运行时网格 PMC / DMC / RMC

UE学习笔记基于源码 运行时网格 PMC / DMC / RMC

基于 UE 5.7 引擎源码

理清 UProceduralMeshComponent / UDynamicMeshComponent / URealtimeMeshComponent 三者的定位、数据结构、能力对比,回答"运行时构造 / 修改 mesh 该选谁"。


选型

  • PMC :低频构造、万级以下顶点的程序化 mesh、Debug 可视化、原型;不适合大顶点量或高频更新(API 强制整段重传 TArray<FVector> + 单顶点 152 B + 无 LOD / Nanite / GPUScene)
  • DMC :需要拓扑算法的几何编辑(CSG / Remesh / Sculpt / UV 重算等);拓扑不变时配合 FastNotifyPositionsUpdated / FastNotifyTriangleVerticesUpdated 也可做高频属性更新。不适合大量独立 actor 各持一份(每实例都背一套邻接 + Overlay,内存吃紧;无 LOD / Nanite / GPUScene)
  • RMC :高频生成 / 更新的大体量 mesh(体素地形 / Marching Cubes / 城市 Tile / 动态海洋等);不做几何拓扑编辑------RealtimeMeshAlgo 只提供渲染数据辅助算法(切线、polygon group 重排),需要 CSG / Remesh / Sculpt 先用 DMC 算几何再喂 RMC

横向对比

表中 + = 支持,- = 不支持,++ = 该组件的招牌强项。

维度 PMC DMC RMC
来源 引擎 引擎 第三方
支持版本 UE4+ UE5+ UE5+
数据结构 AoS 索引+邻接 SoA + Section
局部更新 - + ++
LOD - - +
Nanite - - +
GPUScene 友好 - - +
多线程构建 - + +
Async Collision Cooking + + +
几何算法 - ++ -
生产可用 - + +

细节

PMC

  • 数据结构FProcMeshVertex AoS 排布------每个顶点含双精度位置 + 法线 + 4 通道 UV + 颜色 + 切线

DMC

  • 数据结构FDynamicMesh3 = 索引网格(顶点 / 三角形数组)+ 完整邻接表(每顶点边一环 + 每边双侧三角形)+ 法线 / UV / Color 各自 Overlay;邻接结构使拓扑算法 O(degree) 而非 O(N)
  • 局部更新 :拓扑变化用 NotifyMeshUpdated(重建 RenderProxy);属性变化用 FastNotifyColorsUpdated / FastNotifyPositionsUpdated / FastNotifyUVsUpdated / FastNotifyTriangleVerticesUpdated(指定三角形子集),更新现有 RenderProxy buffer 而不重建
  • 几何算法GeometryProcessing 模块群(含 MeshModelingTools 等)提供 CSG(布尔)/ Remesh / Sculpt / UV Layout / 简化 / 切割等拓扑级算法,配 EditMesh(Lambda) 调用

RMC

  • 数据结构 :4 层 RealtimeMesh -> LOD -> SectionGroup -> Section。Stream 挂在 SectionGroup 上(SoA,每条对应一段 RHI 顶点缓冲),Section 只引用 SectionGroup 内 Stream 的下标范围 -> 同一份缓冲可被多 Section 切片复用
  • 局部更新 :以 SectionGroup 为单位 UpdateSectionGroup(Key, NewStreamSet) 整组 streams 替换;多 SectionGroup 共存使 chunked 更新天然成立(地形 chunk / Tile = 1 个 SectionGroup,互不影响)
  • Nanite :通过 IRealtimeMeshNaniteSceneProxyManager(Modular Feature,名 RealtimeMeshNanite)接入。开源版只有接口和 FRealtimeMeshNaniteResources(封装 Nanite::FResources),实际实现走 Premium 模块
相关推荐
森诺Alyson几秒前
前沿技术借鉴研讨-2026.8.6(影响中国育龄妇女生育偏好的因素/分孕周血压与不良妊娠结局的风险)
论文阅读·经验分享·学习·论文笔记
若无情我 纸小铭5 分钟前
Nginx学习笔记(二) Nginx--connection&request
笔记·学习·nginx
TimeLess薄凉10 分钟前
嵌入式调试笔记<4>使用可调电源接负载电压被拉低
笔记
paopaokaka_luck1 小时前
基于springboot3+vue3的云南本土影视文旅推荐平台(协同过滤算法、Echarts图形化分析)
前端·spring boot·学习·算法·echarts·mybatis
paopaokaka_luck11 小时前
基于springboot3+vue3的企业考勤管理系统(部门树递归、Echarts图形化分析)
开发语言·spring boot·学习·echarts·mybatis·需求分析·代码规范
minglie111 小时前
zynq高频小数据量PS闭环 抖动时间的测量
学习
V哥AI增长11 小时前
小红书笔记在生成式AI引擎中的可见性机制解析:从抓取原理到GEO工程化实践
大数据·人工智能·笔记
long31611 小时前
MySQL 学习练习(配套 01 入门资料)
数据库·学习·mysql
梦雨生生12 小时前
java开发工具(学习第一天)
java·开发语言·学习
Hotchip_MEMS16 小时前
当雾化器遇上MEMS:一场从交互到制造的全链路效率提升
人工智能·笔记·物联网·电脑·制造