前言

Ziva是一款肌肉仿生插件,可以再 Maya 里面结算肌肉的碰撞,模拟出真实的肌肉效果。

今天我和吴智博商量有了初步的解决方案,方案有些复杂。
我们采用模块化的解决方案
以下是我们的操作流程

模型截取

  • 导入我们设置好的肌肉组件 (截图效果仅供参考)

alt

  • 放置到模型合适的位置上

alt

  • 选择模型需要参与的面

alt

  • 截取这部分面

alt

  • 将截取的部分复制一个新的出来

alt

制作皮肤模型

  • 给这个面片赋予Ziva布料效果,调整参数模拟出收缩的紧身衣模型^1

alt

  • 复制一个紧身衣面片,并将其与原先截取出来的面片结合桥接出有厚度的皮肤模型^2

alt

皮肤模型 Blendshape

  • 再次选择皮肤模型上有厚度的表面进行提取复制(可以借助Ziva提供的插件完成选择工作)

alt

  • 这样就生成了两套外层皮肤模型,一个有厚度的皮肤模型,一个没有厚度的表层模型,厚度模型可以 Blendshape 到没厚度的模型上

alt

  • 再复制一个 表层模型 作为 中介模型 ,将 表层模型 和 截取外的皮肤合并回到一起^3

    皮肤模型 可以 Blendshape 到 中介模型 上,再通过 中介模型 Blendshape 表层模型 上 ^4 ^5

alt

  • 表层模型模型上的接缝可以通过平滑法线来解决

alt

驱动表层模型

  • 将现在做好的表层模型再复制一个作为 渲染模型^6,同样地通过Blendshape链接到表层模型

alt

  • 渲染模型添加 Ziva Tissue 效果

alt

  • 绑定模型 添加 Ziva Bone 效果

alt

  • 将两个模型 attachment 到一起 (世界坐标重合)

alt

  • 通过 attachment 可以实现 绑定模型 驱动 渲染模型^7

alt

^1: 创建紧身衣模型在于包裹住模型,从而更好地与肌肉碰撞
^2: 紧身衣模型模型与原模型有很大差异,因此将两者何必为有厚度的模型通过 Ziva 的 Tissue 效果来达到更好的皮肤还原效果
^3: 表层模型合并需要先选择表层模型再选择另外一部分的皮肤,这样操作是确保表层模型的点信息与中介模型一致,从而让Blendshape正常运作
^4: 创建中介模型的目的在于确保 Blendshape 能够传递正确的驱动信息,因为厚度模型上的拓扑结构不一致,中介模型可以过滤掉这一层的影响
^5: 截图上为了方便演示将三套东西分开了,理论上是合在一起的
^6: 创建渲染模型的原因与中介模型一样,是为了避免历史造成的影响
^7: Ziva的Attachment属于动力学范畴,需要播放进度条才能看到效果