本期来说说 AR游戏是如何制作的。 AR 程序通常分为三部分,一是制作 3D 模型,第二是何时显示这个 3D 模型,第三是如何显示这个 3D 模型。这里面的核心在于第二和第三点。
是制作 3D 模型,也就是我们经常说的建模。在很多人眼里觉得 3D 建模是*没有技术含量的工作。我经常听到甲方说,你们什么 VRAR 3D 可视化不就是建模的吗?之后我们单独聊一期建模的技术。这里简单说一下, AR 建模可以用 3D max 、maya,高手是可以用*少的模型表面实现更精美的画面效果,能够兼顾加载速度和画面表现。这第一步说到的制作模型除了 3D 模型之外,还包括贴图、纹理、凹凸感和动画。现在我们有了一个互动的 3D 模型了,任何人都可以把它拖到 unity 或者是 UE4 里,点一下发布,我们就能得到了一个手机游戏,就是这个 3D 模型在手机里动的完全没有难度。
第二步,何时显示这个 3D 模型?如果 3D 模型随时随地都能在手机上显示的话,就不叫 AR 程序了。 AR 的特点就是用手机摄像头捕捉周围的环境,当手机找到触发信号之后,才显示 3D 模型。比如售楼处的 3D 户型图。做这个项目的时候,设计师是先做好了 3D 模型,隐藏起来给程序预置一张照片作为处罚信号。当用户打开手机摄像头对着平面户型图扫描的时候,程序是在实时的对比,一直在找哪里的画面跟预置的图片是一样的。当摄像头找到预置图片的时候,一分析这两张图 80% 都一样,就是它了。
于是就把制作好的 3D 模型从隐藏状态变成显示状态,我们就看到了,但这样只是控制 3D 模型的显示和隐藏。当模型显示出来之后,它和周围的环境没有任何关系。
还需要第三步如何显示这个 3D 模型。比如我们的手机摄像头向下,我应该看到模型的顶面,我的手机向前我应该能看到模型的正面。如果手机在任何姿态下显示的模型都是相同的话,那就没有意思了。软件还要调用手机的陀螺仪,知道手机自己的姿态,从而推算出三维模型应该如何显示才是正确的。实际上这个姿态的判断不仅仅是陀螺仪,还有摄像头、激光雷达进行交叉验证。总之我们知道手机能够判断出自己的位置和姿态就够了。你别以为程序员懂,他也只是会调用这个姿态的结果而已。于是现在这个 3D 模型可以根据手机的姿态不同显示出符合物理空间感的状态了。
这样的 AR 软件没有纵深感。因为当实际物体出现在 3D 模型前面的时候,本来应该是遮挡住 3D 模型的,软件并不能够判断出有物体遮挡住了 3D 模型,软件甚至都不会有判断物体遮挡的这个过程。如果 3D 画面显示在所有物体前面时,还好如果有物体出现在 3D 模型的前面,而 3D 模型又遮挡住了物体,那么就会让人觉得无比违和,于是就出戏了。
有的团队在做 AR 程序的时候,会把周围实际环境完整的建模出来。这个模型并不在程序里显现,它只是用来判断该显示的模型什么时候能看见,什么时候会被遮挡。在触发 3D 模型显示的时候,也不是用预设的照片跟摄像头的画面进行对比,而是用周围环境的 3D 模型跟摄像头的画面进行对比,这样操作就会让 AR 程序看起来更真实。