查看原文
其他

在Unity中创建ARCore项目《Akira》

2017-11-01 Unity官方 Unity官方平台

大家还记得第七场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),请保持关注!


推荐阅读

5个保持动画控制器整洁的小技巧

12步将使你的人物角色变成玩家

Unity 2017.3 Beta版本粒子系统的改进

使用Unity在手机上实现移动Inside-out VR追踪

360 VR Player Starter kit使用教程


近期Unity官方活动

11月11日,Unity技术路演成都站报名开启


11月,Unity教育峰会,长沙、上海、广州站报名开启


Unity Connect火热征文中,赶紧来分享你的Made with Unity作品吧!


点击“阅读原文”进入Unity官方中文社区

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存