Updated: August 19, 2023.
SceneKit
Apple SceneKit framework loads 3D models for ARKit
and VR apps. SceneKit supports the following 3D formats with corresponding material files:
.dae
(supports animations)
.obj
(single-frame) with its texture and .mtl
file
.abc
(only single-frame supported)
.usdz
(supports animations)
.scn
(native SceneKit's format, supports animations)
RealityKit
Apple RealityKit framework loads 3D models for AR and VR apps. You can prototype a content for RealityKit in a standalone app called Reality Composer Pro. RealityKit supports the following 3D formats:
.usdz
(supports animations and dynamics)
.reality
(supports animations and dynamics, optimized for a faster loading)
.rcproject
Xcode 14– (supports animations and dynamics)
.realitycomposerpro
Xcode 15+
Additionally you can use Terminal's usdzconvert command to generate .usdz
from the following formats:
.obj
.glTF
.fbx
.abc
.usda
.usdc
.usd
And, of course, you can use Reality Converter app with its simple GUI.
Sceneform
Pity but since June 2020 Sceneform
has been archived and no longer maintained by Google.
Google Sceneform handles 3D models for ARCore
SDK. Sceneform supports the following 3D assets with their material dependencies:
.obj
(with its .mtl
dependency)
.glTF
(animations not supported)
.fbx
(with or without animations)
.sfa
(ascii asset definition, deprecated in Sceneform 1.16)
.sfb
(binary asset definition, deprecated in Sceneform 1.16)
SceneKit, RealityKit, Sceneform and Reality Composer Pro support Physically Based Rendering.
ARKit and ARCore
But what's the role of ARKit and ARCore then?
These two AR modules don't care about importing and rendering of a 3D geometry. They are only responsible for tracking (world, image, face, geo, etc) and scene understanding (i.e. plane detection, hit-testing & raycasting, depth perception, light estimation, and geometry reconstruction).