You mentioned three approaches: DAE files, SCN files, and programmatically generated geometry. SCN and DAE are not the same thing. DAE is an XML format (compressed, for iOS targets, using Apple's internal scntool). SCN is an archived NSObject
.
The fastest performance will come from using a SceneKit Scene Document (.SCN file).
If your model is already built in a 3D tool, you can import the DAE file and save it as SCN using Xcode's scene editor (how to convert .dae to .scn files in SceneKit). You can create this programmatically from your SCNScene instance with NSSecureCoding.
Use SCNGeometrySource
(or SCNGeometry
) if you have to generate your scene programmatically. But if you can build it before your app ships, you should write an auxiliary program to do the scene creation, and then archive with NSSecureCoding. Then you'll have a .SCN file you can embed in the final product.
Take a look at the Model I/O framework for more file format options (specifically MDLAsset
).