在Unity中创建ARCore项目《Akira》
大家还记得第七场Unity官方的技术直播课程中那只可爱的小狗Akira吗?这只名为Akia的小狗正是在Unity中基于ARCore进行开发的。
《Akira》项目展示如何在ARCore的摄像机世界中放置一只可爱的小狗Akira,并在Akira在平面上朝目标点走动。下面是效果图。
实在Akira是非常简单的,我们将分五步介绍项目的实现过程。
第一步-基础设置
开发准备
首先需要下载Unity 2017.2版本、ARCore SDK for Unity以及 Android SDK 7.0。最新的 Unity 2017.2版本支持ARCore,所以不能低于这个版本。
设置Android设备
请开启开发者模式,并允许USB调试。
下载并安装ARCoreService,下载地址:https://github.com/google-ar/arcore-android-sdk/releases/download/sdk-preview/arcore-preview.apk。
使用USB连接Android设备到你的开发用机,安装ARCoreService 服务,使用以下命令:adb install -r -d arcore-preview.apk。
设置项目
首先将你的目标平台换成Android。在Project Settings找 Android Player Settings。并进行一下设置:
Other Settings > Multithreaded Rendering: off
Other Settings > Package Name: 你的应用的ID,如com.example.helloAR
Other Settings > Minimum API Level: Android 7.0 及以上版本
Other Settings > Target API Level: Android 7.0 及以上版
XR Settings > ARCore Supported: on
在场景中添加ARCoreDevice预制件
当ARCore插件导入Unity后,我们可以在当前场景中添加ARCoreDevice。这是ARCore当核心组件,负责Camera图像当采集,以及摄像机位置追踪等功能。
第二步-点云可视
现在我们来看看如何显示出点云。点云是对于图像上的众多特征点一个比较形象点描述,把这些特征点显示出来可以方便我们的调试。这部分的工作由PointCloud对象中的PointCloudVisualizer.cs脚本完成。如下图所示,点云数据可以从Frame中获得,然后,设置Mesh的顶点和索引,使用MeshTopology.Points的方法绘制出点云视图。
第三步-平面检测和碰撞
搭建好基本环境后,我们就是开始关键的一步了,在摄像机世界中寻在放置点。ARCore提供了在摄像机世界中进行射线与平面进行碰撞检测的方法,因此,当我们识别出平面后,我们可以方便的在平面上找到我们的放置点。在本项目中,我们在AkiraSceneController.cs的脚本中实现了相关的功能。
具体而言,ARCore提供了Session.Raycast的方法来实现射线与平面碰撞检测的功能,并把碰撞点的信息保存在TrackableHit结构中。
第四步-创建锚点及放置Akira
当找到物体的放置点后,我们需要在摄像机世界中创建我们的Akira了。和在完全的世界坐标中创建物体不太一样的是,我们需要先创建一个锚点(Anchor)。这个锚点保存了摄像机当前所理解的物理世界的坐标到Unity世界坐标的映射。所以当物理世界坐标有些变化的时候,锚点也可以感知这样的变化。所以通常我们会先创建锚点,再把创建出来的虚拟物体挂载到锚点下面。
第五步-编译运行
通过以上步骤,我们就可以把可爱的Akira放到摄像机的世界中了。我们现在就可以编译运行了。Unity会自动把生成好的Android APK包安装到移动端设备上,自动运行后,你可以看见一只活泼可爱的小狗Akira了。
资源
我们已经提供了完整的工程代码,你可以访问下载: http://forum.china.unity3d.com/static/u3d/Akira.zip
在Unity Connect上,你可以温习我们的直播课程,地址:https://connect.unity.com/p/ji-zhu-zhi-bo-zai-unityzhong-chuang-jian-arcoreying-yong
https://v.qq.com/x/page/g0567prv4xc.html
总结
上面就是ARCore开发中的一些基础问题。希望大家了解了这些基本功能后,能创造出更加丰富多彩的AR应用。后面我们还会继续分享一些开发中的实用技巧在Unity官方中文社区(unitychina.cn),请保持关注!
推荐阅读
近期Unity官方活动
11月11日,Unity技术路演成都站报名开启!
11月,Unity教育峰会,长沙、上海、广州站报名开启。
Unity Connect火热征文中,赶紧来分享你的Made with Unity作品吧!
点击“阅读原文”进入Unity官方中文社区!