Ottobre 2018

Volume 33 numero 10

Il presente articolo è stato tradotto automaticamente.

Xamarin - realtà aumentata in xamarin. Forms

Dal Rajeev K K

Realtà aumentata (AR) sta emergendo rapidamente come uno strumento estremamente utile per la risoluzione di problemi comuni. AR è un ambiente interattivo, basata sulla realtà di visualizzazione che combina gli oggetti virtuali con quelli reali per creare un'esperienza coinvolgente Abilitata per l'hardware avanzato, ad esempio Microsoft HoloLens, che utilizza il rilevamento, audio, testo, effetti e 2-D/3-D oggetti virtuali.

AR ha rilevato una casa pronta in dispositivi mobili e Smartphone, grazie a fotocamere ad alta risoluzione, processori veloci e reti senza fili di larghezza di banda elevata. Supporto per AR esperienze in sistemi operativi per dispositivi mobili come iOS e Android inferiore la barriera di voce. Ampio supporto per dispositivi mobili rende AR un obiettivo ideale per gli sviluppatori di xamarin. Forms, che possono sfruttare i vantaggi di condivisione del codice del framework e avanzati strumenti di tutti i vantaggi interessanti di AR.

Le aziende usano già AR per coinvolgere i clienti e migliorare le esperienze. Trasmissione-Davidson ha creato un'app per iPad che offre un'esperienza di shopping virtuale che consente ai clienti di visualizzare tipi corpo, posti, luci e aggiungere altre opzioni per la propria progettazione bike personalizzato. App di Guida di Virtual del Hyundai Usa AR per insegnare proprietari funzionamento relativo automobile, mentre IKEA ha sviluppato un'app che consente di vedere come potrebbe apparire arredamento nella loro spazi living acquirenti.

Attualmente, AR è una funzionalità specifiche del dispositivo che richiede una piattaforma nativa per l'esecuzione. iOS espone AR per gli sviluppatori tramite ARKit, mentre Android avviene tramite ARCore. ARKit richiede un dispositivo iOS con iOS 11 o versione successiva e almeno un processore A9. ARCore richiede Android 7.0 o versione successiva e l'accesso alla Store di Google Play. È possibile fare riferimento alla documentazione ufficiale di Google (bit.ly/2BY68oS) e Apple (apple.co/2PcSVdm) per altre informazioni sui requisiti hardware e software.

Durante una nuova tecnologia di apprendimento, è importante comprendere i concetti fondamentali. Si prendano in considerazione questi concetti per AR.

Rilevamento individua la posizione di dispositivo nel mondo reale in tempo reale. Per creare una relazione in tempo reale tra spazi fisici e virtuali, ARKit Usa una tecnica denominata odometrica movimento inerziale visual (Imbalance), mentre ARCore Usa odometrica simultanee e Mapping (COM).

La comprensione dell'ambiente è il processo di rilevamento di punti di funzionalità e piani nel mondo reale. ARCore e ARKit sono in grado di determinare i limiti del ogni piano. Può essere utilizzato per posizionare un oggetto virtuale all'interno di un confine piano reale.

Ancoraggio fa riferimento alla posizione e l'orientamento in uno spazio fisico. È necessario trovare una posizione effettiva nel mondo reale per l'inserimento di una scena. ARKit e ARCore sono entrambi in grado di mantenere questa posizione quando si sposta all'interno della fotocamera.

Stima chiaro determina la quantità di luce nell'ambiente fisico e applica la quantità corretta di illuminazione virtuali oggetti incorporati all'interno di esso per produrre un effetto più realistico. ARKit e ARCore utilizzare i sensori della fotocamera per stimare la luce.

Interattivo Environmentenables ARCore e ARKit per eseguire il mapping all'ambiente fisico per lo schermo del dispositivo, l'utilizzo di hit testing per determinare X, Y coordinate sullo schermo. Ciò fornisce agli utenti la possibilità di interagire con l'ambiente tramite l'interfaccia dello schermo, usano, ad esempio, i movimenti come toccare e scorrimento rapido.

Immettere xamarin. Forms

Xamarin è uno degli strumenti multipiattaforma più diffusi per le aziende che sviluppano applicazioni per dispositivi mobili. Con l'introduzione di xamarin. Forms, le aziende è stato possibile creare interfacce utente native per iOS e Android usando una singola codebase c# di condivisi, ovvero superare un ostacolo all'adozione di chiavi e renderlo una piattaforma interessante per lo sviluppo di applicazioni aziendali. ARKit e ARCore sono completamente supportati da Xamarin e il sito Xamarin Web offre documentazione approfondita per ARKit sia ARCore.

