Progettazione per realtà mistaDesigning for Mixed Reality

Progettare l'app in modo che abbia un aspetto ottimale in realtà mista e sfruttare i nuovi metodi di input.Design your app to look good in Mixed Reality, and take advantage of new input methods.

PanoramicaOverview

La realtà mista è il risultato della fusione del mondo fisico con Digiworld.Mixed Reality is the result of blending the physical world with the digital world. La gamma di esperienze di realtà miste include un dispositivo estremo, ad esempio HoloLens (un dispositivo che combina i contenuti generati dal computer con il mondo reale) e, all'altra, una visualizzazione completamente immersiva della realtà virtuale (come visualizzato con un auricolare di realtà mista di Windows).The spectrum of mixed reality experiences includes at one extreme devices such as the HoloLens (a device that mixes computer generated content with the real world), and at the other a completely immersive view of Virtual Reality (as viewed with a Windows Mixed Reality headset). Vedere tipi di app per realtà mista per esempi di come possono variare le esperienze.See Types of mixed reality apps for examples of how experiences will vary.

Quasi tutte le app UWP esistenti verranno eseguite nell'ambiente di realtà mista come app 2D senza modifiche, sebbene l'esperienza per l'utente possa essere migliorata attenendosi ad alcune delle linee guida riportate in questo argomento.Almost all existing UWP apps will run in the Mixed Reality environment as 2D apps with no changes, although the experience for the user can be improved by following some of the guidance in this topic.

Visualizzazione realtà mista

Entrambi gli auricolari HoloLens e Windows Mixed Reality supportano le applicazioni in esecuzione nella piattaforma UWP ed entrambi supportano due tipi distinti di esperienza.Both the HoloLens and Windows Mixed Reality headsets support applications running on the UWP platform, and both support two distinct types of experience.

confronto tra 2D e l'esperienza immersiva2D vs. Immersive Experience

Un'app immersiva acquisisce l'intero schermo visibile all'utente, inserendola al centro di una visualizzazione creata dall'app.An immersive app takes over the entire display visible to the user, placing her at the center of a view created by the app. Ad esempio, un gioco immersivo potrebbe mettere l'utente sulla superficie di un pianeta alieno oppure un'app Guida per i tour potrebbe inserire l'utente in un villaggio sudamericano.For example, an immersive game might place the user on the surface of an alien planet, or a tour guide app might place the user in a South American village. La creazione di un'app immersiva richiede grafica 3D o video stereografica acquisito.Creating an immersive app requires 3D graphics or captured stereographic video. Le app immersive vengono spesso sviluppate usando un motore di gioco di terze parti, ad esempio Unity o DirectX.Immersive apps are often developed using a 3rd party game engine such as Unity, or with DirectX.

Se si creano app immersive, per altre informazioni è consigliabile visitare il centro per sviluppatori Windows Mixed Reality .If you are creating immersive apps, you should visit the Windows Mixed Reality Dev Center for more information.

Un'app 2D viene eseguita come finestra semplice tradizionale nella visualizzazione dell'utente.A 2D app runs as a traditional flat window within the user's view. Sul HoloLens, ciò significa che una visualizzazione è stata aggiunta alla parete o un punto nello spazio nel mondo reale o nell'ufficio dell'utente.On the HoloLens, that means a view pinned to the wall or a point in space in the users own real-world living room or office. In una serie di cuffie di realtà mista di Windows, l'app viene aggiunta a un muro della Home realtà mista (talvolta denominata Cliff House).In a Windows Mixed Reality headset, the app is pinned to a wall in the mixed reality home (sometimes called the Cliff House).

Più app in esecuzione in realtà mista

Queste app 2D non prendono in considerazione l'intera vista: vengono inserite al suo interno.These 2D apps do not take over the entire view: they are placed within it. Più app 2D possono esistere nell'ambiente in una sola volta.Multiple 2D apps can exist in the environment at once.

Nella parte restante di questo argomento vengono illustrate le considerazioni di progettazione per l'esperienza 2D.The remainder of this topic discusses design considerations for the 2D experience.

Avvio di app 2DLaunching 2D apps

Menu di avvio della realtà mista

Tutte le app vengono avviate dal menu Start, ma è anche possibile creare un oggetto 3D che funga da avvio di app.All apps are launched from the Start Menu, but it's also possible to create a 3D object to act as an app launcher. Per informazioni dettagliate, vedere questo video .See this video for details.

Panoramica dell'input dell'app 2DThe 2D App Input Overview

