Introduzione ad ARKit in Xamarin.iOS
Realtà aumentata per iOS 11
ARKit consente un'ampia gamma di applicazioni e giochi di realtà aumentata
Introduzione ad ARKit
Per iniziare a usare la realtà aumentata, le istruzioni seguenti illustrano una semplice applicazione: posizionare un modello 3D e consentire ad ARKit di mantenere il modello sul posto con la relativa funzionalità di rilevamento.
1. Aggiungere un modello 3D
Gli asset devono essere aggiunti al progetto con l'azione di compilazione SceneKitAsset .
2. Configurare la visualizzazione
Nel metodo del controller di ViewDidLoad
visualizzazione caricare l'asset della scena e impostare la Scene
proprietà nella visualizzazione:
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. Facoltativamente, implementare un delegato di sessione
Sebbene non sia necessario per casi semplici, l'implementazione di un delegato di sessione può essere utile per il debug dello stato della sessione ARKit (e nelle applicazioni reali, fornendo feedback all'utente). Creare un delegato semplice usando il codice seguente:
public class SessionDelegate : ARSessionDelegate
{
public SessionDelegate() {}
public override void CameraDidChangeTrackingState(ARSession session, ARCamera camera)
{
Console.WriteLine("{0} {1}", camera.TrackingState, camera.TrackingStateReason);
}
}
Assegnare il delegato in nel ViewDidLoad
metodo :
// Track changes to the session
SceneView.Session.Delegate = new SessionDelegate();
4. Posizionare il modello 3D nel mondo
In ViewWillAppear
il codice seguente stabilisce una sessione ARKit e imposta la posizione del modello 3D nello spazio rispetto alla fotocamera del dispositivo:
// 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);
Ogni volta che l'applicazione viene eseguita o ripresa, il modello 3D verrà posizionato davanti alla fotocamera. Una volta posizionato il modello, spostare la fotocamera e osservare come ARKit mantiene il modello posizionato.
5. Sospendere la sessione di realtà aumentata
È consigliabile sospendere la sessione ARKit quando il controller di visualizzazione non è visibile (nel ViewWillDisappear
metodo :
SceneView.Session.Pause();
Riepilogo
Il codice precedente genera una semplice applicazione ARKit. Esempi più complessi prevedono che il controller di visualizzazione che ospita la sessione di realtà aumentata implementi IARSCNViewDelegate
e vengano implementati metodi aggiuntivi.
ARKit offre numerose funzionalità più sofisticate, ad esempio il rilevamento della superficie e l'interazione dell'utente.