服装模拟
发布于:2024-10-18
更新日志
更新时间 | 更新内容 | 对应SDK版本 | 定位 |
2024-05-10 |
| V2.2.0 | |
2024-01-29 |
| V2.0.0 | |
2023-05-05 |
| V 1.5.0 | |
2023-03-16 |
| V 1.4.0 | |
2022-12-09 |
| V 1.3.0 | |
2022-12-09 |
| V 1.2.1 | |
2022-11-17 |
| V1.0.3 | |
2022-10-31 |
| V1.0.2 | 1.1服装挂载到角色上 3.【new】修改服装材质 4.【new】修改物理属性及工艺 |
2022-09-29 | 服装模拟设置 | V1.0.0 |
1. 仿真流程
1.1 挂载服装
导入服装
将SMD文件拖入UE内容浏览器
将SMD文件拖入UE项目的Content文件夹,衣服Mesh及Material将存储于同名文件夹,其他属性存储于同名的DataAsset文件
添加Style3D组件
场景中选择角色后,在细节面板搜索并添加Style3D组件
重要提示:Style3D组件需挂在骨骼网格体下
metahuman角色组件挂载在body下
挂载服装
设置Style3D组件的衣服Meta Data Asset(SMD文件导入时生成的)
Preview in Editor:预览仿真的衣服网格
Mesh Render Type,使用默认DeformMesh 即可。
类型 | 说明 |
DeformMesh | 使用完全凌迪自定义的服装渲染管线,TAA 问题解决,支持多 UV 通道 |
AbcMesh | 使用 Unreal 中 Abc 格式的渲染管线,TAA 问题解决,但仅支持1个 UV 通道 |
ProceduralMesh | 使用 Unreal 中 Procedural Mesh的渲染管线,TAA 问题不解决,仅支持多个 UV 通道 |
使用自定义材质注意事项
用户需要在材质上使用自定义材质类型时,注意需要勾选材质的Usage ,同时勾选Used with Geometry Cache(Abcmesh使用)和Used with Clothing(Deformmesh使用)
1.2 适配初始姿势穿衣
模拟前需将服装与角色姿势进行适配,有两种方式:服装蒙皮和posefitting,具体操作流程,这里介绍操作简单的蒙皮流程:
服装自动蒙皮
确保服装在当前人体姿势下是合适的,依次点击“Bind ”和"Save ",将对服装进行自动蒙皮
用处
衣服可根据人体姿势初始化
不参与仿真的衣服版片可受骨骼驱动
仿真不开启时,整个衣服可被骨骼驱动
重要提示:
Bind Garment需确保角色当前姿势与服装姿势匹配,可先卸载角色动画,恢复默认网格体姿态再进行Bind,Save 后再重载角色动画。
暂时只能在场景中点击,在BP里点击会导致crash
1.3 挂载动作
选择动画资产挂载到角色骨骼网格体上
1.4 服装模拟
Style3D组件中设置Runtime Mode为GarmentSimulate模式;
勾选Preview in Editor选项,在场景窗口中预览服装是否完整穿在角色身上;
点击编辑器运行按钮,即开始服装模拟
出现服装不跟随角色动作时,查看Consel窗口中日志是否有登录失败提示,重新登录后即可正常仿真
1.5 添加拖拽交互组件
在放置actor面板中搜索"Style3D Interaction Actor"组件,直接拖入到场景视口中。开启模拟时,即可通用鼠标拖拽服装。
注意
V2.2以下插件版本,使用Interaction Actor组件时,求解器参数中需勾选 Collision Convex
V2.2及以上版本插件在服装启用碰撞体类型
2. 仿真设置
2.1 添加碰撞体
服装解算时,若需要与角色中组件物体发生碰撞,可将网格体添加为Style3D的碰撞体
默认已添加了角色主体网格体为碰撞体
Metahuman头部添加到碰撞体
在组件Slave Obstacle 中添加数组,然后将头部骨骼网格体添加进去
设置碰撞体不参与碰撞或Bind(V2.4.0)
可设置主碰撞体、子碰撞体 不参与碰撞、不参与Bind
不参与碰撞,在柔性人体设置需要用到;设置盔甲等配饰不参与bind,可以避免服装同时绑定到人体与配饰带来的抖动穿模
2.2 设置求解器参数
截图 | 参数名 | 含义 |
求解器属性 Solver Property | Simulate | 控制是否开启仿真 |
Self Collision | 衣服自碰撞开关,开启自碰撞会阻止衣服自相交 | |
Async Mode | 异步仿真模式,异步仿真模式性能更高 | |
Animation Mode | 开启开关,每帧都会考虑更新动画相关的物理碰撞数据 比如人体姿态、胖瘦,若人体无动画数据,可关闭该选项,提高性能 | |
Smooth Animation | 平滑动画,开启后可缓解人体动画跳变问题,增强仿真稳定性 | |
Back Face | 是否生成衣服面片背面网格 | |
Side Face | 是否生成衣服面片侧面网格 | |
Collision Convex | 衣服生成碰撞包围体开关,开启后可准确支持射线检测、鼠标拾取等功能 (V2.2版插件位置移动到服装插槽下) | |
Fictious Force | 惯性力开关 | |
Strain Map Color | 打开后,衣服拉伸量将写入顶点颜色中。材质节点读取颜色即可渲染出结果。 | |
Tack | 全局假缝功能开关 | |
Solver Type | 求解器类型 | |
High Precision | 高精度,开启后解算引擎会使用高精度模式 (V2.2版本底层暂未支持) | |
GPU ID | 仿真使用的GPU序号,直播等场景,填入对应的显卡序号可指定解算使用单独显卡(多显卡不需交火) | |
Time Step | 仿真时间步长,设置为运行时的帧率FPS的倒数(1.0/FPS); 设置为0,则根据每帧时间间隔自动适配Time Step | |
Time Scale | 解算速率,用于适配动画制作中的TimeWrap | |
Substep | 在某些情况下,固定步长可能不足以捕捉到快速变化的运动或细微的碰撞。通过在帧之间添加额外的子步骤,可以更频繁地更新动画状态,从而更准确地模拟物体的运动和碰撞。 【举例】:子步为1时,若解算每帧解算时间步长0.01秒,子步改为2时,每帧解算时间步长0.005秒(每帧的子步2倍,精度变高、性能变低) 提高子步数值,适用于人模动作很大或项目锁帧到较低fps的场景。但会有更多的性能开销。 | |
Finsh Condition | 解算完成条件
| |
Iteration | 求解的迭代次数,该值越高,求解结果越精确,计算开销越大 | |
Residual Accuracy | 残差精度 数值越高解算与真实值的差距越小,4代表解算值与真实值差距等级在10-4 | |
Gravity | 重力加速度 | |
Damping | 空气阻力 | |
Self Collision Stiffness | 自碰撞强度 | |
Extra Thickness | 额外的碰撞厚度,值越大越不容易发生穿透,但衣服间的空隙也越大 |
备注:
调节参数时
时间步长Time Step不超过0.03
自碰撞强度Self Collision Stiffness 不小于0.5
2.3 设置物理场参数
截图 | 参数名 | 含义 | ||
绑定参数 Bind Property | Symmetry | 使用详见 蒙皮&解算融合 | Skin Pair | |
Shoulder Width | ||||
Surface Offset | ||||
Constrained Range | ||||
Motion Radius | ||||
Stiffness | ||||
碰撞体参数 Obstacle Property | Obstacle LOD | 碰撞时使用的LOD级别 | ||
Collision | 碰撞 | |||
Morph | 变形 | |||
Group Type | 碰撞过滤器预设 | |||
Collision Group | 碰撞过滤器 | |||
Obstacle Gap | 碰撞间隔 | |||
Obstacle Static Friction | 碰撞静摩擦力 | |||
Obstacle Dynamic Friction | 碰撞动摩擦力 | |||
地面参数 Ground Property | Height | 地面高度(以骨骼网格体坐标原点为地面高度0,低于地面的布料会受到上推力) | ||
Static Friction | 静摩擦力 | |||
Dynamic Friction | 动摩擦力 | |||
参考骨骼 Ref Frame Property | Ref Bone Name | 参考骨骼名 | ||
Use World Space | 世界空间 | |||
Max Linear Velocity | 最大线速度 | |||
Max Angular Velocity | 最大角速度 | |||
Ref Distance | 参考距离 |