Unity 布料模拟插件Magica Cloth

这篇具有很好参考价值的文章主要介绍了Unity 布料模拟插件Magica Cloth。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

依赖包

Magica Cloth 使用 Job System 和 Burst compiler 加快布料模拟,所以需要先安装这两个依赖包
unity magica cloth,物理,Unity插件,unity
Burst 可以直接下载
unity magica cloth,物理,Unity插件,unity在这里插入图片描述

Job System 得通过 URL 添加,输入com.unity.jobs,设置中也要开启Enable Pre-release Packages
另外为了看到模型的骨骼节点,还要下载Animation Rigging

组件

名称 图标 介绍
MagicaPhysicsManager unity magica cloth,物理,Unity插件,unity 管理器,使用时会自动创建
MagicaBoneCloth unity magica cloth,物理,Unity插件,unity 控制骨骼(Transform)进行布料模拟,带骨骼的衣服和头发都可以用
MagicaBoneSpring unity magica cloth,物理,Unity插件,unity 控制骨骼(Transform)进行弹簧模拟,适合胸部抖动
MagicaRenderDeformer unity magica cloth,物理,Unity插件,unity 渲染变形器,用于对模型的网格进行变形,当使用 MeshCloth / MeshSpring 时需要,性能消耗大
MagicaVirtualDeformer unity magica cloth,物理,Unity插件,unity 虚拟变形器,通过结合多个渲染变形器进行顶点缩减,并重构为一个虚拟网格。使用MeshCloth / MeshSpring时需要,性能消耗大
MagicaMeshCloth unity magica cloth,物理,Unity插件,unity 对网格顶点进行布料模拟,适用于无骨骼的模型,可以实现比Bone Cloth更加精细的控制,是控制裙装的理想选择,与虚拟变形器一起工作,性能消耗大
MagicaMeshSpring unity magica cloth,物理,Unity插件,unity 对网格顶点进行弹簧模拟
MagicaSphereCollider / MagicaCapsuleCollider / MagicaPlaneCollider unity magica cloth,物理,Unity插件,unity 球形,胶囊形,平面形碰撞器,防止穿模,球形和胶囊形主要用于人体,胶囊形消耗更大,平面形主要用于地面
MagicaDirectionalWind / MagicaAreaWind unity magica cloth,物理,Unity插件,unity 全局的风,区域的风
MagicaAvatar unity magica cloth,物理,Unity插件,unity 用于换装,添加到身体部分
MagicaAvatarParts unity magica cloth,物理,Unity插件,unity 用于换装,添加到其他部分,如衣服,头发

Magica Cloth的物理引擎完全独立于Unity的物理学引擎,因此,它完全不干扰Unity的物理系统。

MagicaPhysicsManager

unity magica cloth,物理,Unity插件,unity
MagicaPhysicsManager这个prefab是插件中自带的,运行时使用插件相关的组件后就会自动创建
unity magica cloth,物理,Unity插件,unity

Update Per Second 物理引擎每秒更新次数
Update Mode Unscaled Time - 刷新率不受 Unity 的 time scale 影响
Once Per Frame - 每帧更新一次,当使用这种模式时,Update Per Second 需要根据游戏的帧率来调整。
Delay Unscaled Time - 延迟执行,与 Unscaled Time 一样,但在渲染时也能进行布料模拟,能大幅提高性能,但结果会晚一帧,这个延迟是通过未来预测来插值的
Update Location 在 Late Update 之前或之后更新
Faster Write 使用 Unity 的新 Mesh API 更新网格顶点,提高网格更新速度,版本要大于 2021.2
OnPreUpdate / OnPostUpdate 在布料模拟之前或之后注册事件

MagicaBoneCloth 模拟头发,衣服飘动

