苹果ARKit开发入门系列-Unity ARKit Plugin简介

发表于2017-09-27
评论20 8.2k浏览

iOS原生开发感兴趣的朋友当然会首选SceneKit或是Metal,但ARKit对第三方开发工具的支持显然也很受欢迎,颇为流行的UnityUnreal引擎就在此列。

在这一部分内容中,我们将了解如何使用ARKitUnity开发简单的AR应用。

当然,首先需要了解Unity ARKit Plugin这个插件。

 

开始前的准备

首先要准备的当然是各种开发工具和环境了,因为目前ARKit还没有转正,所以只能用测试版的开发和测试环境:

Xcode 9 beta 6

iOS 11 beta 9

Unity 5.6.2f1

 

需要注意的是,考虑到兼容性和稳定性问题,这里我们选择的是Unity 5.6.2f1版本,而非最新的Unity 2017.1Unity 2017.2 beta

打开Unity,创建一个新的Unity项目,将其命名为ARTest

接下来当然是要下载Unity ARKit Plugin了。

有两种选择,一种是直接在Asset Store里面搜索Unity ARKit Plugin下载,链接是:

https://www.assetstore.unity3d.com/en/#!/content/92515

 

 

还有一种选择是从bitbucket上使用SourceTree cloned最新的版本,链接如下:

https://bitbucket.org/Unity-Technologies/unity-arkit-plugin

这里个人使用了第一种方式,也即从Asset Store上下载并导入Unity ARKit Plugin

 

 

Unity ARKit Plugin的简单介绍

 

1.什么是Unity ARKit Plugin

Unity ARKit Plugin中可以让我们在Unity项目中轻松使用几乎所有的ARKit SDK功能。这个插件向Unity开发者提供了ARKit SDK中的多个主要功能,如世界追踪,渲染相机的视频捕捉,平面检测及更新,特征点云提取,光线评估和hit 测试等等。

该插件是开源的,并满足MIT license

 

2. ARKit Plugin中的示例场景

UnityAsset视图中可以看到,ARKit插件提供了6个基本的示例场景了,分别是UnityARBallzUnityARKitSceneUnityAROcclusionUnityARShadowsUnityParticlePainterUnityARKitRemote

大家可以自行在手机上编译测试这些示例场景。

其中最重要的示例场景当然是UnityARKitScene,其中展示了ARKit所有的基本特性。

 

3.ARKit Plugin中的重要文件

 

这里简单介绍一下插件中的几个非常重要的文件。

1ARSessionNative.mm

路径:”/Assets/Plugins/iOS/UnityARKit/NativeInterface/ARSessionNative.mm”

简介:该文件是用于跟ARKit SDK实际交互的Objective-C代码。

 

 

2)UnityARSessionNativeInterface.cs

路径:”/Assets/Plugins/iOS/UnityARKit/NativeInterface/UnityARSessionNativeInterface.cs"

简介:该文件提供了到ARKit的脚本API,同时也提供了对于原生代码的解释说明。

其中包含了以下的API:

public void RunWithConfigAndOptions(ARKitWorldTackingSessionConfiguration config, UnityARSessionRunOption runOptions)

public void RunWithConfig(ARKitWorldTackingSessionConfiguration config)

public void Pause()

public List<ARHitTestResult> HitTest(ARPoint point, ARHitTestResultType types)

public ARTextureHandles GetARVideoTextureHandles()

public float GetARAmbientIntensity()

public int GetARTrackingQuality()

 

此外其中也包含了一些可以提供代理的事件:

 

public delegate void ARFrameUpdate(UnityARCamera camera)

public delegate void ARAnchorAdded(ARPlaneAnchor anchorData)

public delegate void ARAnchorUpdated(ARPlaneAnchor anchorData)

public delegate void ARAnchorRemoved(ARPlaneAnchor anchorData)

public delegate void ARSessionFailed(string error)

 

以及我们可以订阅的事件列表:

 

public static event ARFrameUpdate ARFrameUpdatedEvent;

public static event ARAnchorAdded ARAnchorAddedEvent;

public static event ARAnchorUpdated ARAnchorUpdatedEvent;

public static event ARAnchorRemoved ARAnchorRemovedEvent;

public static event ARAnchorAdded ARUserAnchorAddedEvent;

public static event ARAnchorUpdated ARUserAnchorUpdatedEvent;

public static event ARAnchorRemoved ARUserAnchorRemovedEvent;

public static event ARSessionCallback ARSessionInterruptedEvent;

public static event ARSessionCallback ARSessioninterruptionEndedEvent;

public static event ARSessionTrackingChanged ARSessionTrackingChangedEvent;

 

3)AR*.cs

路径:"/Assets/Plugins/iOS/UnityARKit/NativeInterface/AR*.cs"

简介:这些以AR开头的cs文件是和ARKit中所提供的数据结构相对应的API

 

4UnityARAnchorManager.cs

路径:"/Assets/Plugins/iOS/UnityARKit/Utility/UnityARAnchorManager.cs"

简介:该文件用于管理ARKit中的anchor更新信息,并据此创建相对应的Unity游戏对象(查看GeneratePlanes.cs组件来了解如何使用)。

 

5UnityARBuildPostprocessor.cs

路径:”/Assets/Plugins/iOS/UnityARKit/Editor/UnityARBuildPostprocessor.cs"

简介:该文件是编辑器脚本,用于在iOS编译时运行。

 

4.ARKit中的有用组件

 

1UnityARCameraManager.cs

路径:"/Assets/Plugins/iOS/UnityARKit/UnityARCameraManager.cs"

简介:该组件应该被放置在场景的游戏对象上,代表想要通过ARKit来控制的摄像机。它会基于ARKit的更新来控制摄像机的位置和旋转角度,并提供投射矩阵。

该组件中还包含了用于初始化ARKit 进程的代码。

 

2UnityARVideo.cs

路径:”/Assets/Plugins/iOS/UnityARKit/UnityARVideo.cs"

简介:该组件应该放置在摄像机上,以抓取用于渲染视频的纹理,并将其设置在用于backbuffer的材质上,同时还将设置用于完成blitcommand buffer。关于什么是command buffer,请参考官方文档,这里就不再详细解释了(https://docs.unity3d.com/Manual/GraphicsCommandBuffers.html) 。

 

3UnityARUserAnchorComponent.cs

路径:"/Assest/Plugins/iOS/UnityARKit/UnityARUserAnchorComponent.cs"

简介:该组件将基于其所依附的游戏对象的生命周期,从ARKit中添加和删除Anchor

 

如何一步步设置Unity中的AR项目

 

在后续的实战示例中会具体讲解如何操作,这里先提醒大家,Unity ARKit Plugin中自带了一个TUTORIAL.txt文件,其中包含了详细的说明。

 

 

关于Unity ARKit Plugin的简单介绍到此结束,在后面的内容中,我们将具体介绍如何在项目中实际使用该插件。

未完待续

 

如社区发表内容存在侵权行为,您可以点击这里查看侵权投诉指引

标签: