Xamarin.iOS'ta ARKit'e giriş

iOS 11 için Artırılmış Gerçeklik

ARKit, çok çeşitli artırılmış gerçeklik uygulamaları ve oyunları sağlar

ARKit kullanmaya başlama

Artırılmış gerçeklik ile çalışmaya başlamak için aşağıdaki yönergeler basit bir uygulamada yol gösterir: 3B modeli konumlandırma ve ARKit'in izleme işleviyle modeli yerinde tutmasına izin verme.

Jet 3D model kamera görüntüsünde kayan

1. 3B model ekleme

Varlıklar, SceneKitAsset derleme eylemiyle projeye eklenmelidir.

Projedeki SceneKit varlıkları

2. Görünümü yapılandırma

Görünüm denetleyicisinin ViewDidLoad yönteminde, sahne varlığını yükleyin ve görünümde Scene özelliğini ayarlayın:

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. İsteğe bağlı olarak oturum temsilcisi uygulama

Basit durumlar için gerekli olmasa da, oturum temsilcisi uygulamak ARKit oturumunun durumunda hata ayıklama (ve gerçek uygulamalarda kullanıcıya geri bildirim sağlama) için yararlı olabilir. Aşağıdaki kodu kullanarak basit bir temsilci oluşturun:

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

yönteminde temsilcisini atayın ViewDidLoad :

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

4. 3B modeli dünyada konumlandırma

içinde ViewWillAppear, aşağıdaki kod bir ARKit oturumu oluşturur ve 3B modelin uzaydaki konumunu cihazın kamerasına göre ayarlar:

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

Uygulama her çalıştırıldığında veya devam ettirildiğinde, 3B model kameranın önüne yerleştirilir. Model konumlandırıldıktan sonra kamerayı hareket ettirin ve ARKit modelin konumunu korurken izleyin.

5. Artırılmış gerçeklik oturumunu duraklatma

Görünüm denetleyicisi görünür olmadığında ARKit oturumunu duraklatmak iyi bir yöntemdir (yönteminde ViewWillDisappear :

SceneView.Session.Pause();

Özet

Yukarıdaki kod basit bir ARKit uygulamasına neden olur. Daha karmaşık örnekler, artırılmış gerçeklik oturumunu barındıran görünüm denetleyicisinin uygulamasını IARSCNViewDelegateve ek yöntemlerin uygulanmasını bekler.

ARKit, yüzey izleme ve kullanıcı etkileşimi gibi birçok daha gelişmiş özellik sağlar.