Unity | 实现面部驱动的两种方式

这篇具有很好参考价值的文章主要介绍了Unity | 实现面部驱动的两种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、运用unity Live Capture插件与iphone Unity Face Capture软件

1. 版本要求

2. unity中操作:

(1)引入Live Capture Package

(2)创建一个空物体(命名:Recorder),添加Take Recorder组件。

 (3)将模型拖入场景,并添加ARKit Face Actor组件,将该模型制作成Prefab。

(4)设置模型ARKit Face Actor组件中的mapper。

(5)设置New FaceDevice的ARKit Face Device组件的Actor值。

(6)创建服务器。

3. iphone下载Unity Face Capture软件

二、通过算法数据来控制BlendShape数值

1.相关函数

2.实现


一、运用unity Live Capture插件与iphone Unity Face Capture软件

1. 版本要求

  • unity版本:Unity Editor 2020.3.16f1 or later version
  • iphone版本:iOS 14.6 or higher
  • 参考文档:About Live Capture | Live Capture | 1.0.1 (unity3d.com)

2. unity中操作:

(1)引入Live Capture Package

        Live Capture在Package Manager中通过git url的方式进行添加:

Unity | 实现面部驱动的两种方式

(2)创建一个空物体(命名:Recorder),添加Take Recorder组件。

        在该组件下添加ARKit Face Device:此时会在Recorder物体下自动创建New FaceDevice,该物体上有个ARKit Face Device组件。

Unity | 实现面部驱动的两种方式

 (3)将模型拖入场景,并添加ARKit Face Actor组件,将该模型制作成Prefab。

        注意模型导入Unity时要勾选Import BlendShapes(检查一下即可,unity默认勾选)。

        在Project中创建一个mapper(右键/Create/Live Capture / ARKit Face Capture / Mapper),设置mapper相关属性(RigPrefab指定为上一步生成的prefab,LeftEye、RightEye、Head要选择对应的关节。这一步目的是映射BlendShape,如果我们的模型BlendShape名称符合苹果的ARKit要求,则AddRender操作会自动映射,否则需要我们手动设置)。

Unity | 实现面部驱动的两种方式

(4)设置模型ARKit Face Actor组件中的mapper。

(5)设置New FaceDevice的ARKit Face Device组件的Actor值。

(6)创建服务器。

        点击Window/Live Capture/Connections,点击Configure FireWall。点击Create Server/Companion App Server,点击Start开启服务。

Unity | 实现面部驱动的两种方式

3. iphone下载Unity Face Capture软件

        打开软件(该软件在iphone 12 Pro Max 15.4.1上亲测稳定,在iphone X上会发热闪退),输入IP及Port,连接之后就可以驱动了~(如果连不上,可能unity版本不符合或者网络不符合,可参考官方文档:About Live Capture | Live Capture | 1.0.1 (unity3d.com))

二、通过算法数据来控制BlendShape数值。

1.相关函数

  • 获取BlendShape数量及对应名称。
public sealed class Mesh : Object
{
    public int blendShapeCount { get; }
    public string GetBlendShapeName(int shapeIndex);
}
  • 设置BlendShape权重
public class SkinnedMeshRenderer : Renderer{
    public void SetBlendShapeWeight(int index, float value);
}

2.实现

        可能算法提供的数据值范围为0-1,所以在SetBlendShapeWeight时要*100。文章来源地址https://www.toymoban.com/news/detail-432847.html

Dictionary<string, int> bs_map;//模型上的bs名称-索引
skinnedMeshRenderer.SetBlendShapeWeight(bs_map["eyebrow_BS.Eyebrows_Sad_L"], 20);