MagicaBoneCloth 和 MagicaBoneSpring 都是通过改变骨骼节点Transform的位置和旋转来实现飘动效果
unity magica cloth,物理,Unity插件,unity
把模型拖入场景,点击模型,选择Bone Render Setup显示模型的骨骼,方便选择对应骨骼
unity magica cloth,物理,Unity插件,unity
这个模型后面有长发和两边的侧发,长发和侧发的参数设置不同,这里以长发演示
unity magica cloth,物理,Unity插件,unity
unity magica cloth,物理,Unity插件,unity
右键创建一个 Magica Bone Cloth,并改名为长发
unity magica cloth,物理,Unity插件,unity
这里有错误提示是因为还没有生成数据,将长发的根节点添加到Root List,点击Start Point Selection进入节点编辑模式
unity magica cloth,物理,Unity插件,unity
unity magica cloth,物理,Unity插件,unity
红色表示固定节点(Fixed Point),它不会移动,但是会旋转,一般就是根节点,每个可移动的骨骼链上,第一个节点必须是固定节点。
绿色表示活动节点(Move Point),受物理系统影响
还有一种灰色节点表示无效节点(Invalid Point),不参与物理运算
unity magica cloth,物理,Unity插件,unity

如果需要修改节点类型,先选择节点类型,按住左键在场景中拖动即可改变节点颜色
调整完后, 点击 End Point Selection 结束编辑
unity magica cloth,物理,Unity插件,unity
下面就是物理模拟相关的参数,这里提供了一些预设,点击Preset选择长发类型的预设,会自动修改适合长发的参数
头发相关的预设:前发(FrontHair),长发(LongHair),脸两侧头发(SideHair),马尾(PonyHair),短发(ShortHair)
衣服相关的预设:柔软的裙子(SoftSkirt),硬裙(HardSkirt),长开衩连衣裙(LongSlitDress)
尾巴或身上飘动的装饰物:Tail
最后点击Create生成数据
unity magica cloth,物理,Unity插件,unity
上面的错误提示消失,显示了一些参数。现在运行时拖动角色,长发会有抖动的物理效果,但是会有穿模的情况,所以还需要处理下穿模的问题。

Magica Cloth提供了两种穿模的解决方法,表面穿模(Surface Penetration)和碰撞体穿模(Collider Penetration)。
unity magica cloth,物理,Unity插件,unity
如果衣服(头发)与身体上的骨骼有关联的话,衣服会随着身体动作跟着运动,如图腿动的时候,裙子也会跟着动,这种情况可以选择表面穿模,表现力更好。
unity magica cloth,物理,Unity插件,unity
如果衣服(头发)与身体上的骨骼没有关联,衣服(头发)完全由自己的骨骼控制,如图腿动的时候,裙子不会动,这种情况使用碰撞体穿模。
模型属于第二种情况,所以选择碰撞体穿模
unity magica cloth,物理,Unity插件,unity
正常情况下,应该在头部,躯干,四肢都加上球形(MagicaSphereCollider)或胶囊形碰撞体(MagicaCapsuleCollider),这里为了省事儿只在躯干上添加胶囊形碰撞体
unity magica cloth,物理,Unity插件,unity
为了长发和碰撞体进行碰撞检测,还需要把这个碰撞体添加到长发的ColliderList中,再次点击Create生成数据,运行查看效果
unity magica cloth,物理,Unity插件,unity
unity magica cloth,物理,Unity插件,unity

下面处理下裙子
unity magica cloth,物理,Unity插件,unity
模型前面的裙摆和后面的裙摆被处理成了几个独立的片,这里只处理下后摆,新建一个MagicaBoneCloth改名为后摆
unity magica cloth,物理,Unity插件,unity
将后摆的几个根节点添加到Root List,并修改连接模式(Connection Mode)为Mesh Sequential No Loop,表示这几个骨骼链形成一个不闭合的网格面,连接模式指定Root List中骨骼链的连接方式。

Connection Mode Line - 表示单条骨骼链从父级到子级是线性结构的,两条骨骼链是独立的
Mesh Automatic - 自动连接附近的骨骼节点创建一个网格结构并进行连接,它不受Transform的父-子关系的影响,不适合太复杂的结构
Mesh Sequential Loop - 按照在RootList中的顺序生成网格,并连接第一条和最后一条骨骼链
Mesh Sequential No Loop - 按照在RootList中的顺序生成网格,但不连接第一条和最后一条骨骼链
Same Surface Angle 只在连接模式为网格时有,表示生成网格法线的角度(0-90)

