SceneKit pour Swift : Guide complet de la 3D sur Apple
SceneKit est un framework puissant pour la 3D, développé par Apple. Il offre aux développeurs une API de haut niveau pour créer, visualiser et animer des scènes tridimensionnelles sur toutes les plateformes Apple : iOS, macOS, tvOS et watchOS. Contrairement aux API graphiques de bas niveau (Metal, OpenGL), SceneKit abstrait les calculs mathématiques complexes et la gestion du GPU, vous permettant de vous concentrer sur la logique de votre application.
Pourquoi utiliser SceneKit ? Ce framework est idéal pour créer des jeux, des présentations 3D interactives, des visualisations de données, des maquettes architecturales et des applications éducatives. Il intègre un moteur physique (simulation de gravité, collisions), un système de particules, une animation squelettique, la gestion des ombres et de la lumière, ainsi qu'une intégration avec la réalité augmentée (ARKit). SceneKit permet de charger des modèles aux formats .dae (Collada), .scn (format propriétaire Apple) et .usdz, ce qui en fait un excellent outil pour importer des assets depuis Blender, Maya ou 3ds Max.
Le principal avantage de SceneKit face à ses concurrents (comme Unity) est son intégration native dans l'écosystème Apple. Vous pouvez utiliser SwiftUI, UIKit ou AppKit pour créer l'interface, et SceneKit pour le rendu 3D, le tout en un seul langage (Swift). Le framework gère automatiquement la mémoire et optimise le rendu pour chaque appareil, ce qui est crucial pour les applications mobiles.
Installation et configuration
SceneKit fait partie du SDK standard d'Apple, aucune installation via des gestionnaires de paquets (CocoaPods, Swift Package Manager) n'est donc nécessaire. Pour commencer, il suffit d'importer le framework dans votre projet.
Il n'y a pas de commande d'installation, car le framework est préinstallé. Cependant, si vous utilisez Swift Package Manager pour d'autres dépendances, assurez-vous que votre projet cible iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 3.0+.
Pour importer dans votre code, utilisez :
import SceneKit
import SceneKit.ModelIO // Pour charger des modèles via Model I/O
Si vous travaillez avec Xcode, ajoutez simplement SceneKit.framework dans la section "Frameworks, Libraries, and Embedded Content" de votre cible.
Démarrage rapide : exemple minimal fonctionnel
Créons une scène 3D simple avec un cube qui tourne. Cet exemple peut être exécuté dans un Playground ou dans une application iOS/macOS.
import SceneKit
import PlaygroundSupport
// 1. Créer la scène
let scene = SCNScene()
// 2. Créer la caméra
let cameraNode = SCNNode()
cameraNode.camera = SCNCamera()
cameraNode.position = SCNVector3(x: 0, y: 0, z: 5)
scene.rootNode.addChildNode(cameraNode)
// 3. Créer le cube
let boxGeometry = SCNBox(width: 1.0, height: 1.0, length: 1.0, chamferRadius: 0.0)
let boxNode = SCNNode(geometry: boxGeometry)
boxNode.position = SCNVector3(x: 0, y: 0, z: 0)
scene.rootNode.addChildNode(boxNode)
// 4. Ajouter une animation de rotation
let rotateAction = SCNAction.rotateBy(x: 0, y: CGFloat.pi * 2, z: 0, duration: 5.0)
let repeatAction = SCNAction.repeatForever(rotateAction)
boxNode.runAction(repeatAction)
// 5. Configurer l'affichage dans le Playground
let scnView = SCNView(frame: CGRect(x: 0, y: 0, width: 400, height: 400))
scnView.scene = scene
scnView.backgroundColor = UIColor.darkGray
scnView.autoenablesDefaultLighting = true
PlaygroundPage.current.liveView = scnView
Classes et méthodes essentielles de SceneKit
Voici les composants clés du framework avec des exemples d'utilisation.
1. SCNScene — le conteneur de la scène 3D
Signature : class SCNScene : NSObject
Rôle : C'est l'objet racine qui contient tous les nœuds (SCNNode), la géométrie, les sources de lumière, les caméras et les corps physiques. La scène est un graphe de nœuds.
let scene = SCNScene()
scene.background.contents = UIC