本文详细介绍了Maya中的blendShape技术,包括其作为变形器的概念、创建方法(如融合变形功能和形变编辑器),以及通过Python脚本创建blendShape的步骤。此外,还探讨了blendShape的工作原理和应用场景,如制作表情动画和配合蒙皮骨骼制作高级动画效果。 摘要由CSDN通过智能技术生成

由于本人最近一直在研究MetaHuman的blendShape,所以想要将了解到的知识整理汇总,也是为了学习到更多的知识,特此写了这篇文章,希望大家共同进步[ps.1]。注意,阅读本文需要掌握一定的Maya基础知识。

一、什么是blendShape

“blendShape”[ps.2],在一些DCC软件中也被称为“BlendShapes”,是一个变形器,“blend”有混合、融合之意,所以可以翻译为“融合形变变形器”[ps.3]。它能够使“基础网格”通过顶点插值运算的方式变形为“目标形状”,通常用于制作表情动画、辅助骨骼制作动画,在Maya中以节点形式存在。

二、创建blendShape

1、使用融合变形功能创建blendShape

在Maya中通常使用融合变形功能创建blendShape,该功能需要准备“基础网格”与“目标网格”。基础网格需要且只需要一个,用于形变为“目标形状”;目标网格至少需要一个,无上限,用于读取数据信息生成“目标形状”。

我通过复制网格“pSphere_base”,再移动顶点位置的方式制作了两个新网格,这两个新网格与原网格之间只有顶点位置存在差异,其他信息完全相同,我将这两个新网格命名为“pSphere_target1”与“pSphere_target2”。

只存在顶点位置差异的三个网格

我希望能够使“pSphere_base”变形成“pSphere_target1”与“pSphere_target2”的形状,操作步骤如下:

  1. 选择目标网格,框选、点选都可以;

  1. 选择基础网格,该功能会自动将你最后一个选中的网格作为基础网格,所以想要改变网格“pSphere_base”的形状,需要最后选中“pSphere_base”;

  1. 点击“变形>>融合变形”,使用融合变形功能创建出的blendShape会自动与基础网格链接。

使用融合变形功能创建blendShape

2、在形变编辑器中创建blendShape

在形变编辑器中也可以创建blendShape,并且只需准备基础网格即可。在“窗口>>动画编辑器>>形变编辑器”中打开形变编辑器,使用的网格为“pSphere_base”。步骤如下:

  1. 选中基础网格,不选中的话点击创建融合变形按钮不会有反应;

  1. 点击形变编辑器中的创建融合变形按钮,创建blendShape;

  1. 点击形变编辑器中的添加目标按钮,为该blendShape添加目标形状;

  1. 新创建的目标形状中的编辑按钮红色高亮,此时修改基础网格的顶点位置时修改的是目标形状中记录的顶点位置信息,模型本身的数据不会被修改。

  1. 在修改好网格形状后点击编辑按钮确认编辑,此时就成功创建好了一个blendShape和一个目标形状。

在形变编辑器中创建blendShape

3、通过maya python创建 blendShape

第一步,创建blendShape节点,为pSphere_base创建一个名为BSName的blendShape节点

# 创建blendShape节点
baseMesh = "pSphere_base"
BSName = "pSphere_base_blendShape"
cmds.blendShape(baseMesh, n=BSName, foc=True)

在python编辑器中输入并运行代码,

选中pSphere_base后,可以看到pSphere_base_blendShape节点已经在输入一栏中

第二步,将目标形状添加到blendShape节点中

# 将目标形状添加到blendShape节点中
targetMesh_1 = "pSphere_target1"
# 目标形状的ID,从0开始,如果要创建多个目标形状,则依次取整数
tarId = 0
# t=(基础模型,目标形状ID,目标模型,目标值)
cmds.blendShape(BSName, edit=True, t=(baseMesh, tarId, targetMesh_1, 1.0), origin = "local")

输入代码并运行,可以看到blendShape节点中多出了一个名叫pSphere_target1的目标形状

4、其他创建blendShape的方法

除了上述两种方法外,还有通过openMaya创建blendShape,在节点编辑器中创建blendShape等进阶方法,在这就不多做赘述。

三、blendShape的工作原理

blendShape 的主要工作原理:读取“目标形状”中的顶点索引与位置信息,依据权重让“基础网格”的各个顶点向“目标形状”做插值运算,使“基础网格”变形。

假设现在 blendShape中包含三个目标形状,且对应权重分别为0.2、0.5、0.8,它对顶点A1做插值运算的公式如下,其中顶点B1、C1、D1对应三个目标形状中的A1点。

blendShape对顶点A1做插值运算[ps.4]

顶点根据权重值获得了一个新坐标,网格上所有的顶点都如此操作,使网格体呈现出不同形状。

blendShape的优点就在于它可以灵活控制每一个顶点,且这种位移可以控制权重、可以叠加,又不会影响网格的原始数据。但是它也有缺点,通过公式可以看出顶点的位移是线性的,每一个顶点都在往目标位置做平移运动,因此blendShape很难做到有弧度的动画效果。

四、blendShape的应用场景

1、制作表情:

为绊爱制作表情,详见参考文献一

2、 配合蒙皮骨骼制作表情

MetaHuman让blendShape配合蒙皮骨骼制作动画表情,使动画效果更上一层楼。如在闭眼时修改眼皮形状,使上下眼皮更贴合;在张嘴时修改嘴唇形状,使嘴唇更饱满立体。并且支持在面捕时启用blendShape。

ps.1:本章 内容基于网上的资料与笔者个人的理解写成,部分内容有待商榷,如果您发现了有问题的或是想要深入了解的地方,欢迎大家给我留言,共勉。

ps.2:本文介绍的是Maya中的blendShape,称呼、创建方法、底层逻辑可能与其他DCC软件中的不同,在此以Maya2020为准。

ps.3:“blend”有两个主流翻译,一为“混合”,二为“融合”。这里采用笔者所使用的Maya2020中文版中的翻译“融合”。

ps.4:图片来源为参考文献一,公式内容其实与Maya的 blendShape有些许出入,但基本原理相同

参考文献与视频资料

  1. 吾为剑骨 . 【技术美术百人计划】美术 3.5 BlendShape基础

  1. Cz_wang . BlendShapes基础与拓展练习(面捕与物体变形)

blend shape 制作面部表情,需要进行表情镜像。 于是开工,做了一个 blend shape 表情镜像的小插件。 maya 2016、2018测试正常,安装使用说明都在压缩包内。 详情请见:https://www.jianshu.com/p/82e1b963b455
CSDN-Ada助手: 恭喜您写了一篇非常有用的博客!使用Python在外部运行Maya-standalone库不仅可以提高工作效率,而且还能为其他人提供帮助。接下来,我建议您可以分享一些关于外部运行Maya-standalone库的实际应用案例,让读者更好地了解其用途和优势。期待您的下一篇文章! CSDN 会根据你创作的前四篇博客的质量,给予优秀的博主博客红包奖励。请关注 https://bbs.csdn.net/forums/csdnnews?typeId=116148&utm_source=csdn_ai_ada_blog_reply4 看奖励名单。