ARKit如何將太陽(yáng)系裝進(jìn)iPhone(一)

轉(zhuǎn)載請(qǐng)注明原作者

第二篇文章鏈接:如何用ARKit把太陽(yáng)系裝在你的iPhone中(二)

? ? 關(guān)注AR/VR也有一段時(shí)間了跋理,從一開(kāi)始微軟的HoloLens致开,谷歌眼鏡,到蘋(píng)果上次在WWDC上向開(kāi)發(fā)者們展示他們的AR方面的成果,微軟HoloLens高昂的價(jià)格讓人望而卻步瞒瘸,而谷歌眼鏡無(wú)疾而終,相較于前兩者熄浓,蘋(píng)果的AR技術(shù)只需要一臺(tái)iPhone情臭,成本降低了許多,開(kāi)發(fā)者大會(huì)上蘋(píng)果展示的幾個(gè)Demo效果也著實(shí)令我驚艷,于是閑暇時(shí)間就在網(wǎng)上找了些資料俯在,寫(xiě)了個(gè)小東西竟秫。


先上最終效果圖:

最終效果圖

演示視頻:http://www.bilibili.com/video/av12175891

1.開(kāi)發(fā)前準(zhǔn)備

?手機(jī)需要先安裝證書(shū)文件,不安裝無(wú)法獲取iOS beta版操作系統(tǒng)

證書(shū)文件

手機(jī)系統(tǒng)iOS 11 beta版

XCode 9 beta版

上述安裝包的下載地址:https://developer.apple.com/download/

2.接下來(lái)我們進(jìn)入Code階段

? 開(kāi)發(fā)一個(gè)AR項(xiàng)目跷乐,你需要用到ARKit和SceneKit這兩個(gè)庫(kù)肥败,ARKit用來(lái)捕捉現(xiàn)實(shí)場(chǎng)景參數(shù),SceneKit則用來(lái)在AR視圖中加載顯示3D模型愕提。

AR場(chǎng)景中使用的是3維坐標(biāo)系如圖馒稍,你可以通過(guò)調(diào)節(jié)z軸的參數(shù)來(lái)調(diào)節(jié)物體距離遠(yuǎn)近。

AR的三維坐標(biāo)系


1) 首先我們需要使用初始化ARSCNView浅侨,ARSCNView是用來(lái)加載AR的3D場(chǎng)景視圖


- (ARSCNView*)arSCNView


{


if(_arSCNView!=nil) {


return_arSCNView;


}


_arSCNView= [[ARSCNViewalloc]initWithFrame:self.view.bounds];


//綁定SCNView的session


_arSCNView.session=self.arSession;


//自適應(yīng)環(huán)境光照度纽谒,過(guò)渡更平滑


_arSCNView.automaticallyUpdatesLighting=YES;


//初始化節(jié)點(diǎn),


[self initNode];


return_arSCNView;


}


2) ?ARSession通過(guò)管理ARSessionConfiguration實(shí)現(xiàn)場(chǎng)景的追蹤并且返回一個(gè)ARFrame


- (ARSession*)arSession


{


if(_arSession!=nil)


{


return_arSession;


}


_arSession= [[ARSessionalloc]init];


return_arSession;


}


3) ?ARSessionConfiguration(會(huì)話追蹤配置)主要目的就是負(fù)責(zé)追蹤相機(jī)在3D世界中的位置以及一些特征場(chǎng)景的捕捉仗颈,需要配置一些參數(shù)


- (ARSessionConfiguration*)arSessionConfiguration


{


?if(_arSessionConfiguration!=nil) {


?return_arSessionConfiguration;


?}


?//1.創(chuàng)建世界追蹤會(huì)話配置(使用ARWorldTrackingSessionConfiguration效果更加好)佛舱,需要A9芯片支持


?ARWorldTrackingSessionConfiguration*configuration = ? ? ? ?[[ARWorldTrackingSessionConfigurationalloc]init];


?//2.設(shè)置追蹤方向(追蹤平面,后面會(huì)用到)


?configuration.planeDetection = ARPlaneDetectionHorizontal;


?_arSessionConfiguration= configuration;


?//3.自適應(yīng)燈光(相機(jī)從暗到強(qiáng)光快速過(guò)渡效果會(huì)平緩一些)


?_arSessionConfiguration.lightEstimationEnabled=YES;


?return_arSessionConfiguration;


}


4) ? SCNScene是AR場(chǎng)景中的場(chǎng)景挨决,場(chǎng)景中是由許多SCNNode節(jié)點(diǎn)組成请祖,SCNNode是一個(gè)個(gè)3D模型。

? 例如我們這個(gè)例子中需要用到的節(jié)點(diǎn)有太陽(yáng)脖祈、地球肆捕、月球,可以new三個(gè)SCNNode