unity magica cloth,物理,Unity插件,unity
连接模式选择Line,那么裙子上的每条骨骼链就分别单独进行碰撞检测,这样物体可能从两条骨骼链之间的缝隙穿过产生穿模

unity magica cloth,物理,Unity插件,unity
首尾相连的裙子选择Mesh Sequential Loop,生成闭合的网格面,这样碰撞检测更加精确

unity magica cloth,物理,Unity插件,unity
有的裙子不是闭合的就选择Mesh Sequential No Loop

unity magica cloth,物理,Unity插件,unity
在腿上创建碰撞体添加到Collider List,预设选择NormalSkirt,点击Create生成数据,运行查看效果
unity magica cloth,物理,Unity插件,unity

MagicaBoneSpring 模拟胸部抖动

unity magica cloth,物理,Unity插件,unity
与 MagicaBoneCloth 基本类似,Create Other -> Magica Cloth -> MagicaBoneSpring,右键先创建一个 MagicaBoneSpring 并改名为胸部
unity magica cloth,物理,Unity插件,unity
找到模型身上的胸部节点添加到 Root List
unity magica cloth,物理,Unity插件,unity
预设选择Breast,点击Create生成数据,运行时查看效果
unity magica cloth,物理,Unity插件,unity

MagicaMeshCloth 模拟裙子飘动

unity magica cloth,物理,Unity插件,unity
参考官方示例,使用Unity Chan模拟
unity magica cloth,物理,Unity插件,unity
首先,必须开启模型上的Read/Write选项,这是为了读取并修改模型身上的顶点,MagicaCloth不支持具有4个或更多顶点的多边形,所以Keep Quads必须关闭
unity magica cloth,物理,Unity插件,unity
unity magica cloth,物理,Unity插件,unity
在裙子,上衣,拉链这三个Mesh Renderer上都添加 MagicaRenderDeformer(渲染变形器),它能对网格进行变形,添加后会自动创建数据,如果上一步Read/Write选项没有开启,这里会报错
unity magica cloth,物理,Unity插件,unity
Create Other -> Magica Cloth -> MagicaVirtualDeformer,然后创建一个MagicaVirtualDeformer(虚拟变形器),把之前三个 MagicaRenderDeformer(渲染变形器)添加到Render Deformer List中,点击Create生成数据,如果这里报错,点击渲染变形器上的Create重新生成数据。MagicaVirtualDeformer的作用是将一个或多个MagicaRenderDeformer转换为一个虚拟网格,减少顶点,将高多边形网格转换为低多边形网格。这个虚拟网格只用于布料模拟,所以实际模型网格不会被减少。从Cloth Monitor中可以看到虚拟网格的顶点数和三角面数

Reduction Setting 调整下面的参数可以减少顶点数量,简化网格,修改后重新点击Create

参数 描述
Merge Vertex Distance 在这个距离内合并顶点,忽略网格的连接性
Merge Triangle Distance 在这个距离内合并三角面,考虑网格的连接性
Same Surface Angle 如果两个连接的多边形小于此角度,则认为它们是相连的
Use Skinning 勾选会对所有顶点的骨骼权重进行重新赋值,取消勾选减少物理计算的负担

unity magica cloth,物理,Unity插件,unity
点击Open Cloth Monitor可以看到这个虚拟网格
unity magica cloth,物理,Unity插件,unity
Create Other -> Magica Cloth -> MagicaMeshCloth,然后创建一个MagicaMeshCloth并改名为衣服
unity magica cloth,物理,Unity插件,unity
这几个组件之间的关系

unity magica cloth,物理,Unity插件,unity
接下来的操作和MagicaBoneCloth差不多。添加虚拟变形器的引用,点击Start Point Selection修改顶点类型
unity magica cloth,物理,Unity插件,unity
这一步比较麻烦,它没有自动帮我们设置类型,需要手动设置,把裙子部分设置活动节点(Move Point),活动节点需要连接固定节点(Fixed Point)
unity magica cloth,物理,Unity插件,unity
在腿部添加两个胶囊形碰撞器并添加到Collider List中
unity magica cloth,物理,Unity插件,unity
预设选择Skirt,点击Create生成数据,运行时查看效果
unity magica cloth,物理,Unity插件,unity