Tastiere e topi sono supportati sia sulle piattaforme HoloLens che sulla realtà mista.Keyboards and mice are supported on both HoloLens and Mixed Reality platforms. È possibile associare una tastiera e un mouse direttamente con il HoloLens su Bluetooth.You can pair a keyboard and mouse directly with the HoloLens over Bluetooth. Le app per la realtà mista supportano il mouse e la tastiera connessi al computer host.Mixed Reality apps support the mouse and keyboard connected to the host computer. Entrambi possono essere utili in situazioni in cui è necessario un livello di controllo accurato.Both may be useful in situations when a fine-level of control is necessary.

Sono supportati anche altri metodi di input, più naturali, che possono essere particolarmente utili quando l'utente non si trova davanti a una scrivania con una tastiera reale davanti a essi o quando è necessario un controllo preciso.Other, more natural, input methods are also supported, and these may be particularly useful when the user isn't sitting at a desk with a real keyboard in front of them, or when fine control is needed.

Senza hardware o codice aggiuntivo, le app utilizzeranno lo sguardo, ovvero il vettore che l'utente sta osservando come puntatore del mouse quando si lavora con le app 2D.Without any extra hardware or coding, apps will use gaze - the vector your user is looking along - as a mouse pointer when working with 2D apps. Viene implementato come se un puntatore del mouse fosse posizionato su un elemento nella scena virtuale.It is implemented as if a mouse pointer was hovering over something in the virtual scene.

In una tipica interazione, l'utente esamina un controllo nell'app, facendo in modo che venga evidenziato.In a typical interaction, your user will look at a control in your app, causing it to highlight. Quando si attiva un'azione, l'utente può usare un movimento (in HoloLens) o un contollo o un comando Voice.The user will when trigger an action, using either a gesture (on the HoloLens), or a contoller or by giving a voice command. Se l'utente seleziona un campo di input di testo, verrà visualizzata la tastiera software.If the user selects a text input field, the software keyboard will appear.

Tastiera popup in realtà mista

È importante notare che tutte queste interazioni verranno eseguite automaticamente senza alcuna codifica aggiuntiva, come conseguenza dell'esecuzione nella piattaforma UWP.It's important to note that all these interactions will happen automatically with no extra coding on your part, as a consequence of running on the UWP platform. L'input dall'auricolare HoloLens e dalla realtà mista viene visualizzato come input tocco per l'app 2D.Input from the HoloLens and Mixed Reality headset will appear as touch input to the 2D app. Questo significa che molte app UWP verranno eseguite e saranno utilizzabili in realtà mista, per impostazione predefinita.This means that many UWP apps will run and be usable in Mixed Reality, by default.

Detto questo, con alcune operazioni aggiuntive, l'esperienza può essere migliorata notevolmente.That said, with some extra work, the experience can be improved greatly. Ad esempio, il controllo vocale può essere particolarmente efficace.For example, voice control can be especially effective. Gli ambienti HoloLens e di realtà mista supportano i comandi vocali per l'avvio e l'interazione con le app e, incluso il supporto vocale, verranno visualizzati come un'estensione naturale di questo approccio.Both HoloLens and Mixed Reality environments support voice commands for launching and interacting with apps, and including voice support will appear as a natural extension of this approach. Vedere interazioni vocali per altre informazioni sull'aggiunta del supporto vocale all'app UWP.See Speech interactions for more information on adding voice support to your UWP app.

Selezione del controller correttoSelecting the right controller

Controller di movimento della realtà mista

Alcuni nuovi metodi di input sono stati progettati appositamente per l'uso con la realtà mista, in particolare:Several novel input methods have been designed especially for use with Mixed Reality, specifically:

Questi controller fanno in modo che l'interazione con gli oggetti virtuali sembri naturale e precisa.These controllers make interacting with virtual objects seem natural and precise. Alcune delle interazioni che si ottengono gratuitamente.Some of the interactions you get for free. Ad esempio, il gesto di selezione HoloLens o facendo clic sul pulsante o sul trigger Windows del controller di movimento genererà la risposta di input che ci si aspetterebbe, senza alcuna codifica da parte dell'utente.For example, the HoloLens select gesture or clicking on the Motion Controller's Windows key or trigger will generate the input response you would expect, again, with no coding on your part.

In altri casi, è necessario aggiungere codice per sfruttare le informazioni e gli input aggiuntivi resi disponibili.At other times, you will want to add code to take advantage of the extra information and inputs that are made available. I controller di movimento, ad esempio, possono essere usati per modificare gli oggetti con un livello di controllo accurato, se si scrive codice che prende la posizione e il pulsante preme in considerazione.For example, the Motion Controllers can be used to manipulate objects with a fine level of control, if you write code that takes their position and button presses into account.

Nota

In breve, l'entità GUID deve essere in modo da fornire sempre all'utente un metodo di input come naturale e senza attrito.In summary: the guiding principal should be to always provide the user with as natural and frictionless an input method as possible.