Per mia esperienza nello sviluppo di applicazioni per dispositivi mobili, è possibile ottenere una considerevole riduzione in entrambe le righe di codice e il numero di bug pagando maggiore attenzione in fase di progettazione di applicazioni xamarin. Forms. Una progettazione dell'architettura appropriata dell'applicazione in xamarin. Forms consente il riutilizzo di codice massimo tra le piattaforme. Inoltre, consente uno sviluppo più veloce, facilità di test di automazione, l'integrazione delle modifiche, una riduzione dei bug e altro ancora. Nel mondo Agile, affinché un'applicazione venga eseguita correttamente, dovrebbe consentire semplice aggiunta di funzionalità con modifiche minime al codice, senza introdurre nuovi bug. Ecco perché xamarin. Forms è un approccio preferito per lo sviluppo per dispositivi mobili, soprattutto quando viene eseguito con metodologia Agile.

Gli sviluppatori Xamarin è interessante vedere come la potenza del linguaggio c# e i vantaggi di xamarin. Forms possono migliorare lo sviluppo di applicazioni basate su AR interessanti.

Prendere in considerazione AR come un livello di interfaccia utente in Xamarin che gestisce tutte le interazioni utente. Poiché AR è una funzionalità che è specifico del dispositivo e con un hardware distinzione, è spesso possibile situazioni in cui le funzionalità di piattaforma nativa AR non sono implementate nell'API di form. Si tratta in cui la vera potenza di xamarin. Forms possono risultare molto utile.

Per sviluppare applicazioni Xamarin, Visual Studio deve essere installato nel computer. È possibile codificare Xamarin in un computer Windows con Visual Studio, ma è necessario un computer Mac per l'esecuzione e debug di applicazioni iOS. Installare nel computer di sviluppo di iOS e Android SDK più recenti.

Sebbene Xamarin Live Player può essere usato per testare le applicazioni xamarin. Forms, non è uno strumento di livello professionale e non supporterà renderer personalizzati, effetti o prodotti di terze parti ModelView-View-Model (MVVM). Microsoft consiglia di usare gli emulatori incorporati in Visual Studio per testare le applicazioni Xamarin. Molti sviluppatori usano anche Genymotion. Per i test, è consigliabile installare applicazioni basate su AR Android e iOS nei dispositivi fisici, per dispositivi mobili.

Creare il progetto xamarin. Forms AR

In questo esempio, vi mostrerò come inserire un'immagine 3D dell'aereo in uno spazio fisico usando xamarin. Forms e ARKit. Scoprirai anche come aggiungere un'animazione di questo oggetto 3D. Figura 1 Mostra l'app AR finale che eseguono iOS.

Esegue l'applicazione in iOS
Figura 1 in esecuzione l'applicazione in iOS

Inizierò creando un'applicazione xamarin. Forms con il nome ARApp. Come illustrato nella figura 2, viene generato un progetto xamarin. Forms predefinito denominato ARApp per .NET Standard, insieme ai progetti specifici della piattaforma ARApp.iOS e ARApp.Android. Successivamente, creare una cartella denominata art.scnassets e aggiungere i file 3D e i file di trama al progetto ARApp.iOS. Questi asset verranno per il caricamento della scena AR.

Struttura del progetto
Struttura del progetto nella figura 2

Creare ora l'interfaccia utente per avviare la funzionalità di AR. A scopo dimostrativo, definirà un pulsante nel file MainPage. XAML, come illustrato di seguito:

<Button Text="Click Me" VerticalOptions="Center" HorizontalOptions="Center"
  Clicked="OnButtonClick"></Button>

Successivamente, si implementerà il clic sul pulsante nel codebehind, con il seguente codice:

public partial class MainPage : ContentPage
{
  public MainPage()

  {
    InitializeComponent();
  }
  private void OnButtonClick(object sender, EventArgs e)
  {
    // Handle the button click from XAML UI here
  }
}

Ora è disponibile l'interfaccia utente di xamarin. Forms pronto. Si passerà ora all'implementazione del livello AR nativo.

Implementazione di AR specifiche della piattaforma

È possibile implementare AR con API specifiche della piattaforma per il ARKit o ARCore, a seconda della piattaforma. Inizierò creando un'interfaccia utente specifiche della piattaforma con l'implementazione dell'interfaccia utente AR, che può essere richiamata usando DependencyService, l'implementazione di Xamarin di inserimento di dipendenze () che consente alle applicazioni di chiamare funzionalità specifiche della piattaforma da codice condiviso.

Si sarà inizia a usare un'implementazione per l'interfaccia utente in iOS. Innanzitutto, creo un viewController nel progetto iOS e aggiungere il codice illustrato figura 3.

Figura 3 implementazione di un'interfaccia utente in iOS

public override void ViewDidLoad ()
{
  base.ViewDidLoad();
  startAR();
}
// Initialize AR scene view
public void startAR()
{
  // Create the scene view for displaying the 3-D scene
  sceneView = new ARSCNView();
  sceneView.Frame = View.Frame;
  View = sceneView;
  CreateARScene(sceneView);
  PositionScene(sceneView);
}
// Configure AR scene with 3-D object
public void CreateARScene(ARSCNView sceneView)
{
  // lLoading the 3-D asset from file
  var scene = SCNScene.FromFile("art.scnassets/ship");
  // Attaching the 3-D object to the scene
  sceneView.Scene = scene;
  // This is for debugging purposes
  sceneView.DebugOptions = ARSCNDebugOptions.ShowWorldOrigin | 
    ARSCNDebugOptions.ShowFeaturePoints;
}
// Position AR scene
public void PositionScene(ARSCNView sceneView)
{
  // ARWorldTrackingConfiguration uses the back-facing camera,
  // tracks a device's orientation and position, and detects
  // real-world surfaces, and known images or objects
  var arConfiguration = new ARWorldTrackingConfiguration
  {
    PlaneDetection = ARPlaneDetection.Horizontal,
    LightEstimationEnabled = true
  } ;
  // Run the AR session
  sceneView.Session.Run(arConfiguration, ARSessionRunOptions.ResetTracking);
  var sceneNode = sceneView.Scene.RootNode.FindChildNode("ship", true);
  sceneNode.Position = new SCNVector3(0.0f, 0.0f, -30f);
    sceneView.Scene.RootNode.AddChildNode(sceneNode);
  // Add some animation
  sceneNode.RunAction(SCNAction.RepeatActionForever(
    SCNAction.RotateBy(0f, 6f, 0, 5)));
}

Ora imposto sto richiamare AR da xamarin. Forms. Ma come? Questo è dove entra in gioco la vera potenza di xamarin. Forms. L'inserimento delle dipendenze viene utilizzato per chiamare il codice di piattaforma nativa in .NET Standard o, facoltativamente, una libreria di classi portabile (PCL). Di seguito viene illustrato l'implementazione.

Servizi di dipendenza

La funzionalità DependencyService consente alle App a chiamare funzionalità specifiche della piattaforma da codice condiviso. Questa funzionalità consente alle App xamarin. Forms di eseguire qualsiasi operazione che può eseguire un'app nativa. Esistono quattro componenti necessari per usare DependencyService:

  • Interfaccia: Definire le funzionalità come un'interfaccia nel codice condiviso.
  • Implementazione per ogni piattaforma: Aggiungere le classi che implementano l'interfaccia per ogni progetto della piattaforma.
  • Registrazione: Registrare ogni classe di implementazione con DependencyService tramite un attributo di metadati. Registrazione consente DependencyService trovare la classe di implementazione e fornirlo al posto dell'interfaccia in fase di esecuzione.
  • Chiamata a DependencyService: Richiedere le implementazioni dell'interfaccia chiamando in modo esplicito DependencyService dal codice.

Utilizzare servizi di dipendenza in un'applicazione Xamarin.Form per implementare AR.

Interfaccia un'interfaccia per definire l'interazione con le API specifiche della piattaforma ARKit/ARCore deve essere progettata. È importante offrire maggiore attenzione a questo livello nella progettazione, perché è il livello di API esposto da classi esterne. Ad esempio, è possibile creare un'interfaccia denominata IARApp e definire un metodo denominato LaunchAR:

public interface IARApp{
  void LaunchAR (  ); // Note that interface members are public by default
}

Implementazione specifica della piattaforma per l'interfaccia AR l'interfaccia deve essere implementata nel progetto per ogni piattaforma di destinazione. Quanto l'implementazione viene eseguita in un ambiente condiviso, l'interfaccia può essere chiamato da tutte le piattaforme. Qualsiasi piattaforma se ne manca l'implementazione genera un'eccezione NullReferenceException.

