ARKit Swift : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

ARKit pour Swift : Guide complet de la réalité augmentée

1. Qu'est-ce que c'est et pourquoi l'utiliser

ARKit est un framework de réalité augmentée (RA) développé par Apple pour les plateformes iOS et iPadOS. Il permet aux développeurs de créer des applications AR immersives qui superposent des objets 3D virtuels, des animations et des informations au monde réel capturé par la caméra de l'appareil. ARKit utilise des technologies de vision par ordinateur, le traitement des données des capteurs (accéléromètre, gyroscope, caméra) et l'apprentissage automatique pour suivre avec précision la position de l'appareil dans l'espace, détecter les plans (tables, sol, murs) et reconnaître des images et des objets.

Pourquoi utiliser ARKit ? Il ouvre des possibilités infinies dans de nombreux domaines : des jeux (Pokémon GO) et de l'éducation (manuels interactifs) au commerce de détail (essayage de meubles avec IKEA Place) et à l'industrie (visualisation de mécanismes complexes). Au lieu de coder des algorithmes complexes de vision par ordinateur à partir de zéro, le développeur dispose d'un outil prêt à l'emploi, optimisé et puissant qui prend en charge tout le « travail lourd » d'analyse du flux vidéo et de suivi.

Dans cet article, nous allons voir en détail comment démarrer avec ARKit en langage Swift, explorer ses classes et méthodes principales, et créer un exemple d'application complet. Vous apprendrez à ajouter rapidement des fonctionnalités AR à votre projet et à éviter les erreurs courantes.

2. Installation

ARKit n'est pas une bibliothèque tierce, mais un framework intégré d'Apple. Il n'est pas nécessaire de l'installer via des gestionnaires de paquets (CocoaPods, Swift Package Manager) ou pip. Pour l'utiliser, il suffit de l'importer dans votre projet Xcode.

Remarque importante : ARKit fonctionne uniquement sur les appareils équipés d'un processeur A9 ou supérieur (iPhone 6s et versions ultérieures, iPad 2017 et versions ultérieures) et nécessite iOS 11.0 ou version ultérieure. La prise en charge d'ARKit sur le simulateur Xcode est limitée (la caméra ne fonctionne pas), donc pour le développement et les tests complets, un appareil physique est nécessaire.

Étapes pour commencer :

  1. Ouvrez Xcode et créez un nouveau projet (File → New → Project).
  2. Sélectionnez le modèle « Augmented Reality App ». Xcode configurera automatiquement le projet avec SceneKit (ou RealityKit) et ARKit.
  3. Si vous ajoutez ARKit à un projet existant, importez simplement le framework dans le fichier souhaité.

Commande d'importation (dans le code) :

import ARKit

Aucune autre commande d'installation n'est nécessaire. Si vous utilisez RealityKit (un framework AR plus moderne), importez-le :

import RealityKit

3. Démarrage rapide — exemple minimal fonctionnel

Créons une application AR minimale qui affiche un simple cube 3D sur un plan horizontal détecté.

1. Configuration du ViewController :

Assurez-vous que votre ViewController hérite de ARSCNViewDelegate (pour SceneKit) ou ARViewDelegate (pour RealityKit). Dans cet exemple, nous utilisons SceneKit car il est plus simple pour comprendre les bases.

import UIKit
import ARKit

class ViewController: UIViewController, ARSCNViewDelegate {

    @IBOutlet var sceneView: ARSCNView!

    override func viewDidLoad() {
        super.viewDidLoad()
        sceneView.delegate = self
        sceneView.showsStatistics = true // Affiche les FPS et autres statistiques
        sceneView.debugOptions = [ARSCNDebugOptions.showFeaturePoints] // Affiche les points que la caméra voit
    }

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        let configuration = ARWorldTrackingConfiguration()
        configuration.planeDetection = [.horizontal] // Active la détection des plans horizontaux
        sceneView.session.run(configuration)
    }

    override func viewWillDisappear(_ animated: Bool) {
        super.viewWillDisappear(animated)
        sceneView.session.pause()
    }

Recommendations