Google ARCore 突破次元壁

1,603 阅读3分钟
原文链接: zhuanlan.zhihu.com

最近 Google 发布了 ARCore,虽然好久不做 AR ( 增强现实 )方面的工作了,看着 ARKit 和 ARCore 接连发布不免有些手痒,所以抽空玩(折)耍(腾)一下。

构想

需求很简单,就是能够在短时间内完成并且能够体现 AR 效果的作品。就目前来讲,AR 在手机上的交互体验并不理想,手机画面在动,另一只手还要戳中移动画面中的物体实在是太反人类了。所以通常 AR 应用会做成 多观察 少交互 的方式,其中 3D 动画与 AR 结合是最常见的展现手法( 比如 Apple ARKit 发布会 中的效果 )。

要自己做出酷炫的 3D 动画是不可能了,但我之前接触过在 3D 动画中比较有表现力的 MMD( MikuMikuDance )。而且印象中只需要在 Unity 中做一些简单的编辑就可以,感觉一两小时应该就能搞定吧。然而现实是总是比想象不给力。。。

站在大神的肩膀上

关于 MMD 的信息网上很多,是一款 3D 动画编辑软件,强大的网友们借助它完成了很多的作品( B站自寻 )。但是 MMD 编辑器使用的文件格式都比较特殊,所以要把模型和动作搬到 Android 上运行我们需要 Nora 大神开发的 Unity 插件 MMD4Mecanim。插件的主要功能是把 MMD 中的模型与动画文件转换成 Unity 可以使用的 fbx 格式,加上一些控制面部表情、骨骼、动画、物理效果的脚本。

然而可能是由于一些人把更改过的模型用作商业用途,作者在最新版本的插件中做了限制,不让你在 Android 环境导出工程。估计应该可以 Hack,但不会,所以只能使用比较老的版本( 这时候论保留版本的重要性~ )。

下一个坑就是 ARCore 需要最新版本的 Unity 的支持,而老版本的 MMD4Mecanim ( 我用的是 20150405 的版本 )在新版本的 Unity 上会报错。大致上要做以下三个修改:

// 文件 MMD4MecanimEditorCommon
// return modelImporter.globalScale * modelImporter.fileScale;
return modelImporter.globalScale * 1;

// 文件 MMD4MecanimImporter 两处错误直接注释掉

当然在最后能够正常显示模型前还是遇到不少问题,最后能够在 Unity 2017 版本上正常运行动画时真是。。。

成果展示

上图为截取画面,下面的视频比较大最好在 Wi-Fi 下观赏~

后续想法

  • 这个 Demo 只使用了 ARCore 提供的平面信息。之后可以看看对 Point Cloud 还能够有什么操作。
  • 按照 MMD 不同的人物组合、配饰组合,加上不同的现实场景可以组合出很多 AR 作品。而制作成本相对于从头做模型来得低很多,当然制作的东西很多是不能商用的。
  • 观赏性质的作品,虚拟物体 与 现实 的融合度很重要。可以调整的元素包括 阴影、光照角度。如果预先知道场景的话,可以放置透明的遮挡物来模拟现实物体。
  • 可以加入适当的 AR 特效,目前 AR 特效中比较有表现力的是利用上摄像头捕捉到的画面。比如透明模型折射后面的场景,或者将场景扭曲变化。
  • 自从 ARKit 发布以后出现了不少相关的点子,虚拟米尺、任意门、虚拟宠物等等作品,在 这里 你也能看到一些关于 ARCore 的实验性项目。个人觉得在 AR 的新载体和交互还没有突破之前,AR 的功能大多还是以展示为主。

====================================================================

ARKit 发布会:www.youtube.com/watch?v=S14…

MikuMikuDance:MikuMikuDance - Wikipedia

MMD4Mecanim:stereoarts.jp/

ARCore 实验项目:experiments.withgoogle.com/ar