VTuber Demo 开发指南(unity)

举报
NZY小叶子 发表于 2020/02/11 21:56:57 2020/02/11
【摘要】 本文介绍VTuber系统中,人物模型的动作的上传与下载的方法。

1      开发环境准备

1.1    硬件环境准备

  • 一部配置较高的手机,如华为P20系列,Mate30系列。手机配置低可能造成程序卡顿。

  • 一根连接手机的数据线。

1.2    软件环境准备

  • Unity 2018.4.13 及以上版本。本Demo工程使用的Unity版本为Unity      2018.4.13

  • File->BuildSettings->PlayerSettings->OtherSettings下面的设:

    image.png

1.3    打开示例工程

打开Unity Hub,并添加项目VTuberUploadDemoVTuberDownloadDemo

1.4    打开示例场景

  1. 两个工程中,都是打开Assets->Scenes->DemoScene

  2. 打开File->BuildSettings,选择Androidswitch      Platform(不切换运行平台,在Unity Editor里同样可以运行)

  3. 如图1和图2所示,为Demo工程打开后的效果。

image.png

图1 上传Demo效果


image.png

图2 下载Demo效果

2      让虚拟角色动起来

2.1    AKSK

打开下载工程的Assets/VTuberDownloadDemo.cs,修改Line66Line67中的AKSKstring ak = "*** Provide your Access Key ***";    string sk = "*** Provide your Secret Key ***")为从华为云OBS服务申请的值。

同样,打开上传工程的Assets/VTuberUploadDemo.cs,修改Line131Line132中的AKSK为从华为云OBS服务申请的值。

华为云OBS服务介绍与使用请参考:

https://www.huaweicloud.com/product/obs.html

2.2    桶名称

上传和下载Demo中桶名称的修改:Assets/VTuberDownloadDemo.cs的方法public MotionDataUploader getMotionDataUploader() {} 里面包含string bucketName = "vtuber-shanghai2"; 此处的桶名称需要修改为自己使用的桶名称。同样,VTuberUploadDemo.cs里面的桶名称也要对应修改为相同的。并且,所有用户的桶名称都不能相同,具体请参考OBS的桶命名规则。

2.3    节点设置

用户可以选择距离使用地点近的节点传输数据,减少时延。枚举类ObsEndpoint里面存放了可以使用的节点列表。用户可以自行设置obsEndpointEnum的值。

2.4    运行Demo

修改好AKSK后,即可以运行Demo了。可以在Unity Editor里面直接运行,也可以发布到Android手机手机上查看效果,如图3所示。

以发布到Android手机运行为例:

1)      点击VTuberUploadDemo的开始上传按钮,程序会从Assets/StreamingAssets/MotionData.bin文件读取动作数据,上传到OBS。同时,人物会按照上传的动作数据运动。点击停止上传可以结束上传。同时,在运行过程中,会显示上传数据的时延。

2)      然后,点击VTuberDownloadDemo的开始下载按钮,程序会从OBS上下载动作数据,人物就会动起来了。同时,在运行过程中,会显示从上传动作数据到下载完成动作数据的时延。

image.png

图3 Demo运行截图

2.5    代码说明

2.5.1  VTuberUploadDemo.cs

public MotionDataUploader getMotionDataUploader(){}

此方法中的string bucketName = "vtuber-shanghai2";为上传使用的桶名称。需要修改为自己的桶名称。

motionDataUploader.setFoldName("live/UnityChan/");  此处的文件夹名为动作数据存放的文件夹,用户可以按自己的需要进行设置。

2.5.2  VTuberDownloadDemo.cs

此方法中的string bucketName = "vtuber-shanghai2";为下载使用的桶名称,应该设置为和上传使用的桶名称相同。

motionDataUploader.setFoldName("live/UnityChan/");  此处的文件夹名为动作数据存放的文件夹,需要与上传的文件夹相同。

注意此类需要实现ImotionDataCallbackonMotionDataDownloaded<T>(params T[] motionDataArr)方法:

public class VTuberDownloadDemo : MonoBehaviour, ImotionDataCallback{

//下载的动作数据从回调函数中获得

    void IMotionDataCallback.onMotionDataDownloaded<T>(params T[] motionDataArr)

    {

        MotionData motionData = (MotionData)(object)motionDataArr[0];   //下载的对象数据

                 timeDelay = (int)(MotionDataHelper.CurrentTimeMillis() - motionData.getCreateTime());

        long motionDataID = motionData.getMotionDataID();

    }

}

回调函数中motionDataArr数组为下载完成的动作数据,用户可以对此数据进行后续处理。

2.5.3  其他说明

Demo中的动作数据是录制好后序列化写入到文件中的,所以Demo中并没有设置MotionData类的实例数据的方法。用户可以根据自己使用的数据格式,封装成MotionData类的格式后进行上传。其中,MotionData类定义如下:

image.png

Ø  MotionData包含Hips的位置坐标和所有HumanBodyBonesRotation坐标、表情数据(最多支持65个表情数据)。

Ø  MotionData类会在创建实例的时候自动记录数据创建的时间,一般情况下不需要用户自己添加时间。MotionData类包含设置和获取ID的方法,用户可以通过此方法给MotionData编号。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。