Considerazioni sulla progettazione di app 2D: funzionalità2D App Design considerations: Functionality

Quando si crea un'app UWP che potenzialmente verrà usata in una piattaforma di realtà mista, è necessario tenere presenti alcuni aspetti.When creating a UWP app that will potentially be used on a Mixed Reality platform, there are several things to keep in mind.

  • Il trascinamento della selezione potrebbe non funzionare correttamente se usato con controller di movimento, gamepad o movimenti.Drag and drop may not work well when used with Motion Controllers, gamepads or gestures. Se l'applicazione dipende molto dal trascinamento della selezione, sarà necessario fornire un metodo alternativo per supportare questa azione, ad esempio la presentazione di una finestra di dialogo che conferma se gli oggetti devono essere spostati in una nuova posizione.If your application depends heavily on drag and drop, you will need to provide an alternative method of supporting this action, such as presenting a dialog confirming if objects to be moved to a new location.

  • Tenere presente la modalità di modifica del suono.Be aware how sound changes. Se l'app genera effetti audio, l'origine del suono apparirà come il percorso aggiunto dell'app nel mondo virtuale.If your app generates sound effects, the source of the sound will appear to be your app's pinned location in the virtual world. Quando l'utente si allontana dall'app, l'audio diminuisce.As the user moves away from the app, sound will diminish. Per ulteriori informazioni, vedere il suono spaziale .See Spatial sound for more information.

  • Prendere in considerazione il campo della visualizzazione e fornire affordances.Consider the field of view and provide affordances. Non tutti i dispositivi forniranno un ampio campo di visualizzazione come monitoraggio del computer.Not every device will provide as large a field of view as a computer monitor. Per i dettagli completi, vedere frame olografico .See Holographic frame for complete details. Inoltre, l'utente può essere distante da un'app in esecuzione.Furthermore, the user may be some distance away from a running app. Ovvero, è possibile che l'app venga visualizzata alla parete in una posizione diversa del mondo (reale o virtuale).That is, the app may appear pinned to the wall at a different location in the world (real or virtual). È possibile che l'app debba attirare l'attenzione degli utenti o tenere presente che l'intera vista non è sempre visibile.Your app may need to get the users attention, or take into account that the entire view is not visible at all times. Sono disponibili notifiche di tipo avviso popup, ma un altro modo per attirare l'attenzione dell'utente potrebbe essere quello di generare un avviso audio o vocale .Toast notifications are available, but another way to get the user's attention might be to generate a sound or speech alert.

  • A un'app 2D viene assegnata automaticamente una barra dell'app per consentire all'utente di spostarle e ridimensionarle nell'ambiente virtuale.A 2D app is automatically given an app bar to allow the user to move and scale them in the virtual environment. Le visualizzazioni possono essere ridimensionate verticalmente o ridimensionate mantenendo le stesse proporzioni.The views can be resized vertically, or resized maintaining the same aspect ratio.

Considerazioni sulla progettazione di app 2D: interfaccia utente/UX2D app design considerations: UI/UX

  • I controlli XAML che implementano il sistema di progettazione Fluent , ad esempio la visualizzazione di navigazione, e gli effetti come acrilico funzionano in modo particolare nelle app di realtà mista 2D.XAML controls which implement the Fluent Design System such as the Navigation view, and effects such as Acrylic all work especially well in 2D Mixed Reality apps.

  • Testare il testo e le dimensioni di Windows dell'app in un dispositivo di realtà mista o, almeno, nel simulatore di realtà mista.Test your app's text and windows size in a Mixed Reality device, or at the very least in the Mixed Reality Simulator. L'app avrà una dimensione di Windows predefinita di 853x480 pixel effettivi.Your app will have a default windows size of 853x480 effective pixels. Usare dimensioni più grandi per i tipi di carattere (si consiglia una dimensione in punti di circa 32) e leggere l'aggiornamento dell'app universale esistente per Hololens.Use larger font sizes (a point size of approximately 32 is recommended), and read Updating your existing universal app for Hololens. Questo argomento viene illustrato in dettaglio nell'articolo tipografico .The article Typography covers this topic in detail. Quando si lavora in Visual Studio, è disponibile un'impostazione dell'editor di progettazione XAML per un'app HoloLens 2D 57 che fornisce una visualizzazione con la scala e le dimensioni corrette.When working in Visual Studio, there is a XAML design editor setting for a 57" HoloLens 2D App which provides a view with the correct scale and dimensions.

