Unity3D for VR 学习(3): 暴风魔镜PC Input小改造–自己动手、丰衣足食

      在做手游的时候,80%时间是在PC调试的,例如业务逻辑、AI算法、核心玩法等。

拿到魔镜提供的demo,晕了,必须得安装到Android机器上,才能调试,究其原因,有三:

  1. 需要用到手机陀螺仪
  2. 需要用到蓝牙手柄
  3. 需要用到魔镜的凸透镜

这些都是客观原因,但是每次打包后,安装Android,再戴到头上,Debug、log啥的都看不清,呵呵。

故就着手改造一下输入快捷键,从而可以方便的模拟手机陀螺仪输入、模拟蓝牙输入、模拟非VR Mode切换。

 

1 模拟手机陀螺仪输入

这个在mojing.cs有现成隐藏代码,在UpdateState()函数中。

  • 快捷键F: ok键
  • 快捷键Alt:按住,鼠标模拟GazePostion位移
  • 快捷键Ctrl:按住,鼠标模拟GazePostion旋转

2 模拟蓝牙输入

在学习了MojingInputManager.OnButtonDown\OnButtonUp后,知道只要传递过去string即可,其中用/分隔,第一位暂时不用,第二位用MojingKeyCode预定定义的数字。

  • 快捷键WASD:模拟蓝牙
  • 快捷键Q:模拟蓝牙OK

3 模拟非VR Mode切换

VR Mode切换,是通过设置Mojing.SDK.VRModeEnabled实现的,原理是对Left、Right Camera和Center Camera可见性进行隐藏或者显示实现切换,找到了Demo.cs脚本中,已经封装好了切换和返回主菜单函数,调用即可:GameObject.FindObjectOfType<Demo>().ToggleVRMode();

  • 快捷键R:模拟切换VR Mode
  • 快捷键B:模拟回到主菜单

 

借用网络一句话:VR开发,比App开发,多一个Camera。 搭建好调试环境,就会好很多。

 

源码下载:MojingInputManagerEditor.cs

使用:在MojingInputManager.prefab添加MojingInputManagerEditor脚本,然后点击Apply即可。

image

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

学习一个新技术,有三个法宝:

故,学习魔镜4技术,亦如是也。

image

 

暴风魔镜4是 硬件 + 暴风VR SDK软件的CardBoard VR解决方案

硬件

魔镜4硬件提供了展示容器工具,主要由2个凸透镜和塑料头盔构成。故为了看到效果酷炫的VR效果,必须要依赖5寸以上Android手机–720P以上,把通过暴风魔镜SDK做的App放入里面,通过暴风魔镜凸透镜才能看到VR的效果–这种Cardboard方式VR,是基于2年前Google CardBoard“启发”的。

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

网上也有说几十元,可以自己组装Google CardBoard的,不过对于DIY硬件,我没有太大动力,100多元钱,买个现成的暴风魔镜 4,非常好了。

 

暴风SDK软件

SDK软件,才是Unity3D程序员重点关注的。

image

这张图,是魔镜提供的360度图片的Unity3D层次截图,这里我们可以看出部分SDK软件框架:

  1. UI:  这里主要采用UGUI,做了一个Button,返回主界面。 在VR中,UGUI 的3D UI效果就立显了,还有就是UGUI是Unity原生的,效果又不错,故做UI选择UGUI是大趋势。
  2. MojingMainMojingVRHead:负责陀螺仪数据接收,水平坐标x和垂直坐标y数据。
  3. MojingInputManager:负责手机蓝牙的输入控制,直接拿来复用即可,魔镜出厂适配了魔镜蓝牙和小米蓝牙控制器,一般而言,目前蓝牙手柄是比较常见的外设输入,可能随着Oculus Touch面世会升华。
  4. GazePointer\Pose3D:眼睛目视前方的小黄点。这个是VR应用中一个很酷的实践,当你没有蓝牙控制器,可通过这个轨迹点,实现功能选择。通过代码中,看到很多流利的英文注释,我搜索了一下github,原来当年google CardBoard代码,一模一样嘛,呵呵。
  5. 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渲染是虚拟现实最重要的部分。

第一,为了产生深度信息,它给每个眼睛生成一张图片,这两张图片在视觉上有一点点偏移量,这样就可以模拟人眼的视差,所谓视差就是人脑处理在不同位置看到的物体而产生的深度信息。第二,产生更好的视觉效果,它将图片扭曲从而模拟人眼的球形表面,通过桶形畸变技术可以达到这个效果。

 

==> 在使用暴风魔镜4的时候,你的眼睛其实在任何时候都在观看远景。

4 市场成熟度问题?

答复:目前技术限制,依然是成熟前期,如果技术突破了:2k+屏幕、60FPS+、<20ms这3个要素,且VR价格大幅度降低,则是VR内容突飞猛进的市场阶段–或许2016Q3后会有不错的市场。

5 用什么来开发VR产品?

答复:主要是Unity3D,UE4,而其中Unity3D占据了70%以上,据说。 VR为了牛X在PC VR,但是初期暴风魔镜100多元的价格,做手机版App,正是Unity3D的长项也。

6 图像抗镜片畸变?

答复:畸变的英文单词distortion, 物体上的直线经过透镜成像后变成弯曲的现象。畸变是由于透镜的放大率随光束和主轴间所成角度改变而引起。 详细看百科:畸变.

 

我在网上查了一些,新出的一本《Learning Virtual Reality》书,PDF电子版链接:http://pan.baidu.com/s/1c1lP64C

image

 

搞了好久,终于弄明白,暴风魔镜和暴风影音是一伙的,非常好,尤其是大厂能与时俱进的,佩服!

再次复习一下Unity3D的3D数学,我理解的,这个在VR技术,应用会很多:

C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型

Unity3D左右出击:Unity 2D新功能发布会、Unity VR大师课程

   做为Unity3D技术的从业者, 非常关注一举一动—Unity3D大中华区. 如自从11月中到12月中,短短的1个月时间,对于Unity3D大中华区, 发生3件大事, 可以说算是三把火:

 

11.23日 唐嘉隆任Unity大中华区总经理

       这种重大的人士变迁,对外企大公司而言,应该是内部有了一些“地震”了,要不中国这边的boss都换了。据说国内手游、VR市场火热,2015年Unity已经有2名内部骨干出去创业,或者加入创业公司了。 全球450万Unity程序员,中国占了40%,热火程度可见一斑。

       新的干部队伍应该会有较大的作为的。目前看已经稳住阵脚了,以方便我等广大的Unity程序员们的心里:减少内耗、服务好开发者先。

 

12.15日  Unity VR大师课程

         从资本、技术角度看,VR、AR是未来5年的战略制高点,这一点Unity非常清楚,自从5.2开始,Unity已经支持了全球4个重要的VR硬件头盔–原生支持;这次举行VR聚会,将会进一步增强Unity在VR行业的领头羊角色。 目前全球跨平台开发VR的IDE工具,Unity占了约70%,另外的对手主要是虚幻引擎,这次Unity在北京开会,有主动求战的意味,毕竟牛B的虚幻在国内行事低调的多。

          看好Unity在VR、AR领域的领头羊角色:跨平台、免费、Android、PC、IOS多平台快速demo原型。

 

12.17日 Unity 2D新功能发布会

          尽管Unity以3D著名–其Unity3D.com网站为公司官网的。但是在手游时代—包括2015年,主要的手游还是以2D为主,据说手机上3D手游开始看起来很酷,但是巨大的耗电量\发热\玩时间长了晕等硬伤, 只能是手游的一个宣传噱头,很多公司是2D\2.5D为主的—我了解的.  而在2D上,Unity在4.*前无原生的2D支撑,一般依赖第三方插件,如TK2D

           2D手游,Unity的劲敌为触控科技的 cocos2d x。  本次高调举行Unity2D新功能发布会,属于和cocos2d x 主动求战PK,以弥补2D的先天不足。

 

  • 做2D手游,首选 cocos2d x, 然后是Unity 2D
  • 做3D手游,首选Unity3D,然后是虚幻引擎
  • 做VR技术,首选Unity3D,然后是虚幻引擎

故,如此对比,cocos2d x必然要逊色不少,而Unity3D固然问题很多,但是却是2D、3D、VR技术全栈也,有利于一个靠谱程序员的更长的生命周期—不用频繁更换技术架构和技术知识储备了。

 

 

小结一下,我的Unity技术栈,如图所示:

image

  1. Unity3D技术: 2013.6月份开始了业余了解Unity,做demo,翻译了14篇Unity技术文章
  2. Unity2D技术: 2015.6月份开始了全职Unity程序员,做的是2D棋牌手游。
  3. Unity VR技术: 计划2016年业余玩玩,前几天采购的暴风魔镜4 预计春节前能到货。