Pengantar ARKit di Xamarin.iOS

Augmented Reality untuk iOS 11

ARKit memungkinkan berbagai aplikasi dan game realitas tertambah

Memulai ARKit

Untuk memulai realitas tertambah, instruksi berikut berjalan melalui aplikasi sederhana: memosisikan model 3D dan membiarkan ARKit menjaga model tetap di tempat dengan fungsionalitas pelacakannya.

Jet 3D model floating in camera image

1. Tambahkan model 3D

Aset harus ditambahkan ke proyek dengan tindakan build SceneKitAsset .

SceneKit assets in a project

2. Mengonfigurasi tampilan

Dalam metode pengontrol ViewDidLoad tampilan, muat aset adegan dan atur Scene properti pada tampilan:

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. Secara opsional menerapkan delegasi sesi

Meskipun tidak diperlukan untuk kasus sederhana, menerapkan delegasi sesi dapat membantu untuk men-debug status sesi ARKit (dan dalam aplikasi nyata, memberikan umpan balik kepada pengguna). Buat delegasi sederhana menggunakan kode di bawah ini:

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

Tetapkan delegasi dalam ViewDidLoad metode :

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

4. Posisikan model 3D di dunia

Dalam ViewWillAppear, kode berikut menetapkan sesi ARKit dan mengatur posisi model 3D di ruang relatif terhadap kamera perangkat:

// 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);

Setiap kali aplikasi dijalankan atau dilanjutkan, model 3D akan diposisikan di depan kamera. Setelah model diposisikan, pindahkan kamera dan tonton saat ARKit menjaga model tetap diposisikan.

5. Jeda sesi realitas tertambung

Adalah praktik yang baik untuk menjeda sesi ARKit ketika pengontrol tampilan tidak terlihat (dalam ViewWillDisappear metode :

SceneView.Session.Pause();

Ringkasan

Kode di atas menghasilkan aplikasi ARKit sederhana. Contoh yang lebih kompleks akan mengharapkan pengontrol tampilan yang menghosting sesi realitas tertambah untuk menerapkan IARSCNViewDelegate, dan metode tambahan diimplementasikan.

ARKit menyediakan banyak fitur yang lebih canggih, seperti pelacakan permukaan, dan interaksi pengguna.