Unity通过BlendShape实现面部表情过渡切换Animation教程

目录
  • 一、前言
  • 二、BlendShape(动画师、MAYA)
  • 三、Unity控制BlendShapes
    • 1、SkinnedMeshRenderer控制BlendShape
    • 2、Animation控制BlendShape
  • 四、结束语

一、前言

点关注不迷路,持续输出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相关的技术难题,也欢迎留言或私信~
感谢阅读,我们下次再见。

以上就是Unity通过BlendShape实现面部表情过渡切换Animation教程的详细内容,更多关于Unity通过BlendShape实现面部表情过渡切换Animation的资料请关注我们其它相关文章!

(0)

相关推荐

  • Unity实现滑动更换界面效果

    在做2048这个游戏时,因为菜单页面还能查看游戏规则,而这些规则又不在同一个页上,所以需要滑动页面实现页面切换,但是仅仅使用unity提供的组件做出的效果仅有一个切换的意思,交互感很差,所以在组件的基础上又写了一个控制页面切换的类.而界面切换就是实现一个滚动的视图. 在unity编辑器中实现滚动视图的基本操作:需要用Scroll Rect组件 首先可以看看官方用户手册中关于Scroll Rect组件的讲解,说的很明白.最精辟的描述就是用于使子 RectTransform 滚动的组件. 滚动视图中

  • Unity3D实现渐变颜色效果

    基于unity3D实现渐变颜色的简单脚本,代码很少,就不废话了,直接上代码和效果图. 效果图: using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace ExtraFoundation.Components { [AddComponentMenu("UI/Effects/Gradient")] public class UIGradient : B

  • 解决Unity urp级联阴影接缝问题

    试了一下unity自带的阴影,发现有接缝问题, 上网找了一些解决方案,都非常庞大, 基本是要自己处理级联阴影 看了urp的build-in之后,想了一个比较暗黑的方式,简单处理一下,运行对比图如下, 左边是unity自带的级联阴影效果,右边是平滑后的级联阴影 思路比较简单,从unity内部函数中抽几个出来改造 计算当前像素点(世界坐标)位于哪个裁切球,代码如下: 强制取某个裁切球的级联阴影映射,代码如下: 本案例只处理第一个裁切球与第二个裁切球过渡效果, 其它的裁切球离摄像机比较远,处不处理影响

  • Unity通过BlendShape实现面部表情过渡切换Animation教程

    目录 一.前言 二.BlendShape(动画师.MAYA) 三.Unity控制BlendShapes 1.SkinnedMeshRenderer控制BlendShape 2.Animation控制BlendShape 四.结束语 一.前言 点关注不迷路,持续输出Unity干货文章. 嗨,大家好,我是新发. 在Unity项目中,我们可能需要实现3D角色表情的过渡切换,比如像这样子: 在Unity中如何做这个功能呢?今天就来跟大家讲一下. 二.BlendShape(动画师.MAYA) 在Maya中

  • Unity中 ShaderGraph 实现旋涡传送门效果入门级教程(推荐)

    若你的工程还没有进行基础配置,请查看我的博文Unity 之 ShaderGraph入门使用详解,按照步骤操作完成配置即可,还能顺便学习一下基础操作流程哦~ 本文手把手教你制作旋涡效果,入门级教程,还不快动手试试? 一,最终效果展示 老规矩,直接上效果图: 二,创建PBRGraph 在Project面板右键 --> Create --> Shader --> PBRGraph: 重命名:RPAShaderGraph(随意) 双击RPAShaderGraph打开编辑界面 三,实现原理介绍 通

  • Unity Blend Tree动画混合树使用入门教程

    介绍 在动画与动画的切换过程中,常因为两个动画之间的差距过大,而显得动画的切换很不自然. 这时候就需要动画混合树Blend Tree这个功能.使用混合树可以将多个动画混合在一起,例如在处理角色的移动中,走动画与跑动画切换的时候,在走动画与跑动画中生成多个过渡用的插值动画以达到平滑得切换的功能. 创建混合树 在Animator窗口的空白处右键,Create State > From New Blend Tree,然后双击Blend Tree进入混合树.笔者使用的是unity2019.4的版本,现在

  • SpringBoot 自定义+动态切换数据源教程

    目录 1.添加maven依赖 2.配置application.yml 3.配置动态数据源 4.配置数据源操作Holder 5.读取自定义数据源,并配置 6.动态切换关键--AOP进行切换 7.使用 1).配置mapper 2).配置service 3).单元测试调用 4).测试结果 1.添加maven依赖 <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</ar

  • 游戏开发进阶Unity网格(Mesh\动态合批\骨骼动画\蒙皮)

    目录 一.前言 二.Hello Mesh 三.萌新初识Mesh 1.引擎内置的Mesh 2.Mesh是什么 三.Mesh的创建方式 1.第三方建模软件 2.Unity建模插件:ProBuilder 3.程序动态生成网格 四.Unity中如何显示网格 1.MeshFilter:网格过滤器 2.MeshRenderer:网格渲染器 3.SkinnedMeshRenderer:蒙皮网格渲染器 3.1 骨骼动画 3.2 SkinnedMeshRenderer组件 3.2 使用BakeMesh进行优化 五

  • Unity实现卡拉OK歌词过渡效果

    好长时间之前做过的一个项目 , 其中设计到用Unity模拟卡拉OK歌词过渡的效果 , 如下图所示 ↓ , 这里简单把原理部分分享一下. 文章目录 演示效果 ↓ 歌词效果类 ↓ 配套资源下载 演示效果 ↓ 实现歌词动态调整功能 实现动态读取歌词文件功能 实现歌曲快进快退功能 实现歌曲单字时间匹配功能 实现可动态更换歌词前景色背景色功能 注: 这里为实现精准过渡效果使用的是KSC歌词文件, 并不是LRC文件哦 . 这其中我认为就是如何实现歌词部分的前景色向后景色过渡的效果了, 开始的时候我想的也是很

  • Android利用Hero实现列表与详情页无缝切换动画

    目录 前言 思路 列表元素 详情页面 源码 总结 前言 介绍了几篇 Hero 动画,我们来一个 Hero 动画应用案例.在一些应用中,列表的元素和详情的内容是一致的,这个时候利用 Hero 动画切换到详情会感觉无缝过渡,用户体验会更好.例如本篇我们要实现下面的效果: Hero 应用:列表与详情切换 思路 上面的效果是列表和详情共用了头像和头像的背景色.二者的组合是一个 Stack 组件,因此可以使用 Hero 组件完成.然后是 Hero 组件的移动,我们先做了水平移动,再做垂直方向移动,这样过渡

  • css图片切换效果代码[不用js]

    纯css图切换 练习 教程来自snwebsite a{ display:block; border:1px solid #cccccc; width:20px; height:20px; margin:1px; } dl{ position:absolute; width:240px; height:170px; } dt{ position:absolute; right:1px; top:25px; } dd{ width:240px; height:170px; overflow:hidd

  • React中常见的动画实现的几种方式

    现在,用户对于前端页面的要求已经不能满足于实现功能,更要有颜值,有趣味.除了整体 UI 的美观,在合适的地方添加合适的动画效果往往比静态页面更具有表现力,达到更自然的效果.比如,一个简单的 loading 动画或者页面切换效果不仅能缓解用户的等待情绪,甚至通过使用品牌 logo 等形式,默默达到品牌宣传的效果. React 作为最近几年比较流行的前端开发框架,提出了虚拟 DOM 概念,所有 DOM 的变化都先发生在虚拟 DOM 上,通过 DOM diff 来分析网页的实际变化,然后反映在真实 D

  • 使用纯JavaScript封装一个消息提示条功能示例详解

    目录 介绍 思路&布局 操作逻辑 完整代码 介绍 一个类似Element UI.Ant-Design UI等 UI 框架的消息提示功能,方便在任何网页环境中直接调用函数使用:区别在不依赖 js 及 css 引用,而是使用纯 js 进行封装实现,代码更精简,同时保持和 UI 框架一样的视觉效果(可自行修改成自己喜欢的样式) 代码仓库 在线预览效果(点击[登录].[点击复制]按钮时触发提示效果) 思路&布局 先来写单个提示条,并实现想要的过渡效果,最后再用逻辑操作输出节点即可:这里不需要父节点

随机推荐