MagicaMeshSpring 模拟胸部抖动

unity magica cloth,物理,Unity插件,unity
前面和MagicaMeshCloth差不多,先给胸部附近的Mesh Renderer添加MagicaRenderDeformer(渲染变形器)
unity magica cloth,物理,Unity插件,unity
Create Other -> Magica Cloth -> MagicaVirtualDeformer,创建一个MagicaVirtualDeformer,添加胸部附近的MagicaRenderDeformer,点击Create生成数据,可以调整参数适当简化网格
unity magica cloth,物理,Unity插件,unity
Create Other -> Magica Cloth -> MagicaMeshSpring,新建一个 MagicaMeshSpring 并改名为左胸
unity magica cloth,物理,Unity插件,unity
添加MagicaVirtualDeformer的引用,Center Transform 就是 MeshSpring 摆动的中心,选择左胸节点,如何没有合适的节点可以创建一个Transform节点,调整位置到中心,黄色箭头是摆动的前方向,差不多是z轴正向,所以Direction Axis选择Z
unity magica cloth,物理,Unity插件,unity
预设选择Breast,点击Create生成数据,右胸的处理一样
unity magica cloth,物理,Unity插件,unity
运行时发现摆幅比较大,还需要调整下Spring参数,参考下面参数说明

MagicaDirectionalWind / MagicaAreaWind 风

unity magica cloth,物理,Unity插件,unity
MagicaDirectionalWind 是控制全局的风

参数 描述
Main 风量
Turbulence 风的湍流率,在0.0时,风总是从某一方向流动,在1.0时,风向会随机变化
Frequency 风向变化的速度,你可以改变湍流变化的速度
Direction Angle X/Y 绕X/Y轴旋转的角度

unity magica cloth,物理,Unity插件,unity
需要配合Unity的WindZone组件使用,修改MagicaDirectionalWind风量Main会同步修改Wind Zone的风量Main,可以将两者做成一个预制体在场景中使用
unity magica cloth,物理,Unity插件,unity
衣服,头发受到的风力通过External Force参数设置,参考下面的参数说明

unity magica cloth,物理,Unity插件,unity
MagicaAreaWind控制局部区域的风,可以设置方形或球形区域,用它可以实现爆炸时猛烈的气流效果

参数 描述
Main 风量
Turbulence 风的湍流率,在0.0时,风总是从某一方向流动,在1.0时,风向会随机变化
Frequency 风向变化的速度,你可以改变湍流变化的速度
Shape Type 方形或球形
Direction Type 球形时有效,One Direction - 风吹向某一个方向,Radial - 风从中心径向吹来
Attenuation 球形径向风时有效,风从中心到四周的衰减率
Is Addition 当处于多个风场叠加的区域时,勾选表示叠加这几个风的影响,不勾选会选择区域最小的风场

unity magica cloth,物理,Unity插件,unity
这是官方示例中演示的爆炸气流效果,在红球上添加了MagicaAreaWind,设置为球形径向风,调整风量到最大并勾选Is Addition,这样红球出现时就会伴随强烈的气流,这时再配合爆炸的特效就有不错的表现效果

换装

unity magica cloth,物理,Unity插件,unity
把 MagicaAvatar 组件添加到身体部分,如果提示 No problem 就没问题,如果 body 下的 GameObject 的名称有冲突会显示警告
unity magica cloth,物理,Unity插件,unity
把 MagicaAvatarParts 添加到其他部分,如头发,脸,衣服等

MagicaAvatar 的主要方法

/// <summary>
/// 附加 MagicaAvatarParts,返回部位id
/// </summary>
public int AttachAvatarParts(GameObject avatarPartsPrefab, Action<GameObject> instanceAction = null)
{
    //.....
}

/// <summary>
/// 分离 MagicaAvatarParts
/// </summary>
public void DetachAvatarParts(int partsId)
{
    //...
}

unity magica cloth,物理,Unity插件,unity
Attach 后会显示相关部分

unity magica cloth,物理,Unity插件,unity
在 MagicaBoneCloth 和 MagicaMeshCloth 上会有 Merge Avatar Collider 这个选项,勾选表示当 MagicaAvatarParts 附加到 MagicaAvatar 上时会合并主体的碰撞器

