該文章為吃貨傳說原創(chuàng),轉(zhuǎn)載請注明出處。
4.18正式版好像悄么聲的發(fā)布了,不再是預(yù)覽版了。最近一直在和ARKit有關(guān)的東西,也做了一個小項(xiàng)目。過程中發(fā)現(xiàn)國內(nèi)可以查閱的資料太少太少了,甚至翻墻到國外也不是那么多??赡芤?yàn)闀r間還很短吧,現(xiàn)在從測試版出來大概就幾個月而已。不過ARKit作為蘋果主推的一個工具,在日后勢必要引領(lǐng)一番潮流的,不如現(xiàn)在趕緊先混個臉熟吧!
這篇文章展示了如何在4.18中使用ARKit插件創(chuàng)建一個最最最最最最最最簡單的AR項(xiàng)目。
4.17和4.18中ARKit有較大的區(qū)別,這篇文章不適用于4.17
那么我們開始吧!
1. 創(chuàng)建項(xiàng)目
首先我們來創(chuàng)建一個純藍(lán)圖項(xiàng)目。為什么要純藍(lán)圖項(xiàng)目呢,因?yàn)锳RKit默認(rèn)只提供了幾個藍(lán)圖方法。。。當(dāng)然,你可以去修改插件的源碼來暴露更多的方法給藍(lán)圖。
創(chuàng)建項(xiàng)目時選擇Blueprint->Blank,設(shè)置成移動端,質(zhì)量選擇Scalable 3D or 2D,No Starter Content(如果有需要可以在項(xiàng)目中添加一個Mobile Starter Content)。
2. 啟用ARKit插件
打開Plugins設(shè)置,找到Augmented Reality,勾上Apple ARKit,如果之前沒勾的話,需要重啟一下項(xiàng)目。簡單易懂,不上圖了
3. 創(chuàng)建Pawn
創(chuàng)建一個Pawn類(MyPawn),在根組件下添加一個Camera Component,編譯,保存,關(guān)掉。
4. 創(chuàng)建GameMode
創(chuàng)建一個GameMode類(MyGameMode),把Default Pawn設(shè)置成MyPawn,編譯,保存,關(guān)掉。然后在World Settings里把GameMode Override設(shè)置成MyGameMode。
5. 創(chuàng)建一個我們要顯示的物體
創(chuàng)建一個Actor類(ARActor),在根節(jié)點(diǎn)下添加一個Cube,調(diào)整一下大小,把Scale設(shè)置成0.1吧,這樣看起來不會太大。編譯,保存,關(guān)掉。
6. 設(shè)置場景中的Actors
刪除默認(rèn)場景中的Actors,只留下PlayerStart,Skylight和Light Source,剩下的統(tǒng)統(tǒng)都干掉,并且不要忘了把PlayerStart的位置設(shè)置到0,0,0上。你應(yīng)該能看到漆黑一片的場景,最后不要忘了保存當(dāng)前關(guān)卡(ARKitMap)
7. 編輯MyPawn
添加一個Input Touch事件,然后和一個叫做Hit Test at Screen Position Tracking Space的節(jié)點(diǎn)連起來,這個節(jié)點(diǎn)在Apple ARKit分類下。Screen Position可以從Input Touch的Location針腳連過來,會自動又Vector轉(zhuǎn)成Vector2D。Types提供了5個枚舉選擇,我們就選擇默認(rèn)的None好了,這5種枚舉的具體不同可以去查閱官方的資料,這里不贅述。
這個節(jié)點(diǎn)也是ARKit的核心方法,用來檢測真實(shí)世界的平面。從返回的數(shù)據(jù) —— 一個Apple ARKit Hit Test Result Structures的數(shù)組,我們可以看到,該方法是支持多平面檢測的,不過目前我們只用到一個面就夠了。
接下來Break這個結(jié)構(gòu)體,我們可以看到如下信息:
Type——Hit Test類型
Distance——相機(jī)與Intersection的距離
Transform——Intersection的Transform信息
Anchor——錨點(diǎn)(只有在Existing Plane模式下可用)
簡單來說,拿到Transform之后,就可以在這個位置上生成我們的ARActor了,在此,我們只考慮Location的問題,Rotation和Scale請根據(jù)自己的需要調(diào)整。
那么程序上的事其實(shí)到此就結(jié)束了,接下來就是對項(xiàng)目進(jìn)行設(shè)置,好讓它在設(shè)備上跑起來。
8. 項(xiàng)目設(shè)置
1. 打開項(xiàng)目設(shè)置,在Description分類中的最下面勾上Start in AR。
2. 在Maps&Modes中將Default Maps設(shè)置成ARKitMap(就是我們剛剛保存的那個),Default GameMode換成MyGameMode
3. 打開iOS分類,設(shè)置好Mobile Provision,Certificate,Bundle Information。
如果你還不知道怎么在Windows PC打包或運(yùn)行iOS App,請看我的另外兩篇文章:
然后在Rendering目錄下把Max Metal Shader Standard To Target 選成 Metal v1.2 或 v2.0;
OS Info中的Minimum iOS Version選成11.0;
如果你用的是Windows PC,那么Remote Build也要設(shè)置好;
在Orientation中只勾選Supports Landscape Right Orientation;
在Extra PList Data中輸入:
<key>NSCameraUsageDescription</key>\n <string>UE4 需要攝像機(jī)使用權(quán)限才能使用 ARKit。</string>\n
這是為了獲取蘋果設(shè)備的攝像機(jī)使用權(quán)限
這些基本設(shè)置完成后就可以運(yùn)行了。
9. 在設(shè)備上運(yùn)行
在頂部菜單選擇Launch旁邊的下拉箭頭,選擇Project Launcher,點(diǎn)擊右上角的Advanced。然后找到All_iOS_On_XXXX這一行,右邊的Data Build選擇By the book,這樣的話所有內(nèi)容在運(yùn)行前就會被烘焙好。
點(diǎn)擊Launch。別忘了把手機(jī)連到PC上。抽根煙喝口茶,等所有的項(xiàng)目都打上勾,就可以運(yùn)行啦
10. 運(yùn)行效果
打開App后,會提示你需要相機(jī)的權(quán)限,允許后就可以看到畫面了。然而分辨率會比較低,這是ARKit的緣故。好了,現(xiàn)在找到一個平面,然后點(diǎn)一下,就可以看到我們可愛的Cube了。如果沒有出來,就稍等一下,檢測平面是需要時間的。
