Introduction à ARKit dans Xamarin.iOS

Réalité augmentée pour iOS 11

ARKit permet un large éventail d’applications et de jeux de réalité augmentée

Prise en main d’ARKit

Pour commencer à utiliser la réalité augmentée, les instructions suivantes vous guident dans une application simple : positionnement d’un modèle 3D et laisser ARKit conserver le modèle en place avec ses fonctionnalités de suivi.

Modèle Jet 3D flottant dans l’image de caméra

1. Ajouter un modèle 3D

Les ressources doivent être ajoutées au projet avec l’action de génération SceneKitAsset .

Ressources SceneKit dans un projet

2. Configurer l’affichage

Dans la méthode du contrôleur de vue, chargez la ressource de ViewDidLoad scène et définissez la Scene propriété sur la vue :

ARSCNView SceneView = (View as ARSCNView);

// Create a new scene
var scene = SCNScene.FromFile("art.scnassets/ship");

// Set the scene to the view
SceneView.Scene = scene;

3. Implémenter éventuellement un délégué de session

Bien qu’il ne soit pas nécessaire pour les cas simples, l’implémentation d’un délégué de session peut être utile pour déboguer l’état de la session ARKit (et dans les applications réelles, en fournissant des commentaires à l’utilisateur). Créez un délégué simple à l’aide du code ci-dessous :

public class SessionDelegate : ARSessionDelegate
{
  public SessionDelegate() {}
  public override void CameraDidChangeTrackingState(ARSession session, ARCamera camera)
  {
    Console.WriteLine("{0} {1}", camera.TrackingState, camera.TrackingStateReason);
  }
}

Affectez le délégué dans la ViewDidLoad méthode :

// Track changes to the session
SceneView.Session.Delegate = new SessionDelegate();

4. Positionner le modèle 3D dans le monde

Dans ViewWillAppear, le code suivant établit une session ARKit et définit la position du modèle 3D dans l’espace par rapport à la caméra de l’appareil :

// Create a session configuration
var configuration = new ARWorldTrackingConfiguration {
  PlaneDetection = ARPlaneDetection.Horizontal,
  LightEstimationEnabled = true
};

// Run the view's session
SceneView.Session.Run(configuration, ARSessionRunOptions.ResetTracking);

// Find the ship and position it just in front of the camera
var ship = SceneView.Scene.RootNode.FindChildNode("ship", true);

ship.Position = new SCNVector3(2f, -2f, -9f);

Chaque fois que l’application est exécutée ou reprise, le modèle 3D est positionné devant la caméra. Une fois le modèle positionné, déplacez la caméra et regardez comme ARKit conserve le modèle positionné.

5. Suspendre la session de réalité augmentée

Il est recommandé de suspendre la session ARKit lorsque le contrôleur de vue n’est pas visible (dans la ViewWillDisappear méthode :

SceneView.Session.Pause();

Résumé

Le code ci-dessus génère une application ARKit simple. Des exemples plus complexes s’attendent à ce que le contrôleur d’affichage hébergeant la session de réalité augmentée soit implémenté IARSCNViewDelegateet que des méthodes supplémentaires soient implémentées.

ARKit fournit de nombreuses fonctionnalités plus sophistiquées, telles que le suivi de surface et l’interaction utilisateur.