参数说明

下面补充下其他其他参数的说明

Update Mode

指定模拟的更新时间

选项 描述
Normal 根据帧率更新
Unity Physics 基于 Unity 的物理更新,如果角色在 FixedUpdate 内移动,可以通过选择此项来抑制抖动

Culling

unity magica cloth,物理,Unity插件,unity
Culling是剔除相关的设置,当角色移出屏幕后如何影响物理系统的更新
首先需要将模型上的网格组件(Mesh Renderer或Skinned Mesh Renderer)添加到Cull Renderer List中,点击Auto Select即可自动添加,然后设置剔除模式

Culling Mode 描述
OFF 不剔除,始终进行模拟
Reset 离开屏幕,停止模拟,再次出现时,会重置模拟
Pause 离开屏幕,停止模拟,再次出现时,从停止的状态继续模拟

Animator和Animation上也有类似的剔除设置
unity magica cloth,物理,Unity插件,unity

Culling Mode 描述
Always Animate 不剔除,始终运行动画
Cull Update Transforms 不可见时不会渲染该动画,但是依然会根据该动画的播放来改变游戏对象的位置、旋转、缩放
Cull Completely 不可见时停止模拟,再次出现时,从停止的状态继续模拟

unity magica cloth,物理,Unity插件,unity

Culling Type 描述
Always Animate 不剔除,始终运行动画
Based On Renderers 与Animator的Cull Update Transforms一样,离开屏幕,内部动画仍在运行,但不会更新Transform组件

建议动画的剔除和 MagicaBoneCloth 的剔除模式相匹配,确保物理模拟与动画更好地同步
下面是推荐的匹配模式

Animator Culling Mode MagicaCloth Culling mode 描述
Always Animate OFF 不剔除,始终进行模拟和动画
Cull Update Transforms Reset 离开屏幕,停止模拟和动画,再次出现时,会重置模拟和动画
Cull Completely Pause 离开屏幕,停止模拟和动画,再次出现时,从停止的状态继续运行
Animation Culling Type MagicaCloth Culling mode 描述
Always Animate OFF 不剔除,始终进行模拟和动画
Based On Renderers Reset 离开屏幕,停止模拟和动画,再次出现时,会重置模拟和动画

Algorithm

unity magica cloth,物理,Unity插件,unity
Algorithm中老的算法已经不再维护,新的算法解决了老算法的一些问题,一般就默认Algorithm 2算法

Radius

unity magica cloth,物理,Unity插件,unity
每个由物理引擎控制的点都被称为粒子(particle),Radius就是控制这些粒子的大小,从骨骼链的根节点到末端节点的大小变化
unity magica cloth,物理,Unity插件,unity
点击Open Cloth Monitor,勾选Particle Position和Particle Radius,就可以看到长发上的粒子,根节点是黄色,子节点是白色,粒子的大小会影响碰撞检测的判断

Mass

unity magica cloth,物理,Unity插件,unity
Mass 就是控制粒子的重量,较重的粒子更难移动,基本上,如果开始点比较重,结束点比较轻,MagicaBoneCloth 的模拟会更稳定

Gravity

unity magica cloth,物理,Unity插件,unity
Gravity 设置重力加速度的大小和方向,设置重力让衣服下垂,不容易飘起了会显得更自然一点

External Force

unity magica cloth,物理,Unity插件,unity
External Force 设置外力(如风)的影响

名称 描述
Depth Influence 根据粒子在骨骼链上的深度指定受到外力的比率。1.0表示100%受外力影响,0.0表示完全不受外力影响
Wind Influence 风的影响率,1.0是100%受影响,0.0完全不受风的影响
Wind Synchronization 风的同步率,增加同步率,每个粒子将以同样的方式移动。降低同步率会使每个粒子更容易受到干扰
Wind Random Scale 风的随机率,增加随机性,也会增加运动的不规则性

Drag

unity magica cloth,物理,Unity插件,unity
Drag 设定粒子的空气阻力,阻力越大,粒子的惯性衰减越快
unity magica cloth,物理,Unity插件,unity
Max Velocity 粒子最大速度(m/s)

