Oculus Avatar SDK

Posted 拿起键盘就是干

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oculus Avatar SDK相关的知识,希望对你有一定的参考价值。

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

LoadingAvatar

通过获取用户 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 眼睛追踪

Targeting Avatar Gaze

Avatar 眼睛跟踪目标,将脚本添加到可作为目标的游戏对象中,Avatar将会凝视附近的目标,Avatar 目光并不是总会看向跟踪目标,而是有概率停留在目标附近。

在oculus native mobile sdk version 1.9.0中构建错误

我正在尝试使用VR applicationandroid studio开发原生齿轮oculus native mobile SDK version 1.9.0。在运行VR中包含的SDK样本时,我遇到了下面提到的错误并且构建失败了。

Traceback(最近一次调用最后一次):

genDebugKeystore()中的文件“C: ovr_sdk_mobile_1.9.0 bin scripts build ovrbuild_keystore.py”,第86行

文件“C: ovr_sdk_mobile_1.9.0 bin scripts build ovrbuild_keystore.py”,第84行,genDebugKeystore中的debug_props ['storepass'],debug_props ['keypass'],replace = False)

文件“C: ovr_sdk_mobile_1.9.0 bin scripts build ovrbuild_keystore.py”,第71行,在create_keystore中返回execfn(cmd)

在create_keystore文件“C: ovr_sdk_mobile_1.9.0 bin scripts build ovrbuild_keystore.py”第82行(lambda x:ovrbuild.call(x),

文件“ovrbuild.py”,第169行,在调用gradleTask =“clean”如果command_options.should_clean则为“assembleDebug”如果command_options.is_debug_build else“assembleRelease”NameError:全局名称'command_options'未定义

:VrSamples:Native:VrTemplate:Projects:Android:genDebugKeystore FAILED

FAILURE:构建因异常而失败。

*其中:脚本'C: ovr_sdk_mobile_1.9.0 VrApp.gradle'行:314

*出了什么问题:任务执行失败':VrSamples:Native:VrTemplate:Projects:Android:genDebugKeystore'。进程'命令'C: ovr_sdk_mobile_1.9.0 / bin / scripts / build / ovrbuild_keystore.py.bat''以非零退出值1结束

你们中的任何人都可以帮助我解决这个错误吗?

这个错误也出现在oculus SDK version 1.7.0中。

答案

我遇到了完全相同的问题。相同的输出和一切。

在将问题跟踪了几个小时后,我终于发现我的问题是我的PATH没有包含java bin目录。由于无法访问keytool.exe程序而导致该错误。

在Windows 10上,右键单击“此PC”,选择“高级系统设置”,然后选择“环境变量”。在屏幕下半部分的系统变量窗口中,找到Path变量。确保java bin目录在列表中。

在我的情况下,我不得不添加:C: Program Files Java jdk1.8.0_112 bin

问题没有立即得到纠正。我仍然打开Android Studio。我关闭程序并重新启动计算机。重新启动并再次打开Android Studio后,一切都开始构建!

希望这有助于其他人。

以上是关于Oculus Avatar SDK的主要内容,如果未能解决你的问题,请参考以下文章

如何提高oculus rift画面

Unity开发VR——Oculus Rif_将Oculus接入Unity

如何检测oculus rift cv1 安装驱动后无反应

昆仑万维旗下StarMaker VR成功加入Oculus开发者计划 获Oculus资金支持

使用 Unity、Oculus Quest 和 Oculus Quest 集成包进行手势识别

Oculus CDN服务器的XSS漏洞