本文的內(nèi)容是承接 WWDC 2018 | iOS 12 Beta初體驗(yàn) 一文的菇爪,上一篇中,從整體上過了一遍 iOS12 系統(tǒng)的更新的初體驗(yàn)涧郊,本文詳細(xì)梳理一下ARKit2.0的更新內(nèi)容。
寫在前面
在前面文中提到,iOS 12主要是在性能上進(jìn)行了優(yōu)化构哺,對(duì)普通用戶來說,iOS 12并沒有從軟硬件上給人耳目一新战坤。
但是對(duì)于開發(fā)者來說曙强,關(guān)注點(diǎn)則很多,其中途茫,ARKit2.0 就是一個(gè)很大的亮點(diǎn)碟嘴。蘋果在ARKit2.0的介紹過程中用了“無與倫比”來形容 ARKit2.0 :
unparalleled augmented reality experiences
我覺得 ARKit2.0 本次的更新,對(duì)于蘋果系統(tǒng)下的 AR 發(fā)展具有劃時(shí)代意義囊卜。
為什么這么講娜扇,ARKit1.0 雖然強(qiáng)大错沃,但始終停留在只能一臺(tái)設(shè)備玩,玩家之間沒有交互雀瓢,?你做的再好你只是一個(gè)單機(jī)游戲枢析,但隨著 ARKit2.0 的發(fā)布,這一切都變了刃麸。
With ARKit 2 on iOS 12, your AR apps can now be experienced by multiple users simultaneously, and resumed at a later time in the same state.
ARKit2.0 支持多人同時(shí)參與醒叁,玩家之間可以共享由虛擬世界和真實(shí)世界構(gòu)建的場景,這樣的話泊业,隨著這個(gè)功能的發(fā)布把沼,AR 就加入了社交屬性,對(duì)游戲設(shè)計(jì)者來說吁伺,這也就有了無限的想象空間饮睬。
所以,可以預(yù)見篮奄,接下來的幾個(gè)月內(nèi)捆愁,會(huì)有一批優(yōu)秀的、多人參與的AR應(yīng)用出現(xiàn)窟却,值得期待昼丑。
ARKit2.0 雖然升級(jí)變化很大,但總結(jié)來看间校,我把變化歸納為兩個(gè)部分:
- 支持多人同時(shí)參與
- 更好的支持3D
本文也從這兩部分來講解矾克。
1. 支持多人同時(shí)參與的 SwiftShot
SwiftShot
是蘋果官方給出來的一個(gè)示例,本節(jié)結(jié)合 SwiftShot 來講解 ARKit2.0是如何讓多人同時(shí)參與進(jìn)來的憔足。
點(diǎn)擊下載SwiftShot源碼示例代碼源碼胁附。
在講解原理之前,先來熟悉一下游戲的基本玩法滓彰。
1.1 SwiftShot 玩法簡介
游戲首頁如下圖所示控妻,上面有兩個(gè)按鈕:
點(diǎn)擊 Host 按鈕為其他附近的玩家開始游戲,點(diǎn)擊 Join 按鈕參與在另一臺(tái)設(shè)備上已經(jīng)開始的游戲揭绑。
如果你點(diǎn)擊了 Host按鈕弓候,應(yīng)用會(huì)要求你找到平面(如桌子)以放置游戲面板。你可以拖動(dòng)他匪,旋轉(zhuǎn)并捏合以定位和調(diào)整板的大小菇存,調(diào)整OK后點(diǎn)擊屏幕,并出現(xiàn)游戲板邦蜜。
當(dāng)游戲板出現(xiàn)時(shí)依鸥,你會(huì)發(fā)現(xiàn)桌子上有積木和彈弓,彈弓每端有三個(gè)悼沈。
將設(shè)備靠近彈弓贱迟,等彈弓高亮的時(shí)候姐扮,觸摸屏幕抓住它,然后向后拉并釋放衣吠,瞄準(zhǔn)并發(fā)射球茶敏。
球會(huì)擊倒積木或者彈弓,發(fā)生物理碰撞缚俏。
擊倒對(duì)面三支彈弓者贏得游戲勝利惊搏。
下圖是一些游戲場景的截圖:
經(jīng)過這個(gè)介紹,你的腦海中對(duì)這個(gè)游戲有了大致的印象袍榆。
接下來胀屿,就介紹蘋果對(duì)這類游戲塘揣,在游戲設(shè)計(jì)方面的一些建議包雀。
1.2 多人參與的AR游戲設(shè)計(jì)基本原則
1.2.1 鼓勵(lì)玩家移動(dòng),增加游戲的沉浸式體驗(yàn)
Encourage player movement to make gameplay more immersive
在 SwiftShot中亲铡,因?yàn)樵谀愫蛿橙藦椆g有障礙物體才写,你可能會(huì)發(fā)現(xiàn),你很難直接射擊敵人的彈弓奖蔓。但你可以移動(dòng)到其他彈弓位置赞草,與你的隊(duì)友一起找到贏得比賽的最佳角度。
1.2.2 不鼓勵(lì)劇烈的吆鹤、大范圍的移動(dòng)
Don’t encourage too much movement
玩這類游戲,大家都在同一個(gè)相對(duì)狹小的空間中,集中注意力的盯著設(shè)備屏幕魄缚。
如果游戲過程中總移動(dòng)的太猛烈框往,會(huì)導(dǎo)致隊(duì)員撞在一起,這樣就降低了AR游戲的沉浸體驗(yàn)知允,分分鐘出戲撒蟀,甚至還有受傷和摔壞設(shè)備的風(fēng)險(xiǎn)。
所以在 SwiftShot 中温鸽,一旦你選定要使用某一個(gè)彈弓之后保屯,你必須仔細(xì)瞄準(zhǔn),保持設(shè)備穩(wěn)定涤垫,才能射出一個(gè)好球姑尺,所以你不會(huì)因?yàn)榈皖^盯著設(shè)備,頻繁移動(dòng)蝠猬,而導(dǎo)致和其他玩家發(fā)生身體碰撞切蟋。
1.2.3 促進(jìn)溝通和社交
Foster social engagement
多人AR游戲?qū)⑼婕揖奂谕粋€(gè)空間,為他們提供新的娛樂方式吱雏。
使用AR觀看比賽敦姻,也為觀眾提供了不同的視角和新的體驗(yàn)瘾境。NBA 就在積極嘗試用戶 AR 觀賽。
保持游戲簡短镰惦,但通過變化增加樂趣
Keep games short, but add fun through variation
通過下午和同事的體驗(yàn)這個(gè)游戲迷守,發(fā)現(xiàn)玩這個(gè)游戲是比較累的,因?yàn)槟阈枰酥O(shè)備旺入,長時(shí)間保持在一個(gè)可能你并不是很舒適的姿勢(比如半蹲)兑凿,來完成球的發(fā)射。手機(jī)還相對(duì)好一點(diǎn)茵瘾,抱著 iPad 真的特別累礼华。
所以 SwiftShot 保持短暫的鼓勵(lì)派對(duì)式游戲,玩家可以經(jīng)常進(jìn)入和退出游戲拗秘。
它還提供了幾種游戲板布局和特殊效果圣絮,這樣每次進(jìn)入游戲都可以有所不同,避免審美疲勞雕旨。
1.3 如何在設(shè)備間共享數(shù)據(jù)
設(shè)備間共享數(shù)據(jù)包含兩方面的內(nèi)容:
- 如何獲取包含帶有空間信息的數(shù)據(jù)扮匠,ARWorldMap 會(huì)幫我們完成這項(xiàng)內(nèi)容;
- 數(shù)據(jù)如何在設(shè)備間傳遞凡涩,通過 MultipeerConnectivity 可以實(shí)現(xiàn)棒搜。
結(jié)合二者,蘋果實(shí)現(xiàn)了多用戶之間的數(shù)據(jù)共享和游戲交互活箕。
ARWorldMap
在 SwiftShot 中力麸,當(dāng)一個(gè)玩家點(diǎn)擊 Host 按鈕創(chuàng)建游戲面板之后,ARKit會(huì)自動(dòng)創(chuàng)建一個(gè) ARWorldMap育韩,其中包含ARKit對(duì)游戲板周圍區(qū)域的空間理解克蚂。
當(dāng)其他玩家加入進(jìn)來時(shí),會(huì)收到一份 ARWorldMap 副本座慰,并以此為依據(jù)構(gòu)建多人一起玩耍的 AR 世界陨舱。
有關(guān)設(shè)置多人AR會(huì)話的更多詳細(xì)信息,請(qǐng)參閱 Creating a Multiuser AR Experience版仔。
MultipeerConnectivity
SwiftShot使用 MultipeerConnectivity
框架在設(shè)備間建立連接游盲,并發(fā)送游戲數(shù)據(jù)。
關(guān)于 MultipeerConnectivity的更多詳細(xì)信息蛮粮,可查看蘋果的官方文檔益缎,后續(xù)我也會(huì)寫相關(guān)的文檔來做詳細(xì)介紹。
關(guān)于 MultipeerConnectivity 的內(nèi)容然想,后面用一篇文章專門來介紹莺奔。
注意: 使用Multipeer在設(shè)備之間直接傳輸數(shù)據(jù),這些數(shù)據(jù)包括你的本地位置信息 变泄,通過設(shè)置
MCEncryptionPreference.required
加密令哟,它也可以防止竊聽恼琼。蘋果在用戶數(shù)據(jù)隱私方面還是做的很好的。
2. AR Quick Look Gallery
iOS 12支持直接在Safari中預(yù)覽3D模型屏富,換句話說晴竞,也就是Safari 添加了對(duì)ARKit的支持。
下面狠半,我們來體驗(yàn)一下這個(gè)功能噩死。
在Safari下打開官方提供的3D模型鏈接。
打開鏈接之后神年,頁面展示如下:
系統(tǒng)內(nèi)置了一些3D模型已维,供我們預(yù)覽:
在Safari中點(diǎn)擊收音機(jī),頁面加載模型可能需要一點(diǎn)時(shí)間已日,加載完成后垛耳,如下圖所示:
可以在屏幕上縮放和移動(dòng)這個(gè)模型,點(diǎn)擊頂部的 AR 選項(xiàng)捂敌,可以切換到 AR 預(yù)覽模式:
效果如下:
很逼真吧艾扮!
這項(xiàng)功能為設(shè)計(jì)師和開發(fā)者既琴,提供了在手機(jī)里預(yù)覽模型的便捷方法占婉!
小結(jié)
本文通過蘋果提供的官方實(shí)例,剖析了AR對(duì)支持多人同時(shí)參與方面甫恩,官方提供的一些設(shè)計(jì)思路和實(shí)現(xiàn)原理逆济;體驗(yàn)了在Safari中直接預(yù)覽3D模型的功能。
如果您只是一個(gè)普通玩家磺箕,并非開發(fā)者奖慌,看到這里,應(yīng)該對(duì)ARKit2.0有了一個(gè)大致了解松靡,希望這些以后能夠有助于您體驗(yàn)AR項(xiàng)目简僧。如果您對(duì)iOS 12beta版本感興趣,需要升級(jí)beta版本系統(tǒng)或者體驗(yàn)SwiftShot游戲雕欺,您可以私信我岛马,有時(shí)間了會(huì)幫您解答。
如果您是一個(gè)開發(fā)者屠列,這僅僅是一道開胃菜啦逆,下一篇,會(huì)從代碼角度結(jié)合ARKit2.0新增的API笛洛,詳細(xì)剖析 SwiftShot 的各個(gè)部分實(shí)現(xiàn)原理夏志,您也可以翻閱我其他的關(guān)于 ARKit 和 SceneKit 的博客,獲取更多信息苛让。