眼睛慢慢眯成一条线的人都是实力很强劲的,教你在Unity中通过BlendShape来实现角色面部表情过渡切换(Animation)

一、前言

点关注不迷路,持续输出Unity干货文章。
嗨,大家好,我是新发。
Unity项目中,我们可能需要实现3D角色表情的过渡切换,比如像这样子:
在这里插入图片描述
在这里插入图片描述
Unity中如何做这个功能呢?今天就来跟大家讲一下。

二、BlendShape(动画师、MAYA)

Maya中,动画师可以使用BlendShape绑定好表情,动画师只需要制作好A表情B表情C表情等,通过BlendShape就可以很方便地进行表情之间的插值过渡了。
注意BlendShape与骨骼动画不同,骨骼动画需要先将网格绑定骨骼,由骨骼来驱动网格;而BlendShape不需要骨骼,BlendShape很适合用作面部表情的实现。
动画师做好BlendShape后,Unity客户端程序员将模型导入Unity工程中,在Unity中勾选模型的Import BlendShapes
在这里插入图片描述
这样,在Unity中我们就可以通过BlendShape滑块来调节表情的过渡啦。
在这里插入图片描述
效果如下:
在这里插入图片描述

三、Unity控制BlendShapes

上面我们是手动调节BlendShape的滑块,我们如何通过代码来控制BlendShape呢?
有两种方式:
1、直接通过SkinnedMeshRenderer组件访问BlendShape
2、制作成Animation,在Animation中控制BlendShape,然后由代码来控制Animation

1、SkinnedMeshRenderer控制BlendShape

接口:

// SkinnedMeshRenderer.cs
public void SetBlendShapeWeight(int index, float value);

参数index就是BlendShape的索引,从0开始,参数value是滑块的值,范围:0~100
在这里插入图片描述

2、Animation控制BlendShape

动画师将表情制作成Animation,特定组合的BlendShape其实就是一个表情,比如眉毛上抬,眼睛睁大,嘴巴张开这三个组合起来是一个表情,这样做成nAnimation动画。
在这里插入图片描述
把这些动画组织到Animator状态机中。
在这里插入图片描述

关于Animator的使用,可以参见我之前写的这篇文章:《Unity动画状态机Animator使用》

接着,我们就可以通过播放动画来实现表情的过渡了。

// Animator.cs
public void CrossFade(string stateName, float normalizedTransitionDuration);

参数stateName是动画状态名称,比如smile,参数normalizedTransitionDuration是动画融合归一化时间。
我们可以测试下normalizedTransitionDuration分别为00.3f1三种情况的融合效果:
为0的情况:
在这里插入图片描述

为0.3f的情况:
在这里插入图片描述
为1的情况:
在这里插入图片描述

四、结束语

好了。
喜欢Unity的同学,不要忘记点击关注,如果有什么Unity相关的技术难题,也欢迎留言或私信~
感谢阅读,我们下次再见。
在这里插入图片描述

### 回答1: Unity是一种常用的游戏开发引擎,它提供了强大的工具和功能,用于创建游戏的各种效果,包括混合形状(Blendshape)和换装(Character Customization)。 Blendshape是一种通过改变模型顶点的权重来实现模型形状变换的技术。在Unity,可以使用Blendshape实现角色表情的动态变化。通过为角色模型创建不同的表情形状,然后在代码根据需要修改这些形状的权重,就可以实现角色表情变化。例如,可以通过修改眉毛、嘴巴、眼睛等部位的权重来改变角色表情,从而使其看起来生动且有表情。 换装是一种角色定制的功能,允许玩家根据自己的喜好和需求为角色选择不同的服装、装备、发型等。在Unity,可以通过使用骨骼动画和多个模型层来实现角色换装功能。首先,创建一个包含不同服装或装备的模型,然后在角色模型身上创建多个未连接的层,每个层代表一个装备选项。玩家可以通过更改模型层的权重或激活/取消激活层来实现角色的换装。 无论是使用Blendshape还是换装,Unity提供了简单易用的工具和接口来实现这些功能,开发人员只需要理解基本的概念和操作即可实现复杂的表情和换装效果。这些功能可以为游戏增加更多的个性化定制选项,并丰富游戏角色的表现力。 ### 回答2: Unity是一款强大的游戏引擎,它具有丰富的功能和工具,可以用于开发各种类型的游戏和应用程序。其之一就是表情和换装的实现,主要借助于Unity内置的BlendShape系统。 表情在游戏或动画扮演着重要的角色,可以让角色或模型更加生动和有表情UnityBlendShape是一种基于蒙皮的形变技术,它可以通过修改模型的顶点位置和权重来实现各种不同的表情变化。 首先,我们需要在Unity导入一个包含表情变化的模型。然后,我们可以在Unity的模型导入设置找到BlendShapes选项,启用它。在模型导入完成后,我们就可以在模型的inspector面板看到BlendShape选项,里面包含了所有的表情。 接下来,我们可以通过在BlendShape滑块上调整权重来改变表情的强度。比如,如果我们想要改变模型笑的表情,我们可以将相应的滑块向右拖动。这将导致模型的某些顶点位置发生变化,从而形成一个笑容。 除了表情BlendShape还可以用于实现换装功能。我们可以为每一套服装或装备创建不同的表情,然后根据需要在游戏切换它们。例如,当游戏角色穿上新衣服时,我们可以通过调整BlendShape滑块的权重,使得模型的顶点位置与新衣服相匹配,从而实现衣服的穿戴效果。 总结起来,Unity提供了强大的BlendShape系统,可以用于实现表情和换装功能。通过调整模型的顶点位置和权重,我们可以轻松地修改模型的表情,使其更加生动有趣。同时,通过切换BlendShape滑块的权重,我们可以实现角色的换装效果,让游戏更加丰富多样。
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林新发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值