文| 谷歌开发技术专家 (GDE) 杨波 (Alpha)
随着 ASUS 在 CES2017 上宣布了全球第一款同时具有 Tango 和 Daydream 两种能力的 ZenFone AR,终于使得 AR/VR/MR 这些近来全球开发圈内超级热门的词汇可以让我们国内的 Android 开发者直接利用手中的 Android Studio 和方便入手的 Android 设备来进行虚拟开发的探索了!
三种交互
AR
增强现实,人眼接受到的光线包括了现实的光和 AR 设备屏幕发出的光,通过人眼的处理能力进行合成,增强现实感。
Phab 2 Pro 就是一款 AR 设备,可以拍摄可爱的小猫或小狗跟小宝宝一起玩的照片而不用担心安全,因为小动物都是虚拟的。
VR
虚拟现在,使用头盔或 Cardboard 完全遮挡住现实的光线,人眼只接受 VR 设备发出的光,跟现实完全隔离。
Oculus Rift, PlayStation VR, Samsung Gear VR 以及 HTC Vive 都属于此类设备。
MR
混合现实,MR 设备自身具有三维坐标感知能力,随着人的移动,虚拟物体的显示也随着变化。
Hololens 属于 MR 设备。
两大技术
Tango (屠龙)
正如 2000 年时 Sumsung 在 SCH-V200 手机上上添加了摄像头,手机开始了睁眼看世界的能力,现在 Tango 摄像头为手机添加了真实三维世界的感知能力。
简单的讲,Tango 具有以下三大功能:
- Motion tracking: 我在哪里,空间位置
- Area learning: 前边有什么,看到什么
- Depth perception: 前边有多远
不论是使用 ToF (Time of Flight),通过传感器发出经调制的近红外光,遇物体后反射,传感器通过计算光线发射和反射时间差或相位差,来换算被拍摄景物的距离,以产生深度信息。
还是结构光计算,通过向检测空间内投射经过编码的激光光斑阵列,对空间进行标定并辅助计算三维空间位置。
所得到的如下图中的 cloud point 数据,可以看到此时共采集到了 12464 个带有 XYZ 三维坐标的点。
Daydream (倚天)
目的是要让用户得到最好的虚拟体验,通过定义了一组最低的硬件运行效果标准以及为开发者提供易用的 Daydream API,消除了导致用户眩晕的画面延迟,做到最高性价比的虚拟体验。
硬件
Phab 2 Pro
全球第一款消费级的 Tango 设备,使用骁龙 652,4G 内存和 64G 存储,重要的是国内版本和国外版本都具有完整的 Tango 功能。
Android 感知三维世界的 ”眼睛”– Tango 组件:
典型的应用场景:
ZenFone AR
全球第一款消费级的 Tango+Daydream 设备,使用骁龙 821 来保证用户得到 Daydream 体验,第一款 Daydream 手机 Google Pixel 和 Asus Zenphone 3 也使用的是骁龙 821。由于 Daydream Viewer 现在兼容的手机尺寸是 5.0 到 5.7 寸屏,那么 ZenFone AR 搭配 Android 7 (Nougat) 的 5.7 寸屏用起来应当是相当顺手的。
Tango 开发
首先,你需要一款 Tango 设备,因为还没有可以模拟 Tango 相关摄像头硬件的模拟器,上节中 Phab 2 Pro 是很不错的开发机!
现在以 Java API 开发为例来进入 Tango App 的开发,如果你熟悉 Unity 3D 的开发,就直接用 Unity 3D 的 package,因为 80% 的 Tango App 都是用 Unity 3D 开发的,当然最多的就是游戏啦!
环境准备
1. Android Studio 2.2
2. USB debugging
Phab 2 Pro 开启 Developer option 中的 USB debugging,没有 Developer option,那你肯定是 Android 开发新手,在 Settings->About phone 下连续点击 7 次 Build number 就可以召唤出 Developer option 了。
获取示例代码
- git clone https://github.com/googlesamples/tango-examples-java.git
打开 Java Cloud point example
直接 control + R
选择 Phab 2 Pro
如果出现以下错误:
- Error:Execution failed for task ':app:transformNative_libsWithStripDebugSymbolForDebug'.
- > java.lang.NullPointerException (no error message)
只需要将 compileSdkVersion 和 targetSdkVersion 的版本号跟 buildToolsVersion 保持一致。
安装成功
在手机上可以看到 Cloud point,实时的总点数和点的平均深度。
更多
https://github.com/lvonasek/tango
利用C API对采集到的Point cloud进行处理,实现三维重建的APP。
近似的扫描效果:
Daydream 开发
再来重温下 Daydream 的目的,可以简单看到是 Cardboard 的升级版本,但却定义了一个可以满足用户体验的最低硬件标准并开发了一整套API来让开发者可以方便的开发出高质量体验的应用。
同样的 Daydream App 需要一个 Daydream ready 的手机来运行或可以运行 Cardboard apps 且大于 Android 4.4(kitkat) 的手机,这里同样使用 Phab 2 Pro。
使用 Daydream 主要用来完成以下开发任务:
- Lens distortion correction.
- Spatial audio.
- Head tracking.
- 3D calibration.
- Side-by-side rendering.
- Stereo geometry configuration.
- User input event handling.
获取代码
- git clone https://github.com/googlevr/gvr-android-sdk.git
Android Studio
打开 gvr-android-sdk
运行( control + R)sample-sdk-treasurehunt
选择 Phab 2 Pro
在手机上配合 Cardboard 或 Daydream Viewer (当然国内的各种盒子也是可以的,由于 Daydream Viewer *没有添加计算能力,只是在操作手柄上加了外置九轴惯性测量单元来辅助精确追踪)
总结
使用 ZenFone AR 和 Daydream Viewer,预计总价不会超过人民币 5000 元,就可以不用拖长长的连接线,也不用再专门配备一个高性能主机,在家里完全*的沉浸在Google Street View, YouTube, Netflix, Hulu, HBO 以及诸如 Fantastic Beasts , Where to Find Them, Need for Speed 和 Gunjack 2 这些 VR 游戏中,不是安静的坐着,而是 360 度的*视角。
完美 VR 的硬件和 API 已经准备好了,着手自己的开发计划吧!