Search code examples
iosscenekitaugmented-realityarkit

What does art.scnassets stand for?


I am looking into ARKit (iPhone framework), and one of the folders that comes for free with an ARKit project is a folder with the title: art.scnassets. What do these stand for: art.? .scn? .dea? tex?


Solution

  • ARKit doesn't draw anything. It provides the "reality" part of augmented reality — that is, it tells your app where the real world is relative to the device. After that, it's up to you and your preferred rendering technology to handle the "augmented" part — that is, drawing 3D content that looks like it's in the real world. SceneKit is one rendering technology... one which happens to be built into iOS and work closely with ARKit (but there are others), so it's the one that Apple's template and sample projects tend to use.

    So, your question is applicable to any SceneKit project. As for what the names mean...

    • art stands for Art. As in, visuals that you probably hire an artist to create, because most of us programmer types are terrible at drawing, much less 3D modeling and texturing and animation and such. 😉 In this project it's just a folder name, and you can use any folder name you want.

    • scn is for SceneKit. The .scn file format is for storing 3D models, textures, scene descriptions, animations, etc, in a way that preserves all SceneKit-specific features and is optimized for deployment and rendering using SceneKit, so it's usually the best way to deploy art for a SceneKit (or ARKit+SceneKit) app.

    • .dae, or Digital Asset Exchange, is a more broadly supported format for 3D assets, which many 3D authoring packages can export.

    • A folder with the .scnassets suffix is one that's treated specially by Xcode when it builds your app. You can put any asset format (dae, obj, etc) in there during development, along with supplementary files like texture images, and at build time Xcode converts the assets to .scn format and optimizes them for the target device.

    • tex is presumably a folder name within that project's .scnassets folder. (Maybe for textures?) You can have any folder structure you like inside an .scnassets folder.