Unity-?ARKit-Plugin插件及样例教程

转自http://www.u3dc.com/archives/2790

这要从WWDC2017说起,概念有点多,我尽量精简一些说明白。

ARkit是什么?

话说,苹果在WWDC2017上发布的一套增强现实开发套件,然后IOS就成了世界上最大的AR平台了,关键是实现的SLAM效果还是行业顶尖水准的,也庆幸是IOS独占,不然让那些第三方做AR SDK的团队辛苦研究出来的SLAM就这样被秒了,现在至少还可以拿支持多平台说点什么??垂凸苌嫌懈鲂』镒硬馐訟Rkit,他在房间里放了一个3D物件,然后拿着手机在房间里转了一大圈,那个3D物件岿然不动,还在原地呆着,这定位效果真是~啧啧~

AR是什么?

英文全称:Augmented Reality,简称AR,中文意思:增强现实。简单点说,就是给已有的物体叠加显示一些细节信息,最形象的就是龙珠里的史考特眼镜,一眼看穿你的战斗力。目前在军事、医用、商业运作均有重要应用。

SLAM是什么?

全称:simultaneous localization and mapping,中文意思:即时定位与地图构建,最早于1988年由Smith、Self和Cheeseman提出,是计算机视觉研究领域的关键技术之一,这两年因为AR、MR概念的热炒又一度进入人们视线的热度榜中,简单的说,这是一项让虚拟的三维物体感知我们现实世界空间感的技术,比如我养了一直虚拟的小猫,它能与我们现实的世界进行交互,比如可以躲在我们的电脑桌下,或者跳到我们正在敲字的键盘上,细思极恐(可参考《电脑线圈》)。

Unity-ARKit-Plugin是什么?

这是Unity官方在WWDC发布会当天在bitbucket同步开源的插件型项目(Unreal也有对应的项目,当然今天先说这个)。插件的原理是把调用IOS原生的一些API功能进行了中介封装,这样你就可以直接使用Unity推荐的C#进行开发。

怎么用?

一般而言,插件都是为了快速开发而整合的接口型模块代码,一个陌生的插件到手上后,我们第一时间会先看它的测试场景样例,这是熟悉新东西的捷径,“Talk is cheap,show me the code."

当然官方在项目的ReadMe文档中也有详细的说明(英文),我整理了一下,大意如下:

【配置需求】:

Unity版本需要5.6.1P1以上(补丁版本),IOS需要升级到最新的IOS11(现在问题还比较多,不建议日常使用,开发者自备开发机),Xcode也需要升级到beta 9(已包含ARkit),最后还有个硬件需求:手机必须iPhone6s以上(A9以上CPU),iPad必须是2017年款的。

插件中已经包含了四个测试场景(最新版本,我fork了一份到我github上,并同步了最新的代码)。

插件的文件中,有两个比较重要的代码文件:ARSessionNative.mm和ARSessionNativeInterface.cs,前者是Objective-C代码,也是真正的ARkit SDK的接口代码,而后者则是胶水代码,就是上面说的封装原理,C#通过ARSessionNativeInterface.cs与IOS原生代码进行通讯。

接着介绍一些常用的API:

public void RunWithConfigAndOptions(ARKitWorldTackingSessionConfiguration config, UnityARSessionRunOption runOptions)

public void RunWithConfig(ARKitWorldTackingSessionConfiguration config)

public void Pause()

public List 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)

在/Assets/Plugins/iOS/UnityARKit/NativeInterface/目录下以AR开头的.cs脚本所提供的API等价于原生ARkit的公有数据结构。

UnityARAnchorManager.cs这个脚本的用处是更新三维物件在追踪时的锚点(锚就是定点,让一个物体岿然不动的根本),参阅GeneratePlanes.cs 这个脚本详细了解具体的用法。

UnityARBuildPostprocessor.cs是一个Editor脚本,打包IOS平台时会调用,核心的代码如下,主要是做一些库和文件添加操作:

string projPath = pathToBuiltProject + "/Unity-iPhone.xcodeproj/project.pbxproj";

其他一些实用的组件:

UnityARCameraManager.cs,这个组件得放到一个Gameobject上,这样才能通过ARkit来控制引用的摄像头。(这个其实和其他的AR SDK是很类似的),主要用于初始化ARkit,更新ARkit的位置、旋转、投射矩阵等信息。

ARVideo.cs 这个组件需要挂载到摄像机上,设置对应的材质用于传输数据到后备缓冲区。

官方的说明就是以上这些了,当然这个插件还在不断迭代更新中,后续还会有更多的feature,是不是意犹未???那就自己手动Clone下来研究一下呗。

github链接:https://github.com/U3DC/Unity-ARKit-Plugin

最后编辑于
?著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,172评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,346评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事?!?“怎么了?”我有些...
    开封第一讲书人阅读 159,788评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,299评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,409评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,467评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,476评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,262评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,699评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,994评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,167评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,827评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,499评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,149评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,387评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,028评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,055评论 2 352

推荐阅读更多精彩内容