Chaos Panel Cloth - 数据流和碰撞更新(5.4)
这是测试版功能。您需要加载必要的插件(见下文)并重建虚幻引擎才能使用本教程。
加载插件
在虚幻引擎中,首先确保您已为 Chaos Cloth Asset 加载了正确的 Beta 插件以及 Chaos Cloth Asset Editor。如果出现提示,请重新启动编辑器。
以下内容包括有关 5.4 中引入的新节点以及可用于 Chaos 布料模拟的更新节点的一些详细信息。本文档旨在作为 Chaos Panel Cloth - 编辑器演练和更新 (5.4) 的配套参考。
文档与教程
Chaos Panel Cloth - 编辑器演练和更新 (5.4)
https://dev.epicgames.com/community/learning/tutorials/Mpze/unreal-engine-panel-cloth-editor-update-walkthrough-5-4
5.4 数据流节点更新
以下内容包括 5.4 中布料数据流的新节点和工作流。
代理变形器节点
如演练中所述,代理变形器是一个新节点,用于将渲染网格(驱动)绑定或包装到模拟网格(驱动器)。5.4 更新允许更好地控制模拟网格相对于渲染网格的影响。
将渲染网格绑定到模拟网格时,可能会发生不必要的变形。使用代理变形器节点,可以通过将变形隔离到每个模拟和渲染网格的特定部分来清理这些不必要的绑定区域。
对于从 Marvelous Designer 导入的 3 组面板/网格,我们肯定需要使用代理变形器,以防止变形器在模拟和渲染服装之间找到不必要的连接。
首先,我们将为三组面板创建选择,为它们命名以便于组织,并连接收集线。
我们将向代理变形器节点添加另外 2 个选项引脚。
然后将名称值连接到每个选择过滤器值。
使用代理变形器节点时,您需要利用主/次选择集
新功能 - 主要/次要选择集
现在,每个选择都支持一组可选的次要选定元素。在此工具中,您可以在主要选择模式和次要选择模式之间切换。
一个 Selection 节点会在经过时将主集和次集附加到 ClothCollection。如果次集为空,则不会在 ClothCollection 上进行设置。
使用 Primary 选择模拟网格,使用 Secondary 选择渲染网格。Sim 网格以三角形 (SimFaces) 选择为目标。Render 网格以顶点 (RenderVertices) 选择为目标。
将顶点选择转换为面时,需要选择面的所有三个点才能选择该面。
初选
确保您处于“主要选择”模式。我们发现 2D Sim 面板最适合此选择,但您也可以随意使用 3D SIm 面板。选择您创建的其中一个选择节点。
然后您将注意到面板视口已准备好进行您的选择。
选择 Sim 面板的最简单方法是使用设置为面的选择过滤器来选取所需的面板。
一旦选定,请单击“接受”按钮保存您的主要选择。
二次选择
要切换到次要选择,请单击“切换主要次要”按钮。
按下后,‘主要选择’将变为‘次要选择’,以选择我们相应的渲染几何元素。
将视口模式切换为“渲染”以可视化渲染网格几何。
选择由面板制成的服装的简单方法是选择每个面板上的一个顶点。
然后使用“扩大选择”工具按钮完成整个选择。
渲染网格上的这个过程可能有点繁琐。我们意识到我们缺少一些可视化选项来帮助选择,我们希望将来能够纠正这些问题。
您可能会错过部分内容,尤其是内部渲染表面。请确保在选择工具的可视化部分中切换“显示顶点”,以帮助您更好地看到难以到达的地方。
做出选择后,单击“接受”以保存设置。
选择节点面/索引
您可以通过选择节点来查看主/次索引。不要忘记为您的选择命名。
我们将对衬衫和休闲裤重复这个过程。
为了在创建后可视化选择,请确保在视口中切换到模拟网格设置的 2D/3D 模拟,并确保您处于主要选择模式。
使用渲染网格的渲染视口设置,并确保您处于二次选择模式。
代理变形器节点位置限制
使用该节点时存在放置限制,目前不能将 Proxy Deformer 节点放置在 Remesh 节点之前,或者如果这样做,则必须在 Remesh 节点之后重新添加 Proxy Deformer。
Remesh 节点更新
重新网格化节点用于更改模拟网格和/或渲染网格的网格拓扑。5.4 的新功能是重新网格化模拟和渲染网格几何体的功能。
Remesh 通常由以下一个或多个操作组成:
边分割:找到长边并通过添加新顶点来分割它们
边缘折叠:找到短边并折叠它们,删除其中一个端点
边缘翻转:尝试通过翻转边缘使每个顶点都有 6 个邻居
顶点平滑:尝试通过平滑顶点位置将网格移向等边三角形
模拟网格处理
重新划分 Sim 网格是一个迭代过程。一次迭代遍历整个网格并执行以下操作:
重新网格多个面板共享的接缝
重新划分面板边界
重新网格化面板内饰
接缝优先重新网格化
输入模拟网格
两个面板之间的接缝特写。
首先对接缝进行重新网格化……
..然后重新网格化内部。
最终输出网格。
模拟网格参数
Remesh Sim:是否重新划分sim网格
目标模拟百分比:输出模拟网格的目标网格分辨率,以输入网格分辨率的百分比表示。请注意,由于网格可以更改的位置的限制,我们可能无法达到此目标分辨率
迭代次数模拟:参见上文一次迭代的描述。此参数控制执行多少次迭代。
平滑模拟:顶点平滑操作的强度。0.0 表示完全不平滑,1.0 表示最大平滑度
渲染网格过程
在对渲染网格进行操作时,我们有两种方法可供选择:重新网格化和简化。
重新网格化选项将追求统一的三角剖分,而简化将尝试在平坦的区域使用更少的三角形。
对于静态网格,简化通常能更好地捕捉给定三角形预算的小规模细节。但对于布料,其缺点是它不知道在模拟过程中哪里会出现褶皱和折痕。
一次迭代遍历整个网格并执行以下操作:
重新网格化多个面板共享的接缝(可选,请参阅下面的参数)
请注意,在渲染网格的情况下,我们没有明确的接缝信息。我们根据顶点位置构建临时接缝 - 如果两个顶点在世界空间中彼此非常接近但属于不同的面板,我们会将它们视为仅用于重新网格化的缝线。
重新划分面板边界(可选,参见下面的参数)
重新网格化面板内饰
在重新划分渲染网格面板内部时,我们可以使用“重新划分网格”算法或“简化”算法。这两种算法使用相同的基本操作,但会使用不同的标准来选择要分割和折叠的边。“重新划分网格”会尝试使所有三角形等边,而“简化”会尝试在较大的平坦区域使用较少的三角形,在弯曲或拐角区域使用较多的三角形。
渲染网格参数
重新网格化渲染:是否重新网格化渲染网格
目标渲染百分比:输出渲染网格的目标网格分辨率,以输入网格分辨率的百分比表示。请注意,由于网格可以更改的位置的限制,我们可能无法达到此目标分辨率
重新网格化方法渲染:决定在何处以及如何更改网格拓扑时使用哪些标准。上面描述了重新网格化和简化之间的区别。
迭代渲染:参见上文一次迭代的描述。此参数控制执行多少次迭代。
平滑渲染:顶点平滑操作的强度。0.0 表示完全不平滑,1.0 表示最大平滑度
重新网格化渲染接缝:是否重新网格化布料面板之间的接缝和边界
渲染接缝重新网格化迭代:如果我们要重新网格化接缝和边界,需要执行多少次迭代
重新网格 LOD 接缝改进
在“重新网格化”节点中为“渲染网格”添加了一个新选项。重新网格化渲染接缝。这可以帮助缓解蒙皮渲染网格时接缝拉开的情况。
皮肤移植的技巧和窍门:
未焊接的渲染网格:
通常情况下,模拟网格是焊接的和“流形的”,这意味着 Inpaint 方法应该总是成功并给出最好的结果。
然而,渲染网格通常不是焊接的并且由多个不相连的部分组成。
当我们谈论不连续的部分时,我们的意思是,例如,外套上的腰带是两个独立的部分,但它们是一个渲染网格的一部分。
Marvelous Designer 经常输出渲染网格,其中同一件衣服的面板也断开连接。这通常没问题,并且 Inpaint 应该可以很好地工作,除了在针脚上有大折痕的地方(如腋窝区域),因此彼此靠近的顶点可能具有非常不同的法线,这可能会导致计算不同的权重。您可以尝试增加法线阈值或切换到渲染网格的最近点方法。
修补面具:
由于添加了在渲染网格上绘制权重图的功能,我们现在可以为渲染网格创建修复蒙版来控制传输过程。
如果您想要控制渲染网格传输的 Inpaint 方法行为,您可以创建另一个传输节点,将目标网格类型更改为渲染,并为该节点提供 Inpaint 掩码。
新的数据流节点
SimulationStretchConfig(参见下面的模拟约束节点)
SimulationBendingConfig(参见下面的模拟约束节点)
选择
选择转整数映射
选择到权重映射
添加Stitch
变换位置
权重映射至选择
删除元素
变换位置
变换 UV
地图支持重力和质量(质量和重力配置)
SimulationMultiResConfig(实验性)
模拟拉伸覆盖(实验性)
SimulationBendingOverrideConfig(实验)
选择节点
包括主要选择组和次要选择组。
现在,每个选择都支持一组可选的次要选定元素。在此工具中,您可以在主要选择模式和次要选择模式之间切换。
一个 Selection 节点会在经过时将主集和次集附加到 ClothCollection。如果次集为空,则不会在 ClothCollection 上进行设置。
SelectionToIntMap 节点
此节点主要用于指定碰撞的布料层。选定值用于指定每个面的层数。
选择到权重映射节点
可用于进行选择并转换为权重图。
添加针迹
5.4 中添加的节点用于进行选择并合并到单个顶点。
权重映射至选择
将权重图转换为整数选择集。
删除元素
可用于删除网格中不需要的元素的节点。
当附加了集合时,组选项将作为下拉菜单使用。
TransformPositions 节点
用于网格位置的一般变换、旋转和缩放的节点。
可用于修复导入的 USD 文件和用户 SkeletalMesh 之间的比例差异。用于更改平移、旋转和比例的选项:
2D 模拟位置
3D 模拟位置
渲染位置
TransformUvs 节点
用于改变 UV 数据的位置、旋转和比例的节点。
地图支持重力和质量
质量和重力均在 5.4 版中增加了对权重图的支持。
SimulationMassConfig 节点
SimulationGravityConfig 节点
SimulationMultiResConfig 节点(实验)
为帮助解决织物弹性问题而开发的实验节点。
SimulationStretchOverride 节点(实验)
模拟弯曲覆盖节点(实验)
模拟约束节点
从 5.3 开始,许多模拟约束节点已被弃用。我们进行了大量清理和整合,以期简化 Chaos Cloth 模拟的可用选项。
上面弃用的模拟布料约束已重构为两个主要节点:
模拟拉伸配置
模拟弯曲配置
SimulationStretchConfig 节点
以下是 SimulationStretchConfig 选项的直观分解。
SimulationBendingConfig 节点
以下是 SimulationBendingConfig 选项的直观分解。
5.4 面板编辑器布料演练中还包含以下信息:
拉伸使用 3D 静止长度/静止角度
StretchConfig 有一个复选框用于“拉伸使用 3d 静止长度”。
BendingConfig 有一个枚举选择器,可供选择:
使用 3D 静止角
扁平率
休息角度
求解器类型
有两种可用的求解器类型:扩展基于位置的动态 (XPBD) 约束以及默认的基于位置的动态 (PBD)。
有关何时使用 XPBD 与 PBD 的更多信息,请参阅此文档:
文档与教程
Chaos Panel 布料约束节点参考
分布类型
各向异性 - 在经向/纬向偏置方向上具有单独的刚度
各向同性 - 各个方向的刚度均匀
覆盖
用户可以选择覆盖低值/高值、权重图或两者。
第一个蓝色切换按钮(箭头/框图标)将启用/禁用 Marvelous Designer 低/高值的使用,第二个蓝色切换按钮(衬衫图标)将启用/禁用 Marvelous Designer 权重图。
使用多种 Marvelous Designer 面料时的注意事项
重新计算低/高值,并创建新的重量图以匹配布料上使用的所有织物的范围。
为了简化,假设一个三角形有织物 A,另一个三角形有织物 B。
织物 A 的刚度为 0.5。
织物B的刚度为0.7。
最低值为 0.5,最高值为 0.7,并将创建一个权重图,使所有来自织物 A 的三角形涂成 0,所有来自织物 B 的三角形涂成 1。
如何可视化 Marvelous Designer 权重图导出
可以查看从 Marvelous Designer 导出的权重图。例如,假设您想要可视化“弯曲刚度扭曲”参数的权重图。
在 SimulationBendingConfig 节点上,搜索要可视化的覆盖弯曲属性。弯曲刚度扭曲参数的权重图名称为“BendingStiffnessWarp”(绿色框)
接下来创建一个“AddWeightMap”节点。
在 AddWeightMap 节点的“名称”中,从 SimulationBendingConfig 节点键入或复制/粘贴“BendingStiffness”。
首先将 SimulationBendingConfig 节点的 Collection 输出连接到您创建的 AddWeightMap 的输入 Collection。
然后将另一个输出集合连接到 AddWeightMap 节点的“传输集合输入”。
通过选择 AddWeightMap 节点,您现在应该能够在 USD 导入过程中可视化从 Marvelous Designer 导入的权重图。
最后,您可以将鼠标移到面板上,查询画笔上的值。虽然这个例子非常简单,但如果图案面料更复杂,较小的画笔尺寸将允许更好的值检测。
新的 XPBD Sim 参数
新节点上的等效设置与弃用节点上的行为相匹配:
拉伸配置:
已弃用的节点 | 解算器类型 | 分布类型 | 添加区域约束 |
PBD边缘弹簧 | 多溴联苯 | 各向同性 | |
PBDAreaSpring | 多溴联苯 | (不适用) | X |
XPBDEdgeSpring | 苯并菲德 | 各向同性 | |
XPBDAreaSpring | 脑血管病 | (不适用) | X |
XPBDAnisoSpring | 脑血管病 | 各向异性 | X |
弯曲配置:
已弃用的节点 | 解算器类型 | 分布类型 | 约束类型 |
PBDB弯簧 | 多溴联苯 | 各向同性 | 面孔春天 |
PBDB弯折元件 | 多溴联苯 | 各向同性 | 铰链角度 |
XPBD各向异性弯曲 | 脑血管病 | 各向异性 | 铰链角度 |
XPB折弯弹簧 | 脑血管病 | 各向同性 | 面孔春天 |
XPB弯曲元件 | 脑血管病 | 各向同性 | 铰链角度 |
XPBD 刚度,求解器设置
XPBD 刚度是物理刚度(例如,单位看起来更像是 kg cm /s^2,而不是 0-1 值)。通过改变幅度来调整并不是探索参数的好方法。例如,尝试 0.1、1、10、100、1000。
目前,布料的硬度很大程度上依赖于迭代、子步骤和分辨率。
高分辨率的布料会更柔软。
增加解算器子步数会使布料变得更硬(达到极限)*
增加解算器迭代次数也会使布料变得更硬,但效果不如解算器子步。
子步数越多,自碰撞等操作的成本就越高。您可以使用单独的自碰撞子步数来降低成本(在大多数情况下,将其设置为 2 似乎效果很好)。
*增加子步数和迭代次数的技术细节。随着布料分辨率的增加,布料需要更多子步数才能“收敛”。当布料未收敛时,它看起来太软了。一旦将子步数增加到足够高,布料已经收敛,进一步增加它不会让它变得更硬。增加迭代次数(而不是子步数)也会使布料更硬,但它不能克服重力和其他一些力的影响。只有增加子步数似乎才能使布料更硬,包括克服重力。
XPBD 各向异性弯曲配置
这是主要的弯曲属性节点。弯曲约束作用于布料边缘,并影响沿该边缘的弯曲角度。
注意:还有已弃用的 XPBDBendingElementConfig。其工作原理完全相同,但没有单独的 Warp/Weft/Bias 值。
休息角度类型
设置您想要如何设置静止形状(模拟驱动返回的形状)。平坦度比率是您可能使用的主要方法(直到我们从 MD 获得更多弯曲信息)。
扁平率
0 = 使用 3D 模拟网格形状。将“烘焙”皱纹
1 = 尽量使所有角度“平坦”。这样会使一切变得平滑。
硬度(经向/纬向/斜向)
约束恢复到静止形状的强度有多大。
经线/纬线/偏斜控制可让您沿这些方向增强约束。在底层,每个边缘将通过将这些值与基于边缘在 2D 面板视图中的垂直或水平比例相结合来确定其刚度。红色边缘将水平弯曲,因此其值来自纬线刚度。绿色边缘将垂直弯曲,因此其值来自经线刚度
弯曲阻尼
弯曲方向(平面外)的阻尼。将其设置为 100 或更高并非不合理。
屈曲率
一旦布料相对于其余形状弯曲的程度超过一定程度,则认为是“弯曲”,并且将使用“弯曲刚度”值而不是“刚度”。
屈曲率 = 0 表示布料永不屈曲。
屈曲率 = 1 表示布料很容易屈曲。
使用弯曲约束调试图查看屈曲状态。蓝色 = 未屈曲,红色 = 屈曲。
屈曲刚度
边缘弯曲时使用的刚度值。通常,我们希望该值小于刚度。
XPBD异形弹簧
此约束控制布料的弹性。它实际上创建了具有共享刚度控制的“边缘”和“区域”弹簧。
边弹簧是沿着三角形网格边的弹簧。区域弹簧是从一个顶点延伸到相对边的弹簧。
使用 3d 静止长度
这有点像“平坦度”,因为它可以在使用 2D 网格和 3D 网格的静止长度之间切换。对于来自 MD 的资产,您可能希望关闭此功能。否则,它将被嵌入重力,这会使布料过度拉伸。
硬度(经向/纬向/斜向)
弹簧的強度。
经线/纬线/偏斜的计算方式与弯曲相同,但在这里,2D 面板视图中垂直的弹簧使用经线,水平的弹簧使用纬线。但效果相同(经线 = 垂直变形,纬线 = 水平变形,偏斜 = 以 45 度角变形)。
减震
与弯曲相同。拉伸方向(平面内)的运动阻尼程度。设置为 100(或更高)并非不合理。
扭曲尺度
在 2D 面板空间中沿扭曲(垂直)方向缩放静止长度。
可以帮助抵消重力而不会使布料变得更硬。
纬纱尺度
在 2D 面板空间中沿纬线(水平)方向缩放静止长度。
有助于收紧或放松面板视图中水平定义的袖口、皮带等,而无需从 MD 获取新的模型数据。
碰撞更新
5.4 添加新的碰撞系统、自碰撞和可视化更新
运动对撞机支持-(蒙皮网格)
模拟自碰撞配置节点
模拟自碰撞球体节点
自碰撞和图层图(碰撞基于顶点面)
蒙皮级别集更新
调试绘制碰撞更新
运动碰撞器
这是为更好地处理引擎中的物体碰撞而开发的新节点的早期版本。
使用封闭的静态网格,并使用 TransferSkinWeights 节点从蒙皮网格传输蒙皮权重,如演练教程中所述。然后添加选择节点以隔离要发生碰撞的运动区域。
重新网格化后,必须合并运动碰撞器。运动碰撞器没有 2D 表示,因此无法处理重新网格化节点。
性能成本
性能与运动对撞机的面数以及布料模拟网格的面数有关。我们建议尽可能使用最低的三角网格。理论上你可以使用 LOD0 网格,但你可能不想这样做!(作为参考,Talisman 项目使用了经过进一步优化的 LOD2 Metahuman)
在未来的版本中,我们想让运动对撞机成为它自己的物理资产。
SimulationSelfCollisionConfig 节点
这是一个新节点,用于处理运动对撞机以及布料层。
选择仅与运动对撞机发生碰撞而不选择一般自碰撞。
在未来的版本中将把它作为其自己的配置节点。
SimulationSelfCollisionSpheres 节点
这是 Apex 式自碰撞的替代品。我们偶尔仍会被问到有关 Apex 碰撞的问题,这种碰撞已经有一段时间不受支持了,因此我们在这里添加了它们!
当使用大量球体时,它比正常的自碰撞慢。
布料层
布料层利用上面提到的 SimulationSelfCollisionConfig 节点。用户需要使用 Selection 和 SelectionToIntMap 节点指定布料层。
它们的工作原理与 Marvelous Designer 相同 - 较低的层数总是会推动较高的数字,并且它基于面上的法线。
因此,如果布料翻转或者布料自身折叠,则可能会出现问题!
Project Talisman 中夹克上的腰带没有分层,因为它会翻转并引起问题。
蒙皮级别集更新
虽然对蒙皮级别集进行了一些优化,但是,运动对撞机功能比蒙皮级别集更快,因此此功能的开发已暂停。
请参阅此文档以了解如何设置碰撞的蒙皮级别集。
文档与教程
额外的布料碰撞选项
https://dev.epicgames.com/community/learning/tutorials/pvax/unreal-engine-cloth-extra-collision-options
碰撞调试绘制更新
为新的布料层和碰撞添加了一些可视化调试选项。
自碰撞
以下仅适用于 SimulationSelfCollision 配置节点。
自碰撞层
自碰撞厚度
链接
Chaos Cloth 编辑器演练和更新
https://dev.epicgames.com/community/learning/tutorials/Mpze/unreal-engine-panel-cloth-editor-update-walkthrough-5-4
近期焦点