【零基础入门unity游戏开发——unity3D篇】3D模型 —— 在Unity中通过BlendShape实现3d角色模型面部表情过渡切换变化
【零基础入门unity游戏开发——unity3D篇】3D模型 —— 在Unity中通过BlendShape实现3d角色模型面部表情过渡切换变化
参考原文:https://blog.csdn.net/linxinfa/article/details/116666936
考虑到每个人基础可能不一样,且并不是所有人都有同时做2D、3D开发的需求,所以我把 【零基础入门unity游戏开发】 分为成了
C#篇、unity通用篇、unity3D篇、unity2D篇
。
- 【C#篇】:主要讲解C#的基础语法,包括变量、数据类型、运算符、流程控制、面向对象等,适合没有编程基础的同学入门。
- 【unity通用篇】:主要讲解unity的基础通用的知识,包括unity界面、unity脚本、unity资源管理、unity动画、unity摄像机等,适合unity初学者入门。
- 【unity3D篇】:主要讲解unity3D的知识,unity3D角色、unity3D物理系统、unity3D光照等,适合只想做2D游戏的开发者学习。
- 【unity2D篇】unity2D篇:主要讲解unity2D的知识,包括unity2D角色、unity2D物理系统、unity2D光照等,适合只想做3D游戏的开发者学习。
这样方便大家按需选择性的去学习,比如有编程基础的大概率可以直接从unity通用篇开始入门,没有编程基础的建议从C#篇开始学习。只想做2D游戏的话,可以直接从unity2D篇开始学习,3D篇大概率就不需要看了,节约学习时间成本。
文章目录
一、前言
在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
其实就是一个表情,比如眉毛上抬,眼睛睁大,嘴巴张开这三个组合起来是一个表情,这样做成n
个Animation
动画。
把这些动画组织到Animator
状态机中。
接着,我们就可以通过播放动画来实现表情的过渡了。
// Animator.cs
public void CrossFade(string stateName, float normalizedTransitionDuration);
参数stateName
是动画状态名称,比如smile
,参数normalizedTransitionDuration
是动画融合归一化时间。
我们可以测试下normalizedTransitionDuration
分别为0
、0.3f
、1
三种情况的融合效果:
为0的情况:
为0.3f的情况:
为1的情况:
专栏推荐
地址 |
---|
【零基础入门unity游戏开发——C#篇】 |
【零基础入门unity游戏开发——unity通用篇】 |
【零基础入门unity游戏开发——unity3D篇】 |
【零基础入门unity游戏开发——unity2D篇】 |
【制作100个Unity游戏】 |
【推荐100个unity插件】 |
【实现100个unity特效】 |
【unity框架/工具集开发】 |
完结
好了,我是向宇
,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
更多推荐
所有评论(0)