查看原文
其他

AR丨苹果ARKit开发入门系列:Unity ARKit Plugin简介

2017-09-27 eseedo Gad-腾讯游戏开发者平台

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


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


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


开始前的准备


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

Xcode 9 beta 6

iOS 11 beta 9

Unity 5.6.2f1


需要注意的是,考虑到兼容性和稳定性问题,这里我们选择的是Unity 5.6.2f1版本,而非最新的Unity 2017.1或Unity 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中的示例场景


在Unity的Asset视图中可以看到,ARKit插件提供了6个基本的示例场景了,分别是UnityARBallz,UnityARKitScene,UnityAROcclusion,UnityARShadows,UnityParticlePainter和UnityARKitRemote。


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


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


3.ARKit Plugin中的重要文件


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


1)ARSessionNative.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


4)UnityARAnchorManager.cs

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

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


5)UnityARBuildPostprocessor.cs

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

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


4.ARKit中的有用组件


1)UnityARCameraManager.cs

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

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

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


2)UnityARVideo.cs

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

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


3)UnityARUserAnchorComponent.cs

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

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


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


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



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


未完待续


----------------------

今日推荐


ARKit iOS 11原生开发入门(上)
ARKit iOS 11原生开发入门(下)

Digital Mike头发制作及渲染的深度揭秘


添加小编微信,可享双重福利

1.加入GAD游戏VR交流圈

获取行业干货资讯,观看大牛分享直播

2.领取GAD独家VR资料库,地址在小编朋友圈

包括研究报告、游戏制作、项目分享等全套资料


↓长按添加小编GAD-安琪↓

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

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