CardboardiOSSDK 0.7.2.2

CardboardiOSSDK 0.7.2.2

测试已测试
Lang语言 Objective C++Objective C++
许可证 自定义
发布上次发布2016年11月

linyize 维护。



  • 林溢泽

CardboardSDK-iOS

2016年3月更新

谷歌已经发布了一个官方的 iOS CardboardSDK。然而,目前它是一个封闭源代码的预编译库。


谷歌 CardboardSDK 的 iOS 版本。

Treasure 示例完全运行,带有磁铁触发检测。在运行 iOS 8 的 iPhone 6 和运行 iOS 7 的 iPhone 5 上成功测试。

它(主要)与 Android 的 CardboardSDK v0.5.1 具有相同的功能。

Unity

提供了一个捆绑的样本 Unity 项目,与 Unity 5.0.0f4 兼容(使用其他 Unity 版本存在风险)。

Unity\Cardboard.UnityProject 文件夹包含了基于 Google 的 CardboardSDK-Unity 插件 的样本项目。

Unity 指令

有两种方法可以在 iOS 设备 上运行 Unity 项目

a. 预建的 Unity Xcode 项目

您可以使用捆绑的预建 Unity Xcode 项目,但您需要重新生成 libiPhone-lib.a,因为它太大而无法提交到 GitHub

这种方法在更改 Unity 项目 或其 Cardboard Unity 脚本 后更新 Xcode 项目 时很有用。

  1. Unity 5.0.0f4 上打开 Unity 项目
  2. 转到文件 -> 构建设置,选择 iOS,然后单击 构建。将已存在的 Unity\Cardboard.UnityProject\builds\iOS 作为输出文件夹,并单击 追加。然后 Unity 应更新您当前项目所需的 Unity 库二进制文件,而不会覆盖 CardboardSDK 的原生代码。
  3. Xcode 中打开 Unity\Cardboard.UnityProject\builds\iOS\Unity-iPhone.xcodeproj 并在 iOS 设备 上运行(在 Xcode 6.2 上进行了测试)。
b. 自建自己的 Unity Xcode 项目

您可以忽略 Unity\Cardboard.UnityProject\builds\iOS\ 文件夹,并从头开始构建自己的项目。

此方法适用于您在更新到较新版本的 Unity 后重新构建 Unity Xcode项目 的情况(较新版本的 Unity 不允许您在已经构建的 Xcode 项目上追加)。

  1. Unity 5.0.0f4 或更高版本上打开 Unity项目
  2. 转到 文件 -> 构建设置,选择 iOS,点击 构建 并将其保存到您的任何一个文件夹。
  3. Xcode 上打开构建的项目。
  4. CardboardSDK 源文件添加到 组中:在 上右键单击,然后选择 将文件添加到 "Unity-iPhone"。无需复制 CardboardSDK 源文件,只需通过取消选中 所需时复制项目 在原始位置链接它们。
  5. 添加 GLKit 框架:转到 Unity-iPhone 目标 -> 构建阶段 -> 链接二进制与库 并添加 GLKit.framework
  6. 转到项目 -> 构建设置,并将 C++ 语言方言 设置为 GNU++11

Unity 问题

  • 磁铁触发器无法工作
  • 失真校正无法工作

通用待办事项

  • 更新原生代码和 Unity 项目到 CardboardSDK v0.5.2
  • 修复 Unity 问题
  • eigen3 替换 Matrix3x3dVector3d
  • 提供配置自定义 Cardboard 设备的简单方法。
  • 添加更多示例。

讨论

叠加视图

CBStereoGLView类允许任意 UIView 渲染到 OpenGL。您可以为其应用程序叠加(对镜头失真校正进行了正确应用)进行子类化。参见 Treasure 示例上的 TextOverlayView 子类。

避免在每一帧更新纹理,因为这是一项昂贵的操作(进行 UIView 动画不是一个好主意)。

头跟踪器

HeadTracker 可以使用以下任一方法:

  • Google 的 OrientationEKF 类以及原始陀螺仪和加速度计数据。具有非常低的延迟,但受到陀螺仪漂移(静止时轻微连续旋转运动)的困扰。这是当前 AndroidCardboardSDK 方法。
  • CoreMotionCMDeviceMotion.attitude。改善了陀螺仪漂移,但显著增加了延迟(《CoreMotion》执行其自己的类似 EKF 的内部 IMU 混合算法)。
  • CoreMotionCMDeviceMotion.attitude 数据与 Google 的 OrientationEKF。集两者之所长:低延迟和低陀螺仪漂移,但消耗更多 CPU(基本上它执行了 IMU 集成两次)。

通常建议使用 HEAD_TRACKER_MODE_CORE_MOTION_EKF

HeadTracker.mm 中,您可以设置 #define HEAD_TRACKER_MODEHEAD_TRACKER_MODE_EKFHEAD_TRACKER_MODE_CORE_MOTIONHEAD_TRACKER_MODE_CORE_MOTION_EKF

通用问题

  • 由于在 iOS 8 上没有可用的公开 NFC API,因此尚未实现从 NFC 读取 Cardboard 设置。希望 Apple 能在 iOS 9 上提供(只有 iPhone 6/6+ 或更高版本带有 NFC 传感器)。

许可 & 贡献者

CardboardSDK-iOS,就像原始的 CardboardSDK 一样,在 Apache 许可证 下提供。有关更多信息,请参阅 LICENSE 文件。

详情请参阅 AUTHORS.md,了解项目的部分贡献者。