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.
1. Tambahkan model 3D
Aset harus ditambahkan ke proyek dengan tindakan build SceneKitAsset .
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.