扫码打开虎嗅APP
本文来自微信公众号: CG世界 ,作者:小岛一颗聪
看多了正正经经、一板一眼的布料与肌肉模拟;今儿不一样,小编带你们刷一波看起来有点不太“正经”的
惊不惊喜,意不意外,开不开心?那废话不说,咱直接开摆!当然,在进入正题之前,还是要感谢下今天这组布料、肌肉模拟的提供者,Reddit艺术家:sirdioz69。

不必小编多说,看图各位懂的都懂,今天这期能放出来给各位看的内容可能比较有限,想要继续深入研究的,作者主页:
https://www.reddit.com/user/sirdioz69/submitted/
一周多前,sirdioz69在自己的Reddit平台上,分享了一个用Blender制作的趣味布料和肌肉模拟。
为了满足观众们的好奇心,这位大佬还热心分享了自己的整个创作过程。
作者首先对自己雕刻的基础网格进行了拓扑优化,同时添加“多级精度(Multires)”修改器,用来雕刻高精度细节;之后复制网格、缩小,参照现实素材和其他肌肉设置来雕刻肌肉。
遮罩并分离出每一块肌肉,拆分并重新网格化;随后利用创建的物理骨骼,对肌肉体积进行布尔运算,并在此基础上进一步雕刻,使用Quad Remesher完成肌肉重拓扑。
接着,为每块肌肉单独绘制权重、设置用于固定的自定义次级权重来防止模拟过程中出现异常形变。为了实现自然的有机运动,作者还赋予了每块肌肉独立的布料模拟属性,以确保肌肉的隆起与收缩符合解剖学规律,在保持体积不流失的同时还能完美处理自身及外部的碰撞交互。
随后,通过将所有肌肉重新网格化后组合在一起进行布尔运算,掏空用于渲染的网格,生成了一个“脂肪层”。由于肌肉会对脂肪网格进行布尔运算,因此会产生动态的厚度变化:在肌肉离皮肤比较远的地方,脂肪层更厚,晃动也更加明显;在肌肉靠近表面的地方,则让角色看起来更精瘦、轮廓更分明。
脂肪层作为模拟的核心,作者应用了数百个单独遮罩的“表面变形”来捕捉每一块肌肉的运动,然后在脂肪外壳本身上运行布料模拟,以产生次级晃动并修复穿插问题;最后,用一个代理皮肤(有自己的布料模拟,并被压缩在脂肪层上)将其包裹。
对于衬衫的布料模拟,作者使用了代理网格来驱动,并利用张力贴图来驱动皱纹贴图制作更精细的褶皱。
由于物理数据量巨大,烘焙每帧大约需要3秒钟,视口播放时的帧率也只有5 FPS。为了能正确地审视动作,作者将整个模拟导出为Alembic格式,以实时的24 FPS回放动画来进行最后的润色。
好有活力的布料模拟测试,作者大大先将模拟数据烘焙到肌肉上,再让它们去驱动表面的形变。
至于为什么要让肌肉去驱动表面形变,自然是因为在某些特定的需要追求极致写实度的场景下,让皮肤像一层“布料”一样包裹在由动画驱动的底层骨骼网格上,能够大幅提升真实感。
布料模拟Part3,角色的衣物被处理为单面且一体成型的网格结构,在模拟烘焙完成后才添加实体化与细分曲面修改器;至于视觉上的接缝、针脚以及大部分褶皱细节,并非源自真实的拓扑结构,而是通过法线贴图巧妙呈现。
布料模拟是在极其精简的拓扑结构上运行的,随后利用Catmull Clark细分算法重塑其形态。引入细分曲面的目的,不仅是为了消除因平面剧烈变化而产生的阴影伪影,使其平滑化,更是为了解决实体化修改器带来的法线伪影问题。处理方式极其干净,乍看之下就像是通过高密度拓扑进行布料模拟得出的结果。
不过,作者出于趣味性考量将特定部位的权重设定过高,导致布料显得过于有弹性了,缺乏应有重量感,却也意外带来了充满戏剧性与幽默感的视觉效果。
尝试在单一骨骼上堆叠9层布料模拟,目的是对Blender的布料解算能力进行极限压力测试。
具体操作是先将7层布料模拟,作为“包裹层”分别布置在臀部、乳沟、大腿及腹部区域;在此基础上叠加一层短裤模拟。为了进一步增加复杂度,作者还在最外层覆盖了一件衬衫。
为了解决多层叠加引发的穿插问题,又进行了多次重新烘焙来修正瑕疵,一整个浑然天成。
测试并未使用隐藏的独立碰撞对象,而是将整个身体网格直接设定为碰撞体。解决堆叠冲突的关键在于分层烘焙策略,作者习惯使用Alembic(.abc)文件进行烘焙,来有效规避Blender原生工作流中的一些不稳定因素。
挑战Blender极限不能停,单一骨骼上堆叠10层布料模拟。
动捕数据来自Adobe Mixamo,之后作者将其重定向到了自己的骨骼上。
说了带你们看点不一样的,渲染看多了,现在带各位看看渲染“翻车”
作者对自己早期动画《Drifting Cat》进行的重制,不过为了省事只用了打的发光平面来模拟环境光,但却忘记在渲染设置里把平面隐藏掉。
于是就导致在光滑的表面上映出了长方形灯光板,加上炫光特效后穿帮就更加明显
开篇咱们也说了,这位的作品数量有限,有限的作品中方便拉出来的数量就更有限,所以咱今天的分享就到这里了。