除了Vision Pro之外,更普及的 iPad 和 iPhone 也可以執行AR應用,想要開發AR應用,目前在Apple軟體框架上有兩種選擇,一是 SceneKit + ARKit,第二種是 RealityKit + ARKit,這其中 SceneKit 最早(2012年)出現,最初是用來開發3D遊戲,所以能夠操作各種3D物件,可說是空間運算的第一步,我們就先從SceneKit開始學起。
SceneKit, ARKit, RealityKit 三者的發布時間關係如下圖:
從上圖可以看出,SceneKit 發布時間甚至比Swift/SwiftUI還早,剛開始得用Objective-C語言來開發3D應用,後來推出 SCNView (SceneKit 物件的字首大多為 SCN 開頭)用於 Swift + UIKit,2019年之後再新增 SceneView 搭配 SwiftUI。
用 SceneKit 寫的3D遊戲,最好的例子就是Swift Playgrounds所附的官方遊戲,例如「開始編寫程式碼」、「Blu的冒險」…等等。底下我們就先用 SceneView + SwiftUI 來顯示一個簡單的3D模型。
在 SceneKit 中,所有的虛擬物件會用樹狀結構連在一起,每個虛擬物件稱為一個「節點(node)」,對應 SCNNode 物件類型,每個節點的屬性包含虛擬物件的形狀、外觀、空間中的座標…等等,所有節點合在一起稱為「場景(scene)」,對應 SCNScene 物件類型。
所以要用 SceneKit 開發3D應用程式,簡單地說,就是先設定好各式各樣的3D模型及虛擬物件,成為一個個節點,然後加入到同一場景中,就可以透過 SceneView 將整個(或部分)場景顯示出來。概念如下圖所示:
上面「場景概念圖」中,有3種特殊節點值得注意: