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