到了这里,关于Unity | 实现面部驱动的两种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Unity3D教程:播放视频的两种方式

    Unity3D 中播放游戏视频的方式有两种,第一种是在游戏对象中播放,就好比在游戏世界中创建一个Plane面对象,摄像机直直的照射在这个面上。第二种是在GUI层面上播放视频。播放视频其实和贴图非常相像,因为播放视频用到的MovieTexture属于贴图Texture的子类,那么本章我们就

    2024年02月11日
    浏览(41)
  • Unity内打开网页的两种方式(自带浏览器、内嵌浏览器)

    这个比较简单,直接调用unity官方的API即可,会直接使用默认浏览器打开网页,这里就不多做解释了。 代码 该方案是使用unity store里的插件实现的。 插件链接 使用该插件不会切出APP。 示例效果 注意此时是没有切出游戏的。 测试代码 实现具体需求参考插件文档即可,还是蛮

    2024年02月05日
    浏览(44)
  • 驱动程序开发:基于EC20 4G模块自动拨号联网的两种方式(GobiNet工具拨号和PPP工具拨号)

    与EC20 4G模组所需的文件,下载链接,请点击即可   关于 EC20 4G 模块的详细资料请找卖家索要!   EC20 有多种不同的配置,比如全网通纯数据版本、语音版、带 GNSS 版等等,建议大家购买的时候至少要选择全网通数据版,因为我们使用 4G 模块主要还是用于数据通信的。移远

    2023年04月26日
    浏览(48)
  • vue实现导出excel的两种方式

    通过vue实现导出有两种方式: (1)后端返回的是一个地址,直接拼接打开下载就行 (2)后端返回的是文件流的形式,这个时候就需要在请求头还有返回值的地方设置一下 (1)设置请求头 (2)设置返回结果,处理返回我文件流 (3)附加说明 有的时候做到上述几步还是不

    2024年02月12日
    浏览(51)
  • vue前端实现上传文件的两种方式

    1.使用form表单的形式 第一种方式就是使用FormData的方式进行上传 html代码: JS代码: 2.使用element-ui的el-upload的方式进行上传 这里我是根据需求封装了一个组件

    2024年02月11日
    浏览(44)
  • 实战:单点登录的两种实现方式,附源码

    最近工作有点忙,好久没更新文章了,正好这两天在整理 单点登陆 相关的文档,今天趁着小孩睡着了🤫,赶紧码一篇 实战文 交差。 单点登录( Single Sign-On , SSO )是一种身份验证服务,允许用户使用单个标识来登录多个应用程序或系统。如下图所示,用户只需要 用户名

    2024年02月08日
    浏览(53)
  • echarts实现3d柱状图的两种方式

    看了不少关于3d柱状图的案例,发现做3d柱状图 常用的两种方式就是 自定义图形和象型柱图, 两种实现方式效果如下: 方法1: echarts.graphic.extendShape 自定义图形 echarts自定义图形的详细用法点这里, 官网点这里, 图中第一个3d柱状图我参考的案例在这里, 看了很多 echarts这种3d案例,

    2024年02月01日
    浏览(51)
  • Verilog 实现优先编码器的两种方式

    1.1 定义:  为了防止多条线信号同时有效,规定只对序号最高的有效信号线进行编码,相当于该线的优先级别最高,称为优先编码器 。      优先编码器可以通过  if else 语句和case语句两种方式实现。 输入描述: ①输入描述: input      [8:0]         I_n 输出描述: ①输出

    2024年02月08日
    浏览(48)
  • Spring Boot实现文件上传的两种方式

    最近的一个小项目里使用到了文件上传、下载功能,今天我打算梳理一下文件上传所涉及的技术及实现。 内容主要包括两部分,如何通过纯 Servlet 的形式进行文件上传、保存(不通过 Spring 框架);另一部分是如何在 Spring Web MVC 中进行文件上传。 HTTP 协议传输文件一般都遵循

    2024年02月05日
    浏览(47)
  • 离散化的两种实现方式【sort或者map】

    把无限空间中有限的个体映射到有限的空间中去,以此提高算法的时空效率。通俗的说,离散化是在不改变数据相对大小的条件下,对数据进行相应的缩小。 适用范围:数组中元素值域很大,但个数不是很多。 比如将a[]=[1,3,100,2000,500000]映射到[0,1,2,3,4]这个过程就叫离散化。

    2024年02月13日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包