È possibile visualizzare il codice per l'implementazione per l'interfaccia IARApp in iOS figura 4. È qui il codice per implementare la stessa interfaccia in Android:

[assembly: Xamarin.Forms.Dependency(typeof(ARDemo.Droid.ARAppImpl))] 
namespace ARDemo.Droid
{
  public class ARAppImpl:IARApp
  {
    public void LaunchAR()
    { 
      // Launch AR in Android
    }
  }
}

Figura 4 implementazione per l'interfaccia IARApp in iOS

[assembly: Xamarin.Forms.Dependency(typeof(ARDemo.iOS.ARAppImpl))]
namespace ARDemo.iOS
{
  public class ARAppImpl:IARApp
  {
    public void LaunchAR()
    {
      // This is in native code; invoke the native UI
        ARViewController viewController = new ARViewController();
        UIApplication.SharedApplication.KeyWindow.RootViewController.
          PresentViewController(viewController, true, null);
    }
  }
}

Si noti che il [assembly:] attributo deve essere dichiarato in precedenza lo spazio dei nomi. In caso contrario, il servizio di dipendenza non essere richiamato. Con tutto questo fatto, è possibile ora richiamare AR da un clic del pulsante di xamarin. Forms, chiamare il servizio di dipendenza con il seguente codice:

public partial class MainPage : ContentPage
{
  public MainPage()
  {
    InitializeComponent();
  }
  private void OnButtonClick(object sender, EventArgs e)
  {
    DependencyService.Get<IARApp>().LaunchAR(); // Launch AR
  }
}

Conclusioni

Figura 5 offerta una rapida panoramica dell'architettura dell'applicazione per l'app di esempio. L'implementazione di AR per iOS è stata completata ed è possibile completare l'implementazione di Android usando lo stesso approccio.

L'architettura dell'applicazione
Figura 5 l'architettura dell'applicazione

Ecco un suggerimento per coloro che si occupano dell'implementazione per Android: Usare ARCore tramite servizi di dipendenza per l'implementazione di AR in Android. HelloAR è un progetto Google AR implementato per le piattaforme Android che è stato portato in Xamarin. Questo progetto consentono di avviare l'implementazione di AR in Android. I collegamenti seguenti per altre informazioni, vedere: bit.ly/2ojBZq4 e bit.ly/2PKcomX.

Un ultimo aspetto: Per la progettazione di un'esperienza coinvolgente su coinvolgenti con AR in dispositivi mobili, è importante definire le priorità la progettazione di interazione dell'utente. Documentazione ARKit e ARCore fornisce linee guida e suggerimenti utili per la creazione di esperienze coinvolgenti ottimale per gli utenti finali. Esaminate alcune linee guida di progettazione importante interazione per AR:

  • Interazioni devono essere semplice e intuitivo. Evitare inutili complessità.
  • Usare audio e aptico commenti e suggerimenti per migliorare l'esperienza coinvolgente e concreto.
  • Usare lo spazio sullo schermo intero (Visualizza) per coinvolgere l'utente.
  • Le scene, oggetti e le animazioni devono essere convincente all'utente.
  • Prendere in considerazione come persone devono contenere il dispositivo quando si usa l'app e assicurarsi che fornisce un'esperienza coinvolgente su ottimale per loro.
  • Fornire indicazioni intuitiva basata sul contesto per l'utente quando necessario.

AR è regole del gioco. È l'elemento principale di nuove tecnologie di gemellaggio digitale, che sfrutta le repliche digitale di asset fisico, processi e sistemi per sfruttare un'ampia gamma di attività. L'aumento delle dimensioni di questa tecnologia nell'organizzazione avverrà molto rapidamente e xamarin. Forms è l'acronimo essere uno strumento importante di gemellaggio digitale in futuro. Assicurarsi di esplorare la magia di AR in piattaforme diverse e acquisire familiarità dotato di.

Buona codifica!


R K Rajeevè architetto delle soluzioni presso TCS interattivo in servizi di consulenza Tata. Egli è principalmente concentrare la derivazione di strategia aziendale end-to-end di canale digitali e creazione di architettura enterprise per le soluzioni per dispositivi mobili. La giusta combinazione tra tecnologie coinvolgenti in dispositivi mobili con intelligenza artificiale/Machine Learning e le piattaforme di interfaccia utente discorsive è passione per le tecnologie digitali più recenti e interessati negli esperimenti.

Grazie al seguente esperto tecnico Microsoft per la revisione dell'articolo: Dan Hermes


Discutere di questo articolo nel forum di MSDN Magazine