Avatar 虚拟形象
  • iOS
  • Android : Java
  • 产品简介
  • 下载
  • 下载体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 创建虚拟形象
  • 基本功能
  • 最佳实践
  • 客户端 API
  • 服务端 API
  • 常见错误码
  • 常见问题
  • 文档中心
  • Avatar 虚拟形象
  • 基本功能
  • 手动捏脸

捏脸塑形

更新时间:2023-08-12 21:26

  • 本文档适用于 1.5.0 及以后版本的 SDK。
  • 如果您需要使用 1.4.1 及以前版本的 SDK 版本实现捏脸,请参考 ZegoCharacterHelper 使用说明

功能简介

ZEGO Avatar SDK 提供了捏脸和捏身体功能,用户可以根据自己的审美偏好,调整虚拟人物的脸部部位的维度(如眼睛大小、鼻子宽窄、嘴巴大小等)和身体部位的维度(如头身比、全身胖瘦、头部大小等),自定义虚拟人物的外观,自由打造独一无二的专属形象。本功能可广泛用于社交互动、游戏、直播语聊等场景。

一个部位可能有多个维度,如鼻子的可调整维度有宽窄、高矮等维度。

前提条件

在实现“捏脸塑形”功能之前,请确保:

  • 已在项目中集成了 Avatar SDK,详情请参考 集成 SDK
  • 已参考 创建虚拟形象,完成基本的虚拟人物形象搭建。

设置一个维度的形变量

创建出虚拟形象后,您通过调用 setDeformation 接口,传入形变维度的 key 和形变量即可,形变量取值范围为 [-1,1]。不同人模支持的 key 可能也不一样,请联系 ZEGO 技术支持获取完整信息。

各维度的初始形变量为 0。

// 设置一个维度的形变量
mCharacter.setDeformation("head_size",0.5);

获取一个维度的当前形变量

通过调用 getDeformation 接口,可以拿到指定维度的当前形变量,一般可用于数据存储、数据上报或在 UI 上展示相关数据。

// 获取一个维度的当前形变量
float deformation = mCharacter.getDeformation("head_size");

获取所有已形变维度的当前形变量

通过调用 getDeformation 接口,可以获取当前形象的所有形变量(仅包含已形变维度),返回结果格式为 json,一般可用于数据存储、数据上报或在 UI 上展示相关数据。

// 获取所有已形变维度的当前形变量
String deformation = mCharacter.getDeformation();

同时设置多维度的形变量

调用 setDeformation 接口,传入该数据,同时设置调整多个维度。此接口一般可用于同步多端数据,或还原角色形态等。

  • 传入此接口的数据仅能为的 json 格式全量变形数据(通常是调用 getDeformation 接口获取所有已形变维度的当前形变量 后的返回数据),或为空。
  • 如果传入数据包含某个脸部数据,那么所有其他不包含在内的脸部维度的数据都会被重置为 0。例如,虚拟形象的 head_size 的原形变量为 0.5,调用此接口设置多维度的形变量时,希望调整 brow_size 为 0.5,且没有设置 head_size 的值。调用此接口后,虚拟形象的 head_size 会变为 0,brow_size 为 0.5。
  • 如果传入数据包含某个身体数据,那么所有其他不包含在内的身体维度的数据都会被重置为 0。例如,虚拟形象的 bodyshape_waist_Ysize 的原形变量为 0.5,调用此接口设置多维度的形变量时,希望调整 bodyshape_leg_Ysize 为 0.5,且没有设置 bodyshape_leg_Ysize 的值。调用此接口后,虚拟形象的 bodyshape_waist_Ysize 会变为 0,bodyshape_leg_Ysize 为 0.5。
// 同时设置多维度的形变量
// data 可为通过 [getDeformation] 接口获取的 json 格式全量形变数据 
mCharacter.setDeformation(data);
本篇目录