Unity3D for VR 学习(2): 暴风魔镜框架探索

2016年01月12日 11:50 0 点赞 0 评论 更新于 2025-11-21 19:29

作者:王文刚

学习一项新技术,通常有三个关键要点:

  1. 掌握厂家提供的用户 API 手册:通过 API 手册,我们能了解该技术所提供的功能接口,为后续的开发工作奠定基础。
  2. 掌握厂家提供的 demo 样例:demo 样例是实际应用的示例,通过分析和运行它,我们可以快速熟悉技术的使用方法和流程。
  3. 参考《每个研发人员都应树立的一个 demo 模式》:这篇文章可能提供了关于构建和使用 demo 的有效模式和思路,有助于我们更好地学习和应用新技术。

因此,学习魔镜 4 技术也遵循这一规律。

暴风魔镜 4 概述

暴风魔镜 4 是一种基于“硬件 + 暴风 VR SDK 软件”的 CardBoard VR 解决方案。

硬件方面

魔镜 4 硬件主要由 2 个凸透镜和塑料头盔构成,它为展示 VR 效果提供了容器工具。为了获得酷炫的 VR 效果,需要依赖 5 寸以上、分辨率在 720P 以上的 Android 手机。将通过暴风魔镜 SDK 开发的 App 安装到手机上,放入魔镜中,通过凸透镜就能看到 VR 效果。这种 Cardboard 方式的 VR 受到了 2 年前 Google CardBoard 的启发。

参考:[暴风魔镜 4 适配机型列表(2015.12.2 更新)]

网上有关于几十元自行组装 Google CardBoard 的说法,但对于 DIY 硬件,笔者兴趣不大。花 100 多元购买一个现成的暴风魔镜 4 是个不错的选择。

暴风 SDK 软件

对于 Unity3D 程序员来说,SDK 软件是重点关注的内容。下面通过魔镜提供的 360 度图片的 Unity3D 层次截图,来分析部分 SDK 软件框架:

  • UI:主要采用 UGUI 制作了一个返回主界面的 Button。在 VR 场景中,UGUI 的 3D UI 效果十分显著。而且 UGUI 是 Unity 原生的,效果良好,因此使用 UGUI 制作 UI 是未来的发展趋势。
  • MojingMain、MojingVRHead:负责接收陀螺仪数据,包括水平坐标 x 和垂直坐标 y 的数据。通过这些数据,我们可以了解设备的姿态和方向。
  • MojingInputManager:负责手机蓝牙的输入控制,可直接复用。魔镜出厂时适配了魔镜蓝牙和小米蓝牙控制器。目前,蓝牙手柄是比较常见的外设输入设备,随着 Oculus Touch 的面世,外设输入可能会有进一步的发展。
  • GazePointer\Pose3D:即眼睛目视前方的小黄点,这是 VR 应用中一个很有趣的实践。当没有蓝牙控制器时,可以通过这个轨迹点实现功能选择。通过查看代码中的英文注释,发现其与当年 Google CardBoard 代码相同。
  • MojingEye:一个 VR 应用需要使用 2 个 Camera,分别为 Left 和 Right,模拟人的左右眼,从而实现立体视觉效果。

VR 的常见 Q&A

1. PC 和 APP 的应用能否复用?

答复:不能复用。APP 应用是运行在手机上的,而 PC 应用使用的是 *.exe 格式,两者的运行环境和架构不同。不过,如果是 3D 片源则可以在不同平台使用。

2. 近视镜问题?

答复:暴风魔镜 4 提供的空间较大,笔者 600 度近视,戴着眼镜使用没有问题。此外,Oculus Rift 提供了 3 组镜片,对于近视度数小于等于 400 度的用户,也能正常使用。

3. 伤眼睛问题?

答复:这是笔者最为担心的问题。经过几天的试用,发现似乎不会伤眼睛。从原理上来说,让人眼感受到具有深度信息的持续的 3D 渲染是虚拟现实最重要的部分。为了产生深度信息,VR 设备会给每个眼睛生成一张图片,这两张图片在视觉上有一点点偏移量,以此模拟人眼的视差,即人脑处理在不同位置看到的物体而产生的深度信息。同时,为了产生更好的视觉效果,会将图片扭曲以模拟人眼的球形表面,通过桶形畸变技术来实现。在使用暴风魔镜 4 时,眼睛实际上在任何时候都在观看远景。

4. 市场成熟度问题?

答复:目前 VR 市场仍处于成熟前期。如果技术能够突破 2k + 屏幕、60FPS +、<20ms 这三个要素,并且 VR 设备价格大幅降低,那么 VR 内容市场将会迎来快速发展阶段,或许在 2016Q3 之后会有不错的市场表现。

5. 用什么来开发 VR 产品?

答复:主要使用 Unity3D 和 UE4 进行开发,其中 Unity3D 占据了 70%以上的市场份额。VR 在 PC 端应用可能更具优势,但初期暴风魔镜 100 多元的低价格,使得开发手机版 App 成为其特长,而这正是 Unity3D 的擅长领域。

6. 图像抗镜片畸变问题?

答复:畸变(distortion)是指物体上的直线经过透镜成像后变成弯曲的现象,它是由于透镜的放大率随光束和主轴间所成角度改变而引起的。详细信息可查看[畸变百科]。

笔者在网上还发现了一本新出的《Learning Virtual Reality》书,其 PDF 电子版链接为:[http://pan.baidu.com/s/1c1lP64C]

最后,经过一番研究,笔者发现暴风魔镜和暴风影音属于同一团队,大厂能够紧跟技术潮流,值得称赞。同时,再次复习一下 Unity3D 的 3D 数学知识是很有必要的,因为在 VR 技术中,3D 数学的应用非常广泛。可参考《C# 程序员整理的 Unity 3D 笔记(十):Unity3D 的位移、旋转的 3D 数学模型》。

作者信息

洞悉

洞悉

共发布了 3994 篇文章