紧身衣模拟
注:紧身衣英文原文是fasica,意指皮肤和肌肉之间的夹层
第零步
将肌肉和骨骼全部转换为 Ziva Bone
注:肌肉也添加Bone,这里是为了制作紧身衣而不是模拟
将肌肉和骨骼全部转换为 给模拟的角色模型添加 Attachment
第一步
zMaterial
- Rest scale 0.8
- Pressure 60
zSolver
- Enable off (ChannelBox)
先设置这个参数
- StartFrame 1 (ChannelBox)
- Collision Detection on
- Substeps 4
- Max Newten Iterations 2
- Gravity Y 0
zCloth - 设置关键帧
第0帧
- Rest Scale Envelope 0
- Pressure Envelope 0
第20帧
- Rest Scale Envelope 1
- Pressure Envelope 1
由于 Zsolver 的 Envelope 属性不可以设置关键帧,可以退而求其次,禁用 Zcloth 的属性
第二步
zSolver
- Enable on (ChannelBox)
第三步 开启播放 模拟紧身衣
如果效果不理想
可以看到紧身衣的效果很混乱不堪,包裹效果不理想
zSolver
- Collision Point Spacing 0.003
可以调整这里的数值来使模拟的效果更精确,确保更多点呈现绿色,绿色说明是正确的碰撞
zCloth
- Contact stiffness Exp 10^6
如果衣服后崩塌或者错乱,可以降低这个数值
zBone
- Contact stiffness Exp 10^6
如果衣服后崩塌或者错乱,可以降低这个数值
理想效果
第四步 处理局部问题
可以看到紧身衣在局部区域没有包裹住模型
添加多一个Material层
zMaterial2
- Rest scale 0.9
- Pressure 300
zSolver
- Enable off (ChannelBox)
关掉演算可以提高绘制效率
zMaterial的权重根据节点顺序覆盖
先绘制需要的区域,然后可以平滑权重
在当前Ziva版本,zCloth尚不支持自我碰撞,紧身衣呈现效果有些许问题属于正常情况
第五步 手动修缮模型
最后可以将紧身衣复制出来,用雕刻工具去修复有问题的区域
也可以用平滑工具来修缮紧身衣的表面
当上述操作完成之后,可以进行重拓扑步骤
第六步 模型重拓扑
官方使用了Mudbox 完成操作
重拓扑效果
第七步 通过zBuilder传递属性
导入重拓扑模型
zBuilder将信息重建到重拓扑的模型上(只要改掉名称就可以实现)
zBuilder 不会重建关键帧,需要注意之前设置的关键帧要重新设置
第八步 对重拓扑模型再次模拟紧身衣效果
再次启动模拟一次,将新的模型复制,再用zBuilder重建一次
以上紧身衣就做好了
皮肤厚度模型制作
导出紧身衣模型到Wrap3
官方由于Wrap3的软件问题跳过了该步骤(:зゝ∠)
官方指出Maya也可以完成这个步骤,Wrap3效果更好,效率更高
Wrap3 处理之后合并模型呈现的效果
我所理解的大致操作思路
- 打开Wrap3
- 导入原先的外层模型
- 导入紧身衣模型
- 通过映射将紧身衣模型映射成原先外层模型的大小
- 将新的模型导回 Maya
- 复制一个新的紧身衣模型 (旧的紧身衣有Ziva的属性,后续还有用)
- 将外层模型和新的紧身衣模型桥接合并成皮肤模型
Ziva 皮肤模拟
记得重新K帧 两个Envelope通道
给皮肤模型添加Tissue
默认情况这个精度太大了,不够细
zTet => Tet Size 3 降低 Tet size 提高精度
选择紧身衣模型再选择皮肤模型,进行attachment操作
zMaterial => Mass Density 106
给重力设置关键帧
zSolver => Gravity 0 第1帧
zSolver => Gravity -9.8 第5帧
zSolver => Substeps 2
删除 zMaterial2 节点
zMaterial => Pressure 1500
确保Tissue可以紧贴在紧身衣上
提高这个部分的网格精度
皮肤模拟流程
第零步
预先见肌肉的动态效果模拟出来,并通过Blendshape传递做成Ziva Bone效果
第一步
给skin创建多一个Material用来区分内层和外层参数。
两个Material分别命名为 skin_baseMaterial 和 skin_innerMaterial
skin_baseMaterial
- Mass Density 106 注:其实是在原先的基础上除以10,目的是减少大范围移动的错位
skin_innerMaterial
- Mass Density 106 注:其实是在原先的基础上除以10,目的是减少大范围移动的错位
将 skin_innerMaterial 的权重刷给内层的点
可以通过内层的模型,用脚本获取皮肤上的点
第二步
skin_baseMaterial
- Surface Tension 45
- Pressure -2500 (根据法线方向定正负)
skin_zTissue
- Surface Tension Envelope 给它设置一个从零开始的关键帧,确保一开始不会因为效果过于激烈而错误。
- Pressure Envelope 给它设置一个从零开始的关键帧,确保一开始不会因为效果过于激烈而错误。