王紫涵 付崢
【摘要】本項(xiàng)目采用swift語(yǔ)言,利用iOS的ARKit框架,以Xcode等為開發(fā)工具,設(shè)計(jì)出一款A(yù)pp,通過(guò)三維建模定義虛擬景象在現(xiàn)實(shí)世界的成像信息,輔以場(chǎng)景解說(shuō)等真實(shí)還原天體系統(tǒng)全貌圖,通過(guò)對(duì)ARKit框架添加內(nèi)容增加球形模型,加上圖片渲染形成“掌上銀河”,點(diǎn)擊AR生成的虛擬圖像后會(huì)進(jìn)行場(chǎng)景解讀,提升用戶體驗(yàn)。全程除移動(dòng)手機(jī)設(shè)備無(wú)額外硬件負(fù)擔(dān),僅對(duì)模型進(jìn)行更迭即可,易于維護(hù)和擴(kuò)展內(nèi)容。
【關(guān)鍵詞】掌上銀河 ARKitswift
一、引言
增強(qiáng)現(xiàn)實(shí)技術(shù)(Augmented Reality,以下簡(jiǎn)稱AR)是指通過(guò)手機(jī),平板等多媒體設(shè)備輔以三維建模、實(shí)時(shí)視頻顯示以及傳感器的融合,達(dá)到真實(shí)世界信息和虛擬世界信息“無(wú)縫”融合的技術(shù)。未來(lái)AR將在很大程度上改變?nèi)祟惿睿强萍及l(fā)展的必然趨勢(shì)。人們對(duì)現(xiàn)實(shí)與虛擬的融合的探索充滿著熱情,同時(shí),也渴望探索神秘的宇宙。因此,我們通過(guò)三維建模定義虛擬景象在現(xiàn)實(shí)世界的成像信息,輔以實(shí)時(shí)視頻,場(chǎng)景解說(shuō)等真實(shí)還原天體系統(tǒng)全貌圖。以AR這門新興技術(shù)融合神秘的宇宙學(xué),不但形象立體地展現(xiàn)了太陽(yáng)系,也滿足了人們對(duì)宇宙的好奇。
二、實(shí)現(xiàn)原理
先捕捉現(xiàn)實(shí)世界,獲取攝像機(jī)拍攝的一幀一幀的圖像序列,將獲取的圖像序列進(jìn)行處理,輸出包含有現(xiàn)實(shí)世界場(chǎng)景的所有信息。接著進(jìn)行世界追蹤,ARKit 使用視覺(jué)慣性測(cè)距技術(shù),對(duì)攝像頭采集到的圖像序列進(jìn)行計(jì)算機(jī)視覺(jué)分析,并且與設(shè)備的運(yùn)動(dòng)傳感器信息相結(jié)合。ARKit 會(huì)識(shí)別出每一幀圖像中的特征點(diǎn),并且根據(jù)特征點(diǎn)在連續(xù)的圖像幀之間的位置變化,然后與運(yùn)動(dòng)傳感器提供的信息進(jìn)行比較,最終得到高精度的設(shè)備位置和偏轉(zhuǎn)信息,檢測(cè)出現(xiàn)實(shí)世界的水平面,當(dāng)攝像機(jī)不斷移動(dòng)時(shí),檢測(cè)到的平面也會(huì)不斷的變化。當(dāng)點(diǎn)擊屏幕時(shí),ARKit會(huì)發(fā)射一個(gè)射線,將射線遇到的所有有用信息返回,返回結(jié)果以離屏幕距離進(jìn)行排序,離屏幕最近的排在最前面,獲取當(dāng)前捕捉到的圖像中某點(diǎn)擊位置有關(guān)的信息。然后基于當(dāng)前捕捉到的圖像的曝光等信息,給出一個(gè)光照強(qiáng)度值,將攝像機(jī)捕捉到的真實(shí)世界的視頻作為背景,將世界追蹤到的相機(jī)狀態(tài)信息實(shí)時(shí)更新到AR world中的相機(jī),處理光照估計(jì)的光照強(qiáng)度,實(shí)時(shí)渲染虛擬世界物體在屏幕中的位置。
三、實(shí)現(xiàn)方法
本作品包括基于ARKit的場(chǎng)景搭建模塊、設(shè)置文稿解說(shuō)內(nèi)容、三維建模和服務(wù)器架構(gòu)四個(gè)模塊。
(一)AR場(chǎng)景搭建
即首先使用加載AR的3D場(chǎng)景視圖ARSCNView,并且初始化節(jié)點(diǎn),再通過(guò)管理會(huì)話追蹤配置ARSessionConfiguration實(shí)現(xiàn)場(chǎng)景的追蹤并且返回一個(gè)ARFrame,根據(jù)2D坐標(biāo)點(diǎn)搜索3D模型,它主要目的就是負(fù)責(zé)追蹤相機(jī)在3D世界中的位置以及一些特征場(chǎng)景的捕捉。SCNScene是AR場(chǎng)景中的場(chǎng)景,場(chǎng)景中是由許多SCNNode節(jié)點(diǎn)組成,一個(gè)SCNScene可以包含多個(gè)SCNNode子節(jié)點(diǎn),一個(gè)子節(jié)點(diǎn)SCNNode可以有多個(gè)childNode,而一個(gè)節(jié)點(diǎn)就是一個(gè)3D模型,然后將節(jié)點(diǎn)即3D模型添加到Scene中,初始化完成后開啟AR會(huì)話,相機(jī)開始捕獲真實(shí)世界,通過(guò)camera獲取真實(shí)世界的信息,將獲取到的真實(shí)世界信息進(jìn)行理解,基于場(chǎng)景理解,將虛擬世界渲染到真實(shí)世界的指定位置,在屏幕上展示增強(qiáng)現(xiàn)實(shí)的世界,通過(guò)點(diǎn)擊屏幕的方式和虛擬世界進(jìn)行交互,虛擬世界響應(yīng)交互后,重新渲染,移動(dòng)設(shè)備時(shí),捕獲到真實(shí)世界的變化,重新理解場(chǎng)景、重新渲染AR世界。
(二)設(shè)置音樂(lè)與解說(shuō)內(nèi)容
針對(duì)航天文化做出概述,設(shè)計(jì)AR模式為,第一次打開App時(shí)自動(dòng)彈出,可選擇關(guān)閉。針對(duì)每一個(gè)天體做出解釋性文字,在屏幕點(diǎn)擊天體時(shí)彈出解說(shuō)內(nèi)容,可選擇播放語(yǔ)音解說(shuō)內(nèi)容或者視頻,播放背景音樂(lè),可選擇關(guān)閉。
(三)三維建模
利用SceneKit進(jìn)行3D模型創(chuàng)建,它是iOS中用來(lái)開發(fā)3D模型的引擎,包含了如光照、模型、材質(zhì)、攝像機(jī)等高級(jí)引擎特性,可以基于它做出很多逼真的3D物理模型。為節(jié)點(diǎn)增加相應(yīng)的貼圖,設(shè)置三維坐標(biāo),利用SceneNode提供的8種屬性用來(lái)設(shè)置模型材質(zhì),例如為地球貼圖時(shí),為地球節(jié)點(diǎn)的diffuse、emission、specular屬性分別提供一個(gè)對(duì)應(yīng)的圖像,建成一個(gè)趨近真實(shí)的三維地球模型。添加動(dòng)畫,即星球節(jié)點(diǎn)的自轉(zhuǎn)以及公轉(zhuǎn)動(dòng)畫,并且為太陽(yáng)添加光暈、為地球添加云層,為其它星體也添加對(duì)應(yīng)的特性動(dòng)畫,將公轉(zhuǎn)與自轉(zhuǎn)剝離開,使用節(jié)點(diǎn)之間的層級(jí)結(jié)構(gòu)處理旋轉(zhuǎn)。
(四)服務(wù)器架構(gòu)
在阿里云上搭建Apache,MySQL環(huán)境。設(shè)置存儲(chǔ)服務(wù)器和計(jì)算服務(wù)器,創(chuàng)建云端數(shù)據(jù)庫(kù)資源包,將航天文化知識(shí)導(dǎo)入知識(shí)數(shù)據(jù)表,將背景音樂(lè)導(dǎo)入音樂(lè)數(shù)據(jù)表,以及將天體解說(shuō)內(nèi)容導(dǎo)入解說(shuō)數(shù)據(jù)表,移動(dòng)終端將捕獲的信息進(jìn)行分析計(jì)算,識(shí)別匹配后從數(shù)據(jù)庫(kù)中下載數(shù)字信息進(jìn)行虛實(shí)融合。建好服務(wù)器后將程序編譯進(jìn)移動(dòng)端開始運(yùn)行。
四、小結(jié)
從神舟十號(hào)任務(wù)以后,中國(guó)的載人航天技術(shù)已經(jīng)成熟,已成航天大國(guó),這時(shí)為國(guó)人普及太空的知識(shí)顯得尤為重要。而隨著智能設(shè)備的普及,人們對(duì)于獲取信息的方式已經(jīng)不滿足于傳統(tǒng)的二維模型。相較于書籍,增強(qiáng)現(xiàn)實(shí)技術(shù)能為學(xué)習(xí)者提供近乎真實(shí)的虛實(shí)相融合的學(xué)習(xí)場(chǎng)景,以交互現(xiàn)實(shí)世界的方式更能滿足用戶的體驗(yàn)感與趣味性,在青少年教育方面效果更佳,能達(dá)到弘揚(yáng)航天文化的目的。在國(guó)內(nèi)AR起步比較晚,前期大多是以高校研究生,因而從開始開發(fā)到初步完成,由于這門技術(shù)并不是很多人都會(huì),可參考的資料很少,只能搜集一些零零散散的資料進(jìn)行整合學(xué)習(xí)。值得慶幸的是ARKit 提供了設(shè)備動(dòng)作追蹤、相機(jī)場(chǎng)景捕獲和高級(jí)場(chǎng)景處理,并讓 AR 元素的展示變得極為便利,從而大大簡(jiǎn)化了建立 AR app的開發(fā)難度。增強(qiáng)現(xiàn)實(shí)技術(shù)作為一種沉沒(méi)式的學(xué)習(xí)方式,可以將豐富的資源信息和其他數(shù)據(jù)整合到用戶能夠觀察到的現(xiàn)實(shí)場(chǎng)景中,為師生提供身臨其境的學(xué)習(xí)環(huán)境,激發(fā)學(xué)生的學(xué)習(xí)興趣,提升主觀積極性。實(shí)時(shí)交互的特點(diǎn)削弱了位置、空間的限制,教師可以在課上或遠(yuǎn)程指導(dǎo)學(xué)生,彌補(bǔ)了現(xiàn)實(shí)環(huán)境中設(shè)備的不足,實(shí)現(xiàn)資源共享。幫助青少年換種新方式認(rèn)識(shí)新世界,親身感受原本只能靠想象的事物。
參考文獻(xiàn):
[1]員凱.ARKit開發(fā)實(shí)戰(zhàn)[M].電子工業(yè)出版社:北京,2018.
[2]劉明陽(yáng).Swift語(yǔ)言實(shí)戰(zhàn)精講(第二版)[M].人民郵電出版社:北京,2016.
[3]王涌天,陳靖,程德文.增強(qiáng)現(xiàn)實(shí)技術(shù)導(dǎo)論[M].科學(xué)出版社:北京,2015.
基金項(xiàng)目:課題資助:南昌航空大學(xué)第14屆三小課題。