Il testo visualizzato nelle app per la realtà mista dovrebbe essere di grandi dimensioni.

  • Lo sguardo è il mouse.Your gaze is your mouse. Quando l'utente esamina qualcosa, funge da evento di tocco al passaggio del mouse , quindi la semplice ricerca di un oggetto può attivare un popup involontario o un'altra interazione indesiderata.When the user looks at something, it acts as a touch hover event, so simply looking at an object may trigger an inadvertent pop-up or other unwanted interaction. Potrebbe essere necessario rilevare se l'app è in esecuzione in realtà mista e modificare questo comportamento.You may need to detect if the app is currently running in Mixed Reality and change this behavior. Vedere il supporto del runtime, più avanti.See Runtime support, below.

  • Quando un utente guarda qualcosa o punta a un controller di movimento, si verificherà un evento di tocco al passaggio del mouse .When a user gazes towards something or points with a motion controller, a touch hover event will occur. È costituito da un PointerPoint in cui PointerType è touch, ma IsInContact è false.This consists of a PointerPoint where PointerType is Touch, but IsInContact is false. Quando si verifica una forma di commit, ad esempio Gamepad un pulsante, viene premuto un dispositivo Clicker, viene premuto un trigger del controller di movimento oppure le intestazioni di riconoscimento vocale "Select"), viene eseguita una pressione di tocco con il PointerPoint con IsInContact diventa true.When some form of commit occurs (for example, gamepad A button is pressed, a clicker device is pressed, a motion controller trigger pressed, or voice recognition heads "Select"), a touch press occurs, with the PointerPoint having IsInContact become true. Per altre informazioni su questi eventi di input, vedere interazioni con il tocco .See Touch interactions for more information on these input events.

  • Tenere presente che lo sguardo non è accurato come il puntatore del mouse.Remember, gaze is not as accurate as mouse pointing. Le destinazioni o i pulsanti del mouse più piccoli possono causare frustrazione per gli utenti, quindi ridimensionare i controlli di conseguenza.Smaller mouse targets or buttons may cause frustration for your users, so resize controls accordingly. Se sono progettati per il tocco, funzioneranno in realtà mista, ma è possibile scegliere di ingrandire alcuni pulsanti in fase di esecuzione.If they are designed for touch, they will work in Mixed Reality, but you may decide to enlarge some buttons at runtime. Vedere aggiornamento dell'app universale esistente per Hololens.See Updating your existing universal app for Hololens.

  • Il HoloLens definisce il colore nero come assenza di luce.The HoloLens defines the color black as the absence of light. Semplicemente non viene eseguito il rendering, consentendo il "mondo reale".It's simply not rendered, allowing the "real world" so show through. L'applicazione non deve usare il nero se questo potrebbe causare confusione.Your application should not use black if this is would cause confusion. In un headset a realtà mista, il nero è nero.In a Mixed Reality headset, black is black.

  • Il HoloLens non supporta i temi di colore nelle app e il valore predefinito è blu per garantire la migliore esperienza per gli utenti.The HoloLens does not support color themes in apps, and defaults to blue to ensure the best experience for users. Per ulteriori informazioni sulla selezione dei colori, consultare questo argomento in cui viene illustrato l'utilizzo del colore e del materiale in progetti di realtà mista.For more advice about selecting colors, you should consult this topic which discusses the use of color and material in Mixed Reality designs.

Altri punti da considerareOther points to consider

  • Sebbene Desktop Bridge possa aiutare a portare le app desktop (Win32) esistenti a Windows 10 e ai Microsoft Store, non è in grado di creare app eseguite in HoloLens o in realtà mista in questo momento.Although the Desktop Bridge can help bring existing (Win32) desktop apps to Windows 10 and the Microsoft Store, it cannot create apps that run on HoloLens or in Mixed Reality at this time.

Supporto di runtimeRuntime support

È possibile che l'app determini se è in esecuzione in un dispositivo a realtà mista in fase di esecuzione e lo usa come opportunità per ridimensionare i controlli o in altri modi per ottimizzare l'uso dell'app su un auricolare.It is possible for your app to determine if it is running on a Mixed Reality device at runtime, and use this as an opportunity to resize controls or in other ways optimize the app for use on a headset.

Ecco un breve frammento di codice che ridimensiona il testo all'interno di un controllo TextBlock XAML solo se l'app viene usata in un dispositivo a realtà mista.Here's a short piece of code that resizes the text inside a XAML TextBlock control only if the app is being used on a Mixed Reality device.


bool isViewingInMR = Windows.ApplicationModel.Preview.Holographic.HolographicApplicationPreview.IsCurrentViewPresentedOnHolographicDisplay();

            if (isViewingInMR)
            {
                // Running on headset, resize the XAML text
                textBlock.Text = "I'm running in Mixed Reality!";
                textBlock.FontSize = 32;
            }
            else
            {
                // Running on desktop
                textBlock.Text = "I'm running on the desktop.";
                textBlock.FontSize = 14;
            }