当前位置: 首页 > news >正文

UE5 Chaos :渲染网格体 (Render Mesh) 和模拟网格体 是如何关联的?为什么模拟网格体 可以驱动渲染网格体?

官方文献:https://dev.epicgames.com/community/learning/tutorials/pv7x/unreal-engine-panel-cloth-editor

这背后的核心是一种常见的计算机图形学技术,通常称为代理绑定 (Proxy Binding) 或 表面变形传递 (Surface Deformation Transfer)

关联机制 (How they are linked):

这种关联通常在布料设置阶段(例如在 UE 的 Panel Cloth Editor 的 Dataflow 图表中)建立,而不是在运行时动态计算。过程大致如下:

  1. 空间邻近性计算: 系统会分析渲染网格体 (Render Mesh) 上的每一个顶点。

  2. 寻找参考点/面: 对于 Render Mesh 上的每个顶点,系统会在模拟网格体 (Sim Mesh) 上找到最接近的几个顶点或最接近的那个三角面片 (Triangle)。

  3. 计算绑定信息 (权重或坐标): 最关键的一步是计算并存储一种“绑定信息”,它定义了 Render Mesh 顶点如何根据 Sim Mesh 的变形来移动。最常用的方法是重心坐标 (Barycentric Coordinates)

    • 对于 Render Mesh 上的一个顶点 P,系统找到它在 Sim Mesh 上的投影点所在的那个三角面片 (假设顶点为 A, B, C)。

    • 系统计算出 P 点相对于 Sim Mesh 三角面片 A, B, C 的重心坐标 (u, v, w)。这意味着 P 的位置可以表示为 P = u*A + v*B + w*C,其中 u + v + w = 1。

    • 这个 (u, v, w) 坐标就被存储下来,作为 Render Mesh 顶点 P 和 Sim Mesh 三角面片 ABC 之间的绑定关系。

  4. 存储绑定数据: 这个计算出来的绑定信息(每个 Render Mesh 顶点对应的 Sim Mesh 参考点/面以及相应的权重或重心坐标)会作为布料资产的一部分被存储起来。

工作原理 (Why Sim Mesh can drive Render Mesh):

