Общие сведения об ARKit в Xamarin.iOS
Дополненная реальность для iOS 11
ARKit обеспечивает широкий спектр приложений и игр дополненной реальности
Начало работы с ARKit
Чтобы приступить к работе с дополненной реальностью, в следующих инструкциях описано простое приложение: размещение трехмерной модели и предоставление ARKit возможности отслеживания.
1. Добавление трехмерной модели
Ресурсы следует добавить в проект с действием сборки SceneKitAsset .
2. Настройка представления
В методе контроллера ViewDidLoad
представления загрузите ресурс сцены и задайте Scene
свойство в представлении:
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. При необходимости реализуйте делегат сеанса
Хотя и не требуется для простых случаев, реализация делегата сеанса может быть полезной для отладки состояния сеанса ARKit (и в реальных приложениях, предоставляя отзыв пользователю). Создайте простой делегат, используя приведенный ниже код:
public class SessionDelegate : ARSessionDelegate
{
public SessionDelegate() {}
public override void CameraDidChangeTrackingState(ARSession session, ARCamera camera)
{
Console.WriteLine("{0} {1}", camera.TrackingState, camera.TrackingStateReason);
}
}
Назначьте делегат в методе ViewDidLoad
:
// Track changes to the session
SceneView.Session.Delegate = new SessionDelegate();
4. Положение трехмерной модели в мире
В ViewWillAppear
следующем коде устанавливается сеанс ARKit и устанавливается положение трехмерной модели в пространстве относительно камеры устройства:
// 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);
При каждом запуске или возобновлении работы приложения трехмерная модель будет размещаться перед камерой. После размещения модели переместите камеру и посмотрите, как ARKit сохраняет позицию модели.
5. Приостановка сеанса дополненной реальности
Рекомендуется приостановить сеанс ARKit, если контроллер представления не отображается (в методе ViewWillDisappear
:
SceneView.Session.Pause();
Итоги
Приведенный выше код приводит к простому приложению ARKit. Более сложные примеры ожидают, что контроллер представления, на котором размещен сеанс дополненной реальности, будет реализован IARSCNViewDelegate
и реализованы дополнительные методы.
ARKit предоставляет множество более сложных функций, таких как отслеживание поверхностей и взаимодействие с пользователем.