unity表情动画与动态捕捉表情

人物表情可以使游戏场景中的人物更加逼真,有趣,而人物表情在3A大作中非常常见,自己独立游戏中正好要使用这个功能,所以探讨下这个问题。

常用的表情动画使用以下这么几种

1骨骼动画,2顶点动画,3uv动画,4贴图动画

第一种骨骼动画,在某些游戏,比如一些商业游戏中会使用这种方法,来模拟脸部表情的变化。因为过多的骨骼会影响效率,所以我不太使用这种方式



第二种游戏顶点动画改变

应该是最常用的方式,许多日本方面的模型动画软件也是采用这种方式,诸如MikuMikuDance

通过制作3DMAX中的变形器或者Maya中的blendShape,然后在unity3d中SetBlend的数值来改变表情。


自己Demo中的例子



3.uv动画


通过修改uv坐标,达到角色表情变化,一般是在贴图模型上,没有做嘴巴的模型,用贴图来显示张口闭口的效果。

		leftEye.GetComponent<MeshRenderer>().materials[0].SetTextureOffset("_MainTex", new Vector2(eyeLeftEmotionNormal.x*1.0f/eyeRowCol.x, (eyeRowCol.y-1-eyeLeftEmotionNormal.y)*1.0f/eyeRowCol.y));
		rightEye.GetComponent<MeshRenderer>().materials[0].SetTextureOffset("_MainTex", new Vector2(eyeRightEmotionNormal.x*1.0f/eyeRowCol.x, (eyeRowCol.y-1-eyeRightEmotionNormal.y)*1.0f/eyeRowCol.y));

4.贴图动画

通过程序来控制模型贴图的更换,材质球更换


人物的表情捕捉





主要方法为opencv人脸识别,获取特征点,位移值映射到模型的方法

一开始以为得使用kinect这些设备,后来研究了发现一般的手机摄像头就可以

自己尝试过,确实通过手机摄像头,追踪脸部,获取特征点,最后通过脸部特征点匹配,与图片上本来设置好的特征点进行映射。

就像一张图片对应覆盖到人物脸上,如上图显示的效果




  • 8
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值