一旦这种绑定关系建立并存储好,驱动过程就变得相对直接:

  1. 模拟计算: 在运行时,Unreal Engine 的 Chaos Physics 解算器只对模拟网格体 (Sim Mesh) 进行物理计算。这意味着它会根据力(如重力、风力)、碰撞(与角色身体或其他物体)以及约束来更新 Sim Mesh 上每个顶点的位置。这个过程因为 Sim Mesh 的低面数和优化结构而相对高效。

  2. 变形传递: 在每一帧,当 Sim Mesh 的顶点位置被物理模拟更新后:

    • 系统会查找之前存储的绑定信息。

    • 对于 Render Mesh 上的每一个顶点 P,它会找到其对应的 Sim Mesh 参考三角面片 (A, B, C) 和对应的重心坐标 (u, v, w)。

    • 它获取 Sim Mesh 顶点 A, B, C 当前帧被模拟更新后的新位置 (A', B', C')。

    • 使用相同的重心坐标 (u, v, w),计算出 Render Mesh 顶点 P 在当前帧的新位置:P' = u*A' + v*B' + w*C'。

  3. 更新渲染网格体: 所有 Render Mesh 顶点的位置都通过这种方式基于 Sim Mesh 的当前状态计算出来后,整个 Render Mesh 就呈现出被驱动的变形效果。

总结来说:

  • 关联: 通过在设置阶段计算并存储 Render Mesh 顶点相对于 Sim Mesh 表面的位置关系(通常是重心坐标)来建立。

  • 驱动: 在运行时,物理引擎只模拟 Sim Mesh。然后,利用预先计算好的绑定关系,将 Sim Mesh 的变形实时地、插值地传递给 Render Mesh 的每一个顶点,从而让高细节的 Render Mesh 跟随低多边形的 Sim Mesh 运动。

这种方法的核心优势在于:

  • 性能: 物理模拟在低多边形、优化的 Sim Mesh 上运行,速度快。

  • 质量: 最终显示的是高多边形、包含细节的 Render Mesh,视觉效果好。

  • 解耦: 将复杂的物理计算与最终的视觉表现分离,简化了流程和优化。

在 UE 的 Panel Cloth Editor 中,像 TransferSkinWeights 这样的节点是将角色骨骼动画影响传递给 Sim Mesh 的一部分,而 Sim Mesh 和 Render Mesh 之间的这种驱动关系则是在 Dataflow 图表构建布料资产(Cloth Asset)的过程中通过特定的节点或内部逻辑建立起来的。

对于在UE5.3 Panel Cloth Editor中使用的"Simulation Mesh"(模拟网格体),有以下几点几何要求:

几何结构要求

三角形面

  • 是允许的,实际上Unreal Engine在导入时会自动将所有多边形面三角化7

  • 但需要避免"退化三角形",即具有重合顶点的三角形,这会导致错误提示"Failed to generate clothing sim mesh due to degenerate triangle"2

五边形面(N-gons)

  • 不建议使用,因为任何超过四边的多边形(n-gons)在引擎中都会被自动三角化37

  • N-gons可能在三角化过程中造成歧义和不可预测的结果3

  • 建议在导入Unreal Engine之前,在3D建模软件中将所有五边形或更高边数的面转换为四边形或三角形3

其他几何要求

网格体质量

  • 模拟网格体通常应比渲染网格体更加简化,密度较低6

  • 例如,在示例中衬衫的渲染网格体密度为12,而模拟网格体密度为18(数值越大密度越低)6

避免的几何问题

  • 非平面多边形:所有面应当尽量平坦3

  • 重叠的顶点/边:这些会导致三角化过程产生意外结果3

  • 无效几何体:损坏或非流形几何体(边缘和顶点不正确对齐)会导致三角化错误3

推荐做法

  • 使用"薄壁、焊接"(thin welded)版本作为模拟网格体6

  • 保持模型干净,没有内部细节,使解算更容易处理6

  • 使用静态网格体(Static Mesh)作为模拟网格体59

总结来说,模拟网格体最好由四边形和三角形组成,避免使用五边形及更高边数的多边形,并确保几何体质量良好,没有重合顶点和非流形结构。在大多数情况下,Unreal Engine会自动将导入的网格体三角化,但提前处理好网格几何可以避免后续问题。

http://www.dtcms.com/a/133304.html

相关文章:

  • Terraform 迷思:当优雅的模块 terraform-aws-eks 与现实碰撞
  • 【机器学习】机器学习笔记
  • 【Linux网络编程】TCP Echo Server的实现
  • 电梯设备与电源滤波器:现代建筑中的安全守护者与电力净化师
  • TDengine 语言连接器(Node.js)
  • 【uni-app】axios 报错:Error: Adapter ‘http‘ is not available in the build
  • cursor如何集成MCP服务
  • 爬虫: 一文掌握 pycurl 的详细使用(更接近底层,性能更高)
  • oracle查询锁表和解锁
  • 第十八讲 | 支持向量机(SVM):在地类识别与遥感影像分类中的应用
  • Spark-SQL简介及核心编程
  • [AI ][Dify] 构建一个自动化新闻编辑助手:Dify 工作流实战指南
  • Spark-SQL核心编程(一)
  • Java 设计模式:组合模式详解
  • 体系结构论文(六十七):A Machine-Learning-Guided Framework for Fault-Tolerant DNNs
  • GpuGeek:重构AI算力基础设施,赋能产业智能升级
  • 大数据面试问答-批处理性能优化
  • 快速排序(非递归版本)
  • 【3D文件】可爱小鹿3D建模,3D打印文件
  • 五大生产模式(MTS、MTO、ATO、ETO、CTO)的差异
  • AIoT 智变浪潮演讲实录 | 刘浩然:让硬件会思考:边缘大模型网关助力硬件智能革新
  • 001 蓝桥杯嵌入式赛道备赛——基础
  • [特殊字符]飞牛相册测评:智能相册界的宝藏还是鸡肋?
  • Coze 和 n8n 的详细介绍及多维度对比分析,涵盖功能、架构、适用场景、成本等关键指标
  • 鸿蒙NEXT开发Emitter工具类(ArkTs)
  • 操作系统学习笔记——[特殊字符]超详细 | 如何唤醒被阻塞的 socket 线程?线程阻塞原理、线程池、fork/vfork彻底讲明白!
  • 【PCIE736-0】基于 PCIE X16 总线架构的 4 路 QSFP28 100G 光纤通道处理平台
  • DDoS攻防实战指南——解析企业级防护五大解决方案
  • leetcode03 -- 武汉旅游查询系统
  • 关于setTimeout输出