Introdução ao ARKit no Xamarin.iOS
Realidade Aumentada para iOS 11
ARKit permite uma grande variedade de aplicações e jogos de realidade aumentada
Introdução ao ARKit
Para começar com a realidade aumentada, as instruções a seguir percorrem um aplicativo simples: posicionar um modelo 3D e permitir que o ARKit mantenha o modelo no lugar com sua funcionalidade de rastreamento.
1. Adicione um modelo 3D
Os ativos devem ser adicionados ao projeto com a ação de compilação SceneKitAsset.
2. Configurar o modo de exibição
No método do controlador de ViewDidLoad
exibição, carregue o ativo de cena e defina a Scene
propriedade na exibição:
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. Opcionalmente, implemente um delegado de sessão
Embora não seja necessário para casos simples, a implementação de um delegado de sessão pode ser útil para depurar o estado da sessão ARKit (e em aplicativos reais, fornecendo feedback ao usuário). Crie um delegado simples usando o código abaixo:
public class SessionDelegate : ARSessionDelegate
{
public SessionDelegate() {}
public override void CameraDidChangeTrackingState(ARSession session, ARCamera camera)
{
Console.WriteLine("{0} {1}", camera.TrackingState, camera.TrackingStateReason);
}
}
Atribua o delegado no ViewDidLoad
no método:
// Track changes to the session
SceneView.Session.Delegate = new SessionDelegate();
4. Posicione o modelo 3D no mundo
No ViewWillAppear
, o código a seguir estabelece uma sessão ARKit e define a posição do modelo 3D no espaço em relação à câmera do dispositivo:
// 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);
Cada vez que o aplicativo é executado ou retomado, o modelo 3D será posicionado na frente da câmera. Assim que o modelo estiver posicionado, mova a câmera e observe como o ARKit mantém o modelo posicionado.
5. Pause a sessão de realidade aumentada
É uma boa prática pausar a sessão ARKit quando o controlador de exibição não estiver visível (no ViewWillDisappear
método:
SceneView.Session.Pause();
Resumo
O código acima resulta em um aplicativo ARKit simples. Exemplos mais complexos esperariam que o controlador de exibição que hospeda a sessão de realidade aumentada implementasse IARSCNViewDelegate
o , e métodos adicionais fossem implementados.
O ARKit fornece muitos recursos mais sofisticados, como rastreamento de superfície e interação do usuário.