Ú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í.

Jet 3D model floating in camera image

1. Přidání 3D modelu

Prostředky by se měly přidat do projektu pomocí akce sestavení SceneKitAsset .

SceneKit assets in a project

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í ViewWillAppearkó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 IARSCNViewDelegatea implementují se další metody.

ARKit nabízí spoustu sofistikovanějších funkcí, jako je sledování povrchu a interakce uživatelů.