
Apple AR Quick Look
A gallery of 3d models to play with from Apple. It looks like Apple’s preferred file type for ARKit on iOS (as of iOS 12) is their own usdz:
https://developer.apple.com/augmented-reality/quick-look/
ARKit itself doesn’t read any 3D formats. Only rendering engines can do it. SceneKit and RealityKit frameworks that are satellites of ARKit 4.0, so they can read in poly geometry supporting several popular 3D file formats at the moment:
- Alembic interchange file format .abc
- Collada’s Digital Asset Exchange .dae
- Wavefront Object .obj along with material .mtl
- Polygon File Format .ply
- Reality Composer and RealityKit formats .rcproject and .reality
- SceneKit Scene .scn
- Standard Tessellation Language (Stereolithography File Format) .stl
- Pixar’s Zipped Universal Scene Description (Mobile)* .usdz
- Pixar’s ASCII Universal Scene Description .usda
- Pixar’s Binary Universal Scene Description .usd and .usdc
AutoDesk Fusion 360 Native Export
- FBX – Contains texture data while OBJ and STL do not.
- OBJ – Fusion 360 does not export texture data in the OBJ format.
- STL – STL files are popular in the maker community because you can send them to a 3d printer.
Converting files to USDZ
Apple – Reality Converter Beta 3
https://developer.apple.com/download/
In order to import AutoDesk FBX files, you will need to install the FBX Python SDK from AutoDesk and restart Reality Converter.
https://www.autodesk.com/developer-network/platform-technologies/fbx-sdk-2020-0
xCode – Apple USDZ converter Python Script
In xCode
Open the file in Xcode, then go to File > Export… and choose the file type (.usdz
is ‘Universal Scene Description (Mobile)’):
In Terminal
usdzconvert ~/Desktop/file.obj
SimLab USDZ Exporter for Autodesk® Fusion 360™
https://apps.autodesk.com/FUSION/en/Detail/Index?id=6247954490410749585&appLang=en&os=Mac
- Starting at $199.00
Substance Painter by Adobe – Photoshop for 3D Objects
- Starting at $19.90 a Month
xCode SceneKit Setup
The best way to use those formats is to initialize SCNScene from MDLAssset like this:
import SceneKit.ModelIO
guard let url = Bundle.main.url(forResource: file, withExtension: "usdz") else {
fatalError()
}
let mdlAsset = MDLAsset(url: url)
let scene = SCNScene(mdlAsset: mdlAsset)
Leave a Reply