Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Rzeczywistość rozszerzona dla systemu iOS 11
Zestaw ARKit umożliwia szeroką gamę aplikacji i gier rzeczywistości rozszerzonej
Wprowadzenie do zestawu ARKit
Aby rozpocząć pracę z rzeczywistością rozszerzoną, w poniższych instrukcjach przedstawiono prostą aplikację: pozycjonowanie modelu 3D i umożliwienie arkitowi utrzymania modelu na miejscu dzięki jego funkcjom śledzenia.
1. Dodawanie modelu 3D
Zasoby należy dodać do projektu za pomocą akcji kompilacji SceneKitAsset .
2. Konfigurowanie widoku
W metodzie kontrolera ViewDidLoad
widoku załaduj zasób sceny i ustaw Scene
właściwość w widoku:
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. Opcjonalnie implementowanie delegata sesji
Chociaż nie jest to wymagane w prostych przypadkach, implementacja delegata sesji może być przydatna do debugowania stanu sesji ARKit (i w rzeczywistych aplikacjach, przesyłając opinię użytkownikowi). Utwórz prosty delegat przy użyciu poniższego kodu:
public class SessionDelegate : ARSessionDelegate
{
public SessionDelegate() {}
public override void CameraDidChangeTrackingState(ARSession session, ARCamera camera)
{
Console.WriteLine("{0} {1}", camera.TrackingState, camera.TrackingStateReason);
}
}
Przypisz delegata w metodzie w metodzie ViewDidLoad
:
// Track changes to the session
SceneView.Session.Delegate = new SessionDelegate();
4. Pozycjonowanie modelu 3D na świecie
W ViewWillAppear
pliku poniższy kod ustanawia sesję ARKit i ustawia pozycję modelu 3D w przestrzeni względem aparatu urządzenia:
// 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);
Za każdym razem, gdy aplikacja zostanie uruchomiona lub wznowiona, model 3D zostanie umieszczony przed aparatem. Po ustawieniu modelu przenieś kamerę i obserwuj, jak ARKit utrzymuje położenie modelu.
5. Wstrzymaj sesję rzeczywistości rozszerzonej
Dobrym rozwiązaniem jest wstrzymanie sesji ARKit, gdy kontroler widoku nie jest widoczny (w metodzie ViewWillDisappear
:
SceneView.Session.Pause();
Podsumowanie
Powyższy kod powoduje utworzenie prostej aplikacji ARKit. Bardziej złożone przykłady będą oczekiwać, że kontroler widoku hostuje sesję rzeczywistości rozszerzonej w celu zaimplementowania IARSCNViewDelegate
metody , a dodatkowe metody zostaną zaimplementowane.
Zestaw ARKit oferuje wiele bardziej zaawansowanych funkcji, takich jak śledzenie powierzchni i interakcja użytkownika.