[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 模块
相关推荐
kongba0072 小时前
rules经验落盘
学习
一條狗2 小时前
学习日报 20260423|[特殊字符] 深度解析:Vue 3 SPA 部署到 Spring Boot 的 404/500 错误排查与完美解决方案-2
vue.js·spring boot·学习
智者知已应修善业2 小时前
【51单片机调用__TIME__无法实时时间】2023-7-10
c++·经验分享·笔记·算法·51单片机
学习论之费曼学习法2 小时前
AI 入门 30 天挑战 - Day 18 费曼学习法版 - 图像分割基础
人工智能·学习
It's Q2 小时前
hive学习分区&&函数
hive·hadoop·学习
red_redemption2 小时前
自由学习记录(173)
学习·clock ticking·lighting rod·zeus
千寻girling2 小时前
机器学习 | 逻辑回归 | 尚硅谷学习
java·人工智能·python·学习·算法·机器学习·逻辑回归
Tutankaaa2 小时前
防震减灾知识竞赛题库:地震常识、应急避险与自救互救指南
经验分享·笔记·学习
wljt2 小时前
SpringBoot学习笔记五:Spring Boot的web开发
spring boot·笔记·学习