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

技术标签: unity  Unity3D  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相关的技术难题,也欢迎留言或私信~
感谢阅读,我们下次再见。
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/linxinfa/article/details/116666936

智能推荐

报错:The server time zone value ‘�й���׼ʱ��‘ is unrecognied-程序员宅基地

文章浏览阅读6.8k次,点赞9次,收藏14次。当我们通过JDBC连接数据库的时候有时候会报出以下的错误:翻译一下就是:服务器时区值’�й���׼ʱ��’ 无法识别或表示多个时区。如果要使用时区支持,必须配置服务器或JDBC驱动程序(通过“serverTimezone”配置属性)以使用更具体的时区值。这是由于使用的JDBC驱动包版本高于6(包括6),当我们使用这些版本连接要使用的URL时,必须加上serverTimezone参数,来设置时区。_he server time zone value

R语言入门——NA、NAN、Inf(缺失值的识别)_r语言na和nan-程序员宅基地

文章浏览阅读2.7w次,点赞15次,收藏47次。目录00引言1、Inf2、NAN(Not a Number)3、NA与逻辑运算符4、总结00引言这篇的主角是R语言中缺失值(NA)的识别与提取。先介绍NAN、Inf及其运算。在最终介绍缺失值(NA),毕竟重要的都压轴嘛。1、Inf在实数轴上除了确定的有限点,还有两个无限:正无穷、负无穷。用Inf、-Inf表示。> Inf[1] Inf> -Inf[1] -Inf>..._r语言na和nan

Linux CentOS7 安装 Qt 5.9.2-程序员宅基地

文章浏览阅读1.8k次,点赞2次,收藏7次。Linux CentOS7 安装 Qt 5.9.2 参考链接 http://doc.qt.io/qt-5/linux.htmlsudo yum groupinstall "C Development Tools and Libraries"sudo yum install libgl libgl-develsudo yum install mesa-libGL-devel mesa-libG..._centos7 #error "qt requires c++11 support

android studio 报错 AAPT: error: style attribute ‘attr/colorPrimary (aka com._aapt: error: attribute android:style not found.-程序员宅基地

文章浏览阅读1.7w次,点赞5次,收藏4次。是因为把这个 implementation 'androidx.appcompat:appcompat:1.2.0' 给删掉了。dependencies { implementation 'androidx.appcompat:appcompat:1.2.0'}_aapt: error: attribute android:style not found.

2023编程语言趋势_各程序设计语言最新发展趋势-程序员宅基地

文章浏览阅读3.5w次,点赞73次,收藏121次。Python持续霸榜,PHP依旧颓势,Java雄风不再,Rust热度不减,汇编迅速崛起,C语言地位稳固_各程序设计语言最新发展趋势

前方高能!2023开放原子开发者大会亮点攻略,一触即发-程序员宅基地

文章浏览阅读5.1k次,点赞25次,收藏22次。12月16-17日中国 · 无锡。

随便推点

ESD静电放电最常用的三种模型及其防护设计_esd保护需要考虑哪几种放电模型-程序员宅基地

文章浏览阅读2.8k次。推荐好文 建议直接看链接1、静电放电最常用的三种模型及其防护设计http://www.360doc.com/content/17/0827/14/32066980_682502209.shtml人体模型HBM、机器模型MM、充电器件模型CDM2、静电放电(ESD)理论研究及静电放电模型http://www.elecfans.com/d/674968.html静电发生器的模型如图1..._esd保护需要考虑哪几种放电模型

【小白学PyTorch】 2.浅谈训练集验证集和测试集-程序员宅基地

文章浏览阅读2.8k次。文章目录:经验误差与过拟合评估方法 经验误差与过拟合 关键词:错误率(error rate),精度(accuracy)。错误率好理解,就是m个样本中,a个样本分类错误,则错误率E = a..._训练集和验证集精度

jQueryによるフォームのデザインの基礎(前編)-程序员宅基地

文章浏览阅读3.5k次。前回まではjQueryの基本的な使い方である、「セレクターで(X)HTML要素を指定し、イベントが発生したタイミングで(X)HTMLやCSSを書き換える」プログラムの書き方を紹介してきました。jQueryにはほかにも、Webページを使いやすくする便利な機能が用意されています。今回からは、これまでに触れていない特別な機能を紹介していきましょう。 第8回は、「問い合わせフォーム」など、商用サイトに

Delphi-XE5-手势操作-Gestures-使用方法_delphi安卓添加手势-程序员宅基地

文章浏览阅读4.8k次。Delphi-XE5-手势操作-Gestures-使用方法一、首先转载一下别人的方法介绍:今天尝试了TTabControl的使用。在很多Android的app中,首次启动时都使用选项卡模式进行产品介绍,用户通过向左滑动,改变选项卡。在xe5下这项工作由TTabControl控件完成,如下图: 1、TTabControl外观TTabContro_delphi安卓添加手势

cut命令-程序员宅基地

文章浏览阅读3.9k次,点赞7次,收藏27次。cut命令_cut命令

Web3.0时代什么时候到来,Web3.0有什么机会?_社交网络 web3.0-程序员宅基地

文章浏览阅读6.1k次,点赞65次,收藏89次。什么是web3.0?web3.0和web2.0以及web1.0有什么不一样?web3.0需要哪些技术支撑?web3.0有哪些应用场景?web3.0什么时候到来?普通人有哪些机会?开发者需要掌握哪些开发技术?随着科技的飞速发展,互联网也在不断演变。从Web1.0到Web2.0,我们已经见证了互联网从单向信息传递到用户参与互动的转变。而现在,我们正站在迈向Web3.0时代的门槛上。今天本文就来探讨相关话题。_社交网络 web3.0