Úvod do ARKitu v Xamarin.iOS
Rozšířená realita pro iOS 11
ARKit umožňuje širokou škálu aplikací a her rozšířené reality.
Začínáme s ARKitem
Pokud chcete začít s rozšířenou realitou, projděte si následující pokyny jednoduchou aplikaci: umístění 3D modelu a nechat ARKit, aby byl model zavedený pomocí funkce sledování.
1. Přidání 3D modelu
Prostředky by se měly přidat do projektu pomocí akce sestavení SceneKitAsset .
2. Konfigurace zobrazení
V metodě kontroleru ViewDidLoad
zobrazení načtěte asset scény a nastavte Scene
vlastnost v zobrazení:
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. Volitelně implementujte delegáta relace.
I když není vyžadováno pro jednoduché případy, implementace delegáta relace může být užitečná pro ladění stavu relace ARKit (a v reálných aplikacích, poskytnutí zpětné vazby uživateli). Pomocí následujícího kódu vytvořte jednoduchý delegát:
public class SessionDelegate : ARSessionDelegate
{
public SessionDelegate() {}
public override void CameraDidChangeTrackingState(ARSession session, ARCamera camera)
{
Console.WriteLine("{0} {1}", camera.TrackingState, camera.TrackingStateReason);
}
}
Přiřaďte delegáta ViewDidLoad
v metodě:
// Track changes to the session
SceneView.Session.Delegate = new SessionDelegate();
4. Umístění 3D modelu na světě
Následující ViewWillAppear
kód vytvoří relaci ARKit a nastaví pozici 3D modelu v prostoru vzhledem k fotoaparátu zařízení:
// 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);
Při každém spuštění nebo obnovení aplikace se 3D model umístí před kameru. Jakmile je model umístěný, přesuňte kameru a sledujte, jak ARKit udržuje model umístěný.
5. Pozastavení relace rozšířené reality
Doporučuje se pozastavit relaci ARKitu, když není kontroler zobrazení viditelný (v ViewWillDisappear
metodě:
SceneView.Session.Pause();
Shrnutí
Výše uvedený kód vede k jednoduché aplikaci ARKit. Složitější příklady by očekávaly, že kontroler zobrazení hostující relaci rozšířené reality implementuje IARSCNViewDelegate
a implementují se další metody.
ARKit nabízí spoustu sofistikovanějších funkcí, jako je sledování povrchu a interakce uživatelů.