OvrAvatarEntity 是使用 Avatar 的核心基类。它提供了加载和跟踪头像所需的功能。SDK 中示例场景都继承此类以自定义 Avatar 对象
Avatar SDK 中包含 32 个模型预设,OverAvatarEntity 可以从 StreamingAssets 路径下的 .zip 文件中加载本地模型
LoadAssetsFromZipSource(); 从 zip 文件中加载
LoadAssetsFromStreamingAssets(); 从 Streamingassets 文件夹中加载指定 .glb 文件
当加载用户自定义 Avatar 时使用 通过 userId 下载用户的自定义头像
OvrAvatarEntity_LoadUserWithFiltersFast();
OvrAvatarEntity_LoadUserWithFilters();
struct ovrAvatar2EntityCreateInfo
{
//设置头像渲染和动画功能
public ovrAvatar2EntityFeatures features;
//设置加载的渲染信息(LOD 等级,加载部位,人称视角,网格信息)
public ovrAvatar2EntityFilters renderFilters;
public ovrAvatar2EntityLODFlags lodFlags
public bool IsValid;
}
设置头像渲染和动画功能
- Preset_Default:使用本地 Avatar 时推荐设置。
- Preset_Remote:使用远程 Avatar 时推荐设置。
- Preset_All:用于调试本地头像。
配置头像的 LOD 级别
- LOD_0:最高保真度
- LOD_4:最低 LOD 等级
- ALL:所有级别 LOD
配置 Avatar 的显示方式
- None: 所有部位不显示
- Full: 显示所有身体部位
- Half: 只显示上半身 (SDK 中目前仅 Half 参数生效)
- HeadHands: 仅头部和手部
- Head:仅头部
- Hands:仅手部
- All : 所有展示方式
Avatar 跟踪输入,有两个组件参考字段用于跟踪输入。身体跟踪,与口型跟踪 bodyTracking / lipSync 这两个字段可以通过 Unity Editor中进行设置,脚本中可以通过 SetBodyTracking(),和 SetLipSync() 设置。
SetBodyTracking() 设置 Avatar 身体跟踪信息
SetLipSync() 根据音频设置口型信息
LoadingAvatar
通过获取用户 ID 加载网络 Avatar , 加载网络 Avatar 形象前需提前设置_userId 字段信息 参考 SampleAvatarEntity.LoadUser() 设置
IsPendingAvatar:Avatar 是否正在加载为 True 表示加载完成
IsPendingDefaultModel:是否在加载默认 Avatar
IsPendingZipAvatar:是否正在从 Zip 文件中加载 Avatar
IsPendingCdnAvatar:是否正在从 Cdn 加载 Avatar
HasNonDefaultAvatar:加载的不是默认 Avatar
1.IsLocal = false;
2.ovrAvatar2EntityFeatures = Preset_Remote
3.远程 Avatar 使用 userId 创建
4.RecordStreamData() 记录用户 Avatar 对象信息
ApplyStreamData() 从服务器获取的 Avatar 信息应用到对象
OvrAvatarInputManager
Avatar 默认身体跟踪数据从 Native OVRPlugin 中读取身体跟踪数据并将其发送到 Avatar 实体进行同步。
与身体跟踪一样,Avatar 对象会引用以启用口型同步。使用该组件并从 LipSyncMicInput 脚本读取音频数据。
- Original:默认模式质量低,但可节省 CPU。
- Enhanced:此模式需要额外的 CPU 时间,但提供高质量的唇形同步动画
- EnhancedWithLaughter:与增强版相同,但启用了额外的笑声检测和动画。
Targeting Avatar Gaze
Avatar 眼睛跟踪目标,将脚本添加到可作为目标的游戏对象中,Avatar将会凝视附近的目标,Avatar 目光并不是总会看向跟踪目标,而是有概率停留在目标附近。