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.
1. Ajouter un modèle 3D
Les ressources doivent être ajoutées au projet avec l’action de génération SceneKitAsset .
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é IARSCNViewDelegate
et 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.