World Influence

unity magica cloth,物理,Unity插件,unity
World Influence 设置身体运动时,粒子受影响程度

名称 描述
Influence Target 检测运动的主体,如果不设置,就会选择该组件所附加的Transform
Max Move Speed 粒子最大移动速度
Movement Influence 身体运动对粒子的影响程度
Rotation Influence 身体旋转对粒子的影响程度
Reset After Teleport 在一帧内大幅度移动或旋转称为Teleport,该选项设置是否在检测到Teleport时重置粒子的位置
Teleport Mode Reset - Teleport后重置一次模拟。Keep - Teleport后保持模拟状态
Teleport Distance 一帧内移动多远距离算一个Teleport
Teleport Rotation 一帧内旋转多大角度算一个Teleport
Stabilization Time After Reset 重置时执行稳定化处理的时间(秒)

Distance Disable

unity magica cloth,物理,Unity插件,unity
Distance Disable 根据身体与指定对象(通常是摄像机)之间的距离,禁用/启用模拟

名称 描述
Reference Object 指定要测量距离的目标,如果没有指定,将选择主摄像机
Distance 指定关闭模拟的距离
Fade Distance 淡化距离,如果Distance是20,FadeDistance是5,则在15到20的距离之间进行淡入淡出效果

Clamp Distance

unity magica cloth,物理,Unity插件,unity
Clamp Distance 设置粒子离根节点的距离范围,作为参考距离,设置从根节点到粒子的直线距离为1.0,并将距离增加或减少的程度设置为百分比。举例来说,当Min Distance Ratio为0.7,Max Distance Ratio为1.1时,移动限制范围如下
unity magica cloth,物理,Unity插件,unity
末端粒子只能在图中两条红线之间的范围内移动
Velocity Influence 速度效应,将此设置为低值可以减少粒子因突然运动而移动的问题。然而,粒子的惯性也会丢失。

Clamp Position

unity magica cloth,物理,Unity插件,unity
Clamp Position 限制粒子从原点移动的距离,原点是粒子的原始位置

名称 描述
Clamp Position Ratio X/Y/Z 可以相对于原点X/Y/Z轴移动的百分比(1.0=100%)
Velocity Influence 同上

Clamp Rotation

unity magica cloth,物理,Unity插件,unity
Clamp Rotation 限制相对于父节点的旋转角度,上图直线表示根节点(固定粒子)不能弯曲,尖端可以弯曲25度

Restore Distance

unity magica cloth,物理,Unity插件,unity
Restore Distance 恢复距离,缩放连接的粒子之间的距离,使它们保持在原来的距离,其作用是保持原始形状。
有以下三种粒子连接方式:

类型 描述
Struct 根据原始结构连接粒子,在Bone Cloth中,是由Transform的父子结构构建的,在Mesh Cloth中,是由Mesh多边形的连接信息构建的。必选的
Bend 从原始结构中连接更多的结构型粒子,可以使形状不容易坍塌。可选的
Near 忽略原始结构,仅连接那些靠近的粒子,这种连接可以保持形状的强度,但也使其不容易变形。可选的
参数名称 描述
Struct Stiffness Struct 连接强度,该值越高,恢复速度越快
Bend Point 是否使用Bend连接
Bend Max Connection 一个粒子的最大连接数,连接数越多,形状稳定性越强,但负荷也更大
Bend Stiffness Bend 连接强度,该值越高,恢复速度越快
Near Point 是否开启Near连接
Near Max Connection 一个粒子的最大连接数
Near Max Depth 进行Near连接的粒子最大深度,骨骼链上起点深度为0,终点深度为1
Near Point Length 要链接的粒子之间的距离
Near Stiffness Near连接强度,该值越高,恢复速度越快
Velocity Influence 同上

Restore Rotation

unity magica cloth,物理,Unity插件,unity
Restore Rotation 恢复旋转,当粒子产生旋转后恢复到相对于父节点的角度

参数名称 描述
Restore Power 恢复的强度
Velocity Influence 同上

Triangle Bend