_sunNode = [SCNNodenew];


_sunNode.geometry= [SCNSpheresphereWithRadius:2.5];


為了使太陽(yáng)更加逼真盖高,我們需要給sunNode增加紋理


//太陽(yáng)貼圖


_sunNode.geometry.firstMaterial.multiply.contents=@"art.scnassets/earth/sun.jpg";


_sunNode.geometry.firstMaterial.diffuse.contents=@"art.scnassets/earth/sun.jpg";


_sunNode.geometry.firstMaterial.multiply.intensity=0.5;


_sunNode.geometry.firstMaterial.lightingModelName=SCNLightingModelConstant;


_sunNode.geometry.firstMaterial.multiply.wrapS=


_sunNode.geometry.firstMaterial.diffuse.wrapS=


_sunNode.geometry.firstMaterial.multiply.wrapT=


_sunNode.geometry.firstMaterial.diffuse.wrapT=SCNWrapModeRepeat;


同時(shí)地球慎陵,月球都同太陽(yáng)的創(chuàng)建方法。接下來(lái)我們將sunNode節(jié)點(diǎn)添加到Scene中


//設(shè)置Node的三維坐標(biāo)


[_sunNode setPosition:SCNVector3Make(0,5, -20)];


//將sunNode節(jié)點(diǎn)添加到scene中


[self.arSCNView.scene.rootNodeaddChildNode:_sunNode];


5) ?初始化工作做好之后喻奥,接下來(lái)開(kāi)啟場(chǎng)景捕捉


//開(kāi)啟AR會(huì)話席纽,相機(jī)開(kāi)始捕捉


[self.arSessionrunWithConfiguration:self.arSessionConfiguration];


6) ?創(chuàng)建工作基本完成,接下來(lái)就是如何讓這些模型動(dòng)起來(lái)了撞蚕,動(dòng)畫(huà)效果會(huì)在下一章講解润梯。

代碼實(shí)現(xiàn):https://github.com/miliPolo/ARSolarPlay(OC實(shí)現(xiàn))

? ? ? ? ? ? ? ? ??https://github.com/miliPolo/ARSolarPlaySwift(Swift實(shí)現(xiàn))

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

如果您覺(jué)得有價(jià)值,請(qǐng)?jiān)趃ithub賞個(gè)star甥厦,不勝感激纺铭。

如果有什么想交流的,歡迎私信刀疙。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末舶赔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子谦秧,更是在濱河造成了極大的恐慌竟纳,老刑警劉巖撵溃,帶你破解...
    沈念sama閱讀 218,755評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異蚁袭,居然都是意外死亡征懈,警方通過(guò)查閱死者的電腦和手機(jī)石咬,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)揩悄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人鬼悠,你說(shuō)我怎么就攤上這事删性。” “怎么了焕窝?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,138評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵蹬挺,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我它掂,道長(zhǎng)巴帮,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,791評(píng)論 1 295
  • 正文 為了忘掉前任虐秋,我火速辦了婚禮榕茧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘客给。我一直安慰自己用押,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,794評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布靶剑。 她就那樣靜靜地躺著蜻拨,像睡著了一般。 火紅的嫁衣襯著肌膚如雪桩引。 梳的紋絲不亂的頭發(fā)上缎讼,一...
    開(kāi)封第一講書(shū)人閱讀 51,631評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音坑匠,去河邊找鬼血崭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛笛辟,可吹牛的內(nèi)容都是我干的功氨。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼手幢,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼捷凄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起围来,我...
    開(kāi)封第一講書(shū)人閱讀 39,264評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤跺涤,失蹤者是張志新(化名)和其女友劉穎匈睁,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體桶错,經(jīng)...
    沈念sama閱讀 45,724評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡航唆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了院刁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糯钙。...
    茶點(diǎn)故事閱讀 40,040評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖退腥,靈堂內(nèi)的尸體忽然破棺而出任岸,到底是詐尸還是另有隱情,我是刑警寧澤狡刘,帶...
    沈念sama閱讀 35,742評(píng)論 5 346
  • 正文 年R本政府宣布享潜,位于F島的核電站,受9級(jí)特大地震影響嗅蔬,放射性物質(zhì)發(fā)生泄漏剑按。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,364評(píng)論 3 330
  • 文/蒙蒙 一澜术、第九天 我趴在偏房一處隱蔽的房頂上張望艺蝴。 院中可真熱鬧,春花似錦瘪板、人聲如沸吴趴。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,944評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)锣枝。三九已至,卻和暖如春兰英,著一層夾襖步出監(jiān)牢的瞬間撇叁,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,060評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工畦贸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留陨闹,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,247評(píng)論 3 371
  • 正文 我出身青樓薄坏,卻偏偏與公主長(zhǎng)得像趋厉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子胶坠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,979評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容