unity magica cloth,物理,Unity插件,unity
Triangle Bend 三角形弯曲,当Connection Mode设置为Mesh相关的选项,或者使用Mesh Cloth时会显示该参数
两个连接三角形受外力变形后,两个三角形的角度恢复到其原始角度

参数名称 描述
Bend Power 恢复的强度,基本上设置为1.0就行,但具三角形数量比较少的时候,尝试降低该值
Twist Correction 会创建特殊的约束数据以防止扭曲问题,它会增加消耗,因此不建议使用它,除非有扭曲的问题
Twist Recovery Power 恢复扭曲的强度,如果值太高,形状可能会变得很硬

Collider Collision

unity magica cloth,物理,Unity插件,unity
Collider Collision 设置粒子与碰撞体接触时的摩擦系数

参数名称 描述
Dynamic Friction 动态摩擦系数,与碰撞机接触的粒子很难移动,增加该值将增加摩擦力并减慢运动速度
Static Friction 静态摩擦系数,与碰撞器接触的粒子静止的强度,增加该值将导致粒子在碰撞器上立即停止

Penetration

unity magica cloth,物理,Unity插件,unity
Penetration 穿模

参数名称 描述
Penetration Mode 碰撞体穿模/表面穿模
Max Connection Depth 最大连接深度
Penetration Axis 粒子可以穿透哪个轴
Connection Distance 搜索粒子所连接的碰撞器时,最大搜索距离
Penetration Distance 粒子可以穿透的距离
Moving Radius 粒子可以移动的最大半径,粒子只能在这个半径的球体内移动
Penetration Ignore Collider List 要忽略的碰撞器列表

Rotation Interpolation

unity magica cloth,物理,Unity插件,unity
Rotation Interpolation 旋转插值

参数名称 描述
Fixed Non-Rotation 固定不旋转,当打开时,固定粒子(根节点)将完全不旋转
Line Avarage Rotation 根据连接线的平均角度调整粒子的旋转,将此功能打开会产生更平滑的结果

Spring

unity magica cloth,物理,Unity插件,unity
MagicaMeshSpring上调整弹簧的参数,指定弹簧运动的一个球形范围

参数名称 描述
Spring Radius 球形区域的半径
Spring Radius Scale X/Y/Z 三个轴影响的比例
Spring Power 弹簧力
Spring Direction Atten 弹簧力阻尼率取决于与球体前端的角度,左边是前面的方向,右边是后面的方向
Spring Distance Atten 弹簧力的衰减率取决于与球中心的距离,左边是球的中心,右边是球的外缘
Spring Atten Intensity 阻尼率的整体调整

Adjust Rotation

unity magica cloth,物理,Unity插件,unity
可以根据弹簧移动的距离为根节点添加旋转

参数名称 描述
Adjust Mode 指定检测运动的轴,通常是Direction Axis之外的两个轴
Adjust Rotation Power 旋转强度

性能优化建议

unity magica cloth,物理,Unity插件,unity

  1. Update Mode选择Delay Unscaled Time,实际的物理模拟会比画面慢一帧,为了解决这个问题,它通过上一帧和当前帧的物理模拟结果进行插值
  2. 尽量选择BoneCloth和BoneSpring进行模拟,如果裙子使用BoneCloth效果达不到预期就改成MeshCloth,但注意要简化网格
    unity magica cloth,物理,Unity插件,unity
  3. Virtual Deformer组件上需要关注的是Use Skinning选项,如果勾选了Use Skinning,则需要对所有顶点的骨骼权重进行重新赋值,取消Use Skinning可以极大地减少物理计算的负担。它的限制在于当取消了Use Skinning选项后,网格只会受到影响程度最大的Virtual Deformer的影响,可能在一定程度上会影响最终的表现,但是如果对于一个网格的Render Deformer只在一个Virtual Deformer中使用的情况下则可以放心地取消该选项的勾选

参考

up主IGBeginner0116

官方文档

【博物纳新】Magica Cloth文章来源地址https://www.toymoban.com/news/detail-780778.html

到了这里,关于Unity 布料模拟插件Magica Cloth的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Houdini中创建布料,并导入到Unity中

    在Houdini中创建一个具有物理效果和贴图的布料,导入到Unity中,实现一个效果良好的、可以与模型互动、有贴图的静态布料模型。 参考视频:Houdini+Unity 2021制作布料全流程!_哔哩哔哩_bilibili 首先创建一个obj文件: 随后右键这个节点,创建一个Digital Assret。 进入Type Propertie

    2024年02月08日
    浏览(41)
  • 3ds Max建模教程:模拟布料拖拽撕裂和用剑撕裂两种效果

    推荐: NSDT场景编辑器 助你快速搭建可二次开发的3D应用场景 步骤 1 打开  3ds Max 。 打开 3ds Max 步骤 2 在透视视口中创建平面。保持 其长度 后座 和 宽度后座 为  100 。 创建平面 步骤 3 转到助手 假人 并在 飞机的两侧。 助手假人 步骤 4 选择左侧的假人后,打开 自动键 按钮

    2024年02月14日
    浏览(46)
  • UE4/5数字人Metahuman与Style3D的使用【二、布料模拟】

    目录 鼠标点击布料模拟: 让布料模拟可以跟着动画序列: 有穿模情况: 多件衣服替换:  关卡序列中使用缓存:  效果: UE4/5数字人Metahuman与Style3D的使用【一、Style3DAtelier软件制作smd格式衣服并导入ue】_多方通行8的博客-CSDN博客 在经过之前的讲解和使用,大家应该把衣服

    2024年02月11日
    浏览(45)
  • 【Unity 实用插件篇】 | UI适配神器 Device Simulator 移动设备模拟器 的详细使用方法

    前言 今天带来的是Unity提供的一个设备模拟器 Device Simulator 。 它可以帮助开发者在编辑器中模拟出移动端的环境,直接进行测试。 所有操作都可以在编辑器上进行#

    2024年02月11日
    浏览(45)
  • 如何利用FPGA加速技术提高物理模拟性能

    物理模拟是计算机科学的一个重要领域,它涉及到模拟物理现象,如热力学、力学、电磁学等。物理模拟技术广泛应用于各个行业,如工业生产、交通运输、建筑工程、能源等。随着物理模拟技术的不断发展,计算能力和模拟精度的要求也不断提高。因此,如何提高物理模拟

    2024年04月13日
    浏览(32)
  • UE4中抛体物理模拟UProjectileMovementComponent

    背景:实现抛体运动,反弹效果,抛物曲线等功能 通用实现可以使用spline绘制,物体按照下图接口可以根据时间更新位置 为处理碰撞反弹等,本文考虑使用UProjectileMovementComponent相关 纯工具类组件 继承自UMovementComponent UE4官方文档: UProjectileMovementComponent ProjectileMovementCompon

    2024年02月08日
    浏览(41)
  • ue4 无效模拟选项:形体被设置为模拟物理,但启用碰撞不兼容

    可能是由于勾选模拟物理后,但是碰撞未启用: 碰撞预设可选第一个选项,碰撞已启用勾选已启用碰撞

    2024年02月15日
    浏览(44)
  • 【物理】模拟粒子在电场和磁场中的轨迹研究(Matlab代码实现)

     💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 模拟粒

    2024年02月16日
    浏览(35)
  • PyBullet:一种用 Python 构建的开源 3D 物理模拟工具(教程含源码)

    PyBullet 是一种物理引擎,用于模拟刚体动力学并支持创建逼真的 3D 环境。它基于 Bullet Physics Library,并提供易于使用的界面来模拟各种物理现象。在这篇博文中,我们将探讨 PyBullet 中的用例和可用方法。 PyBullet 在各个行业都有广泛的用例。以下是 PyBullet 的一些最常见用例:

    2024年02月04日
    浏览(39)
  • Unity基础课程之物理引擎6-关于物理材质的使用和理解

     每个物体都有着不同的摩擦力。光滑的冰面摩擦力很小,而地毯表面的摩擦力则很大。另外每种材料也有着不同的弹性,橡皮表面的弹性大,硬质地面的弹性小。在Unity中这些现象都符合日常的理念。虽然从原理上讲,物体的摩擦力和弹性有着更复杂的内涵,例如普通的钢板

    2024年02月07日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包