Aspectos básicos de realidad mixta (210): MirarMR Input 210: Gaze

Nota

Los tutoriales de Mixed Reality Academy se han diseñado teniendo en cuenta HoloLens (1.ª generación) y los cascos envolventes de realidad mixta.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Por lo tanto, creemos que es importante conservar estos tutoriales para los desarrolladores que sigan buscando instrucciones sobre el desarrollo para esos dispositivos.As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. Estos tutoriales no se actualizarán con los conjuntos de herramientas o las interacciones más recientes que se usan para HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Se mantendrán para que sigan funcionando en los dispositivos compatibles.They will be maintained to continue working on the supported devices. Se ha publicado una nueva serie de tutoriales para HoloLens 2.A new series of tutorials has been posted for HoloLens 2.

Mira la primera forma de entrada y revela la intención y el reconocimiento del usuario.Gaze is the first form of input and reveals the user's intent and awareness. La entrada MR 210 (también conocido como Project Explorer) es un análisis profundo de los conceptos relacionados con la mirada para Windows Mixed Reality.MR Input 210 (aka Project Explorer) is a deep dive into gaze-related concepts for Windows Mixed Reality. Agregaremos reconocimiento contextual a nuestro cursor y a los hologramas, aprovechando al máximo lo que la aplicación conoce sobre la mirada del usuario.We will be adding contextual awareness to our cursor and holograms, taking full advantage of what your app knows about the user's gaze.

Tenemos un Astronaut descriptivo aquí para ayudarle a conocer los conceptos de la mirada.We have a friendly astronaut here to help you learn gaze concepts. En los principios de MR 101, teníamos un cursor sencillo que acaba de hacer una mirada.In MR Basics 101, we had a simple cursor that just followed your gaze. Hoy vamos a mover un paso más allá del cursor simple:Today we're moving a step beyond the simple cursor:

  • Estamos haciendo el cursor y nuestros hologramas con atención rápida: ambos cambiarán en función de dónde esté buscando el usuario o de dónde no esté buscando el usuario.We're making the cursor and our holograms gaze-aware: both will change based on where the user is looking - or where the user is not looking. Esto hace que sean compatibles con el contexto.This makes them context-aware.
  • Agregaremos comentarios a nuestro cursor y a los hologramas para proporcionar al usuario más contexto sobre lo que se va a dirigir.We will add feedback to our cursor and holograms to give the user more context on what is being targeted. Estos comentarios pueden ser audio y objetos visuales.This feedback can be audio and visual.
  • Le mostraremos las técnicas de destino para ayudar a los usuarios a alcanzar destinos más pequeños.We'll show you targeting techniques to help users hit smaller targets.
  • Le mostraremos cómo atraer la atención del usuario a sus hologramas con un indicador direccional.We'll show you how to draw the user's attention to your holograms with a directional indicator.
  • Le enseñaremos técnicas para tomar sus hologramas con el usuario a medida que se desplaza por su mundo.We'll teach you techniques to take your holograms with the user as she moves around in your world.

Importante

Los vídeos insertados en cada uno de los capítulos siguientes se grabaron con una versión anterior de Unity y el kit de herramientas de realidad mixta.The videos embedded in each of the chapters below were recorded using an older version of Unity and the Mixed Reality Toolkit. Aunque las instrucciones paso a paso son precisas y actuales, es posible que vea scripts y objetos visuales en los vídeos correspondientes que no están actualizados.While the step-by-step instructions are accurate and current, you may see scripts and visuals in the corresponding videos that are out-of-date. Los vídeos permanecen incluidos para posterity y porque todavía se aplican los conceptos descritos.The videos remain included for posterity and because the concepts covered still apply.

Compatibilidad con dispositivosDevice support

CursoCourse HoloLensHoloLens Cascos envolventesImmersive headsets
Aspectos básicos de realidad mixta (210): MirarMR Input 210: Gaze ✔️✔️ ✔️✔️

Antes de empezarBefore you start

PrerrequisitosPrerequisites

Archivos de proyectoProject files

  • Descargue los archivos requeridos por el proyecto.Download the files required by the project. Requiere Unity 2017,2 o posterior.Requires Unity 2017.2 or later.
  • Elimine el archivo de los archivos en el escritorio o en otra ubicación de fácil acceso.Un-archive the files to your desktop or other easy to reach location.

Nota

Si desea examinar el código fuente antes de la descarga, está disponible en github.If you want to look through the source code before downloading, it's available on GitHub.

Erratas y notasErrata and Notes

  • En Visual Studio, "Solo mi código" debe estar deshabilitado (desactivado) en herramientas->opciones->depuración para alcanzar puntos de interrupción en el código.In Visual Studio, "Just My Code" needs to be disabled (unchecked) under Tools->Options->Debugging in order to hit breakpoints in your code.

Capítulo 1: configuración de UnityChapter 1 - Unity Setup

ObjetivosObjectives

  • Optimizar Unity para el desarrollo de HoloLens.Optimize Unity for HoloLens development.
  • Importar recursos y configurar la escena.Import assets and setup the scene.
  • Vea el Astronaut en HoloLens.View the astronaut in the HoloLens.

InstruccionesInstructions

  1. Inicie Unity.Start Unity.
  2. Seleccione Nuevo proyecto.Select New Project.
  3. Asigne al proyecto el nombre ModelExplorer.Name the project ModelExplorer.
  4. Escriba ubicación como la carpeta de miras que ha eliminado previamente.Enter location as the Gaze folder you previously un-archived.
  5. Asegúrate de que el proyecto esté establecido en 3D (3D).Make sure the project is set to 3D.
  6. Haga clic en crear proyecto.Click Create Project.

Configuración de Unity para HoloLensUnity settings for HoloLens

Necesitamos que Unity sepa que la aplicación que se está intentando exportar debe crear una vista envolvente en lugar de una vista 2D.We need to let Unity know that the app we are trying to export should create an immersive view instead of a 2D view. Lo hacemos agregando HoloLens como un dispositivo de realidad virtual.We do that by adding HoloLens as a virtual reality device.

  1. Vaya a editar > configuración del proyecto > Player.Go to Edit > Project Settings > Player.
  2. En el panel Inspector de configuración del reproductor, seleccione el icono de la tienda Windows .In the Inspector Panel for Player Settings, select the Windows Store icon.
  3. Expanda el grupo XR Settings (Configuración de XR).Expand the XR Settings group.
  4. En la sección Rendering (Representación), active la casilla Virtual Reality Supported (Se admite Virtual Reality) para agregar una nueva lista de SDK de Virtual Reality.In the Rendering section, check the Virtual Reality Supported checkbox to add a new Virtual Reality SDKs list.
  5. Compruebe que Windows Mixed Reality (Mixed Reality de Windows) aparece en la lista.Verify that Windows Mixed Reality appears in the list. Si no es así, seleccione el + botón situado en la parte inferior de la lista y elija Windows Holographic.If not, select the + button at the bottom of the list and choose Windows Holographic.

A continuación, es necesario establecer nuestro back-end de scripting en .NET.Next, we need to set our scripting backend to .NET.

  1. Vaya a editar > configuración del proyecto > Player (es posible que todavía lo tenga en el paso anterior).Go to Edit > Project Settings > Player (you may still have this up from the previous step).
  2. En el panel Inspector de configuración del reproductor, seleccione el icono de la tienda Windows .In the Inspector Panel for Player Settings, select the Windows Store icon.
  3. En la sección configuración de otros valores , asegúrese de que el back-end de scripting está establecido en .net.In the Other Settings Configuration section, make sure that Scripting Backend is set to .NET

Por último, actualizaremos la configuración de calidad para lograr un rendimiento rápido en HoloLens.Finally, we'll update our quality settings to achieve a fast performance on HoloLens.

  1. Vaya a editar > configuración del proyecto > calidad.Go to Edit > Project Settings > Quality.
  2. Haga clic en la flecha hacia abajo de la fila predeterminada bajo el icono de la tienda Windows.Click on downward pointing arrow in the Default row under the Windows Store icon.
  3. Seleccione muy bajo para aplicaciones de la tienda Windows.Select Very Low for Windows Store Apps.

Importar recursos del proyectoImport project assets

  1. Haga clic con el botón secundario en la carpeta activos del panel proyecto .Right click the Assets folder in the Project panel.
  2. Haga clic en importar paquete > paquete personalizado.Click on Import Package > Custom Package.
  3. Navegue hasta los archivos de proyecto que descargó y haga clic en ModelExplorer. unitypackage Tools.Navigate to the project files you downloaded and click on ModelExplorer.unitypackage.
  4. Haga clic en Abrir.Click Open.
  5. Una vez cargado el paquete, haga clic en el botón importar .After the package loads, click on the Import button.

Configuración de la escenaSetup the scene

  1. En la jerarquía, elimine la cámara principal.In the Hierarchy, delete the Main Camera.
  2. En la carpeta HoloToolkit , abra la carpeta Input y, a continuación, abra la carpeta Prefabs .In the HoloToolkit folder, open the Input folder, then open the Prefabs folder.
  3. Arrastre y coloque el recurso prefabricado de MixedRealityCameraParent de la carpeta Prefabs en la jerarquía.Drag and drop the MixedRealityCameraParent prefab from the Prefabs folder into the Hierarchy.
  4. Haga clic con el botón derecho en la luz direccional de la jerarquía y seleccione eliminar.Right-click the Directional Light in the Hierarchy and select Delete.
  5. En la carpeta hologramas , arrastre y coloque los recursos siguientes en la raíz de la jerarquía:In the Holograms folder, drag and drop the following assets into the root of the Hierarchy:
    • AstroManAstroMan
    • LucesLights
    • SpaceAudioSourceSpaceAudioSource
    • SpaceBackgroundSpaceBackground
  6. Inicie el modo de reproducción ▶ para ver el Astronaut.Start Play Mode ▶ to view the astronaut.
  7. Vuelva a hacer clic en modo de reproducción ▶ para detenerse.Click Play Mode ▶ again to Stop.
  8. En la carpeta hologramas , busque el recurso Fitbox y arrástrelo hasta la raíz de la jerarquía.In the Holograms folder, find the Fitbox asset and drag it to the root of the Hierarchy.
  9. Seleccione Fitbox en el panel jerarquía .Select the Fitbox in the Hierarchy panel.
  10. Arrastre la colección AstroMan desde la jerarquía a la propiedad de colección holograma de Fitbox en el panel Inspector .Drag the AstroMan collection from the Hierarchy to the Hologram Collection property of the Fitbox in the Inspector panel.

Guardar el proyectoSave the project

  1. Guarde la nueva escena: archivo > guardar la escena como.Save the new scene: File > Save Scene As.
  2. Haga clic en nueva carpeta y asigne un nombre a la carpeta Scenes.Click New Folder and name the folder Scenes.
  3. Asigne al archivo el nombre "ModelExplorer" y guárdelo en la carpeta Scenes .Name the file “ModelExplorer” and save it in the Scenes folder.

Compilación del proyectoBuild the project

  1. En Unity, seleccione archivo > configuración de compilación.In Unity, select File > Build Settings.
  2. Haga clic en Agregar escenas abiertas para agregar la escena.Click Add Open Scenes to add the scene.
  3. Seleccione plataforma universal de Windows en la lista plataforma y haga clic en cambiar plataforma.Select Universal Windows Platform in the Platform list and click Switch Platform.
  4. Si está desarrollando específicamente para HoloLens, establezca el dispositivo de destino en hololens.If you're specifically developing for HoloLens, set Target device to HoloLens. De lo contrario, déjelo en cualquier dispositivo.Otherwise, leave it on Any device.
  5. Asegúrese de que el tipo de compilación está establecido en D3D y que el SDK está establecido en la versión más reciente instalada (que debe ser SDK 16299 o posterior).Ensure Build Type is set to D3D and SDK is set to Latest installed (which should be SDK 16299 or newer).
  6. Haga clic en Generar.Click Build.
  7. Cree una nueva carpeta denominada "app".Create a New Folder named "App".
  8. Haga clic en la carpeta de la aplicación .Single click the App folder.
  9. Presione Seleccionar carpeta.Press Select Folder.

Cuando se haya realizado Unity, aparecerá una ventana del explorador de archivos.When Unity is done, a File Explorer window will appear.

  1. Abra la carpeta de la aplicación .Open the App folder.
  2. Abra la solución ModelExplorer de Visual Studio.Open the ModelExplorer Visual Studio Solution.

Si se implementa en HoloLens:If deploying to HoloLens:

  1. Con la barra de herramientas superior de Visual Studio, cambie el destino de Debug a Release y de ARM a x86.Using the top toolbar in Visual Studio, change the target from Debug to Release and from ARM to x86.
  2. Haga clic en la flecha desplegable situada junto al botón equipo local y seleccione equipo remoto.Click on the drop down arrow next to the Local Machine button, and select Remote Machine.
  3. Escriba la dirección IP del dispositivo HoloLens y establezca el modo de autenticación en universal (protocolo sin cifrar).Enter your HoloLens device IP address and set Authentication Mode to Universal (Unencrypted Protocol). Haga clic en Seleccionar.Click Select. Si no conoce la dirección IP del dispositivo, consulte configuración > redes & Internet > opciones avanzadas.If you do not know your device IP address, look in Settings > Network & Internet > Advanced Options.
  4. En la barra de menús superior, haga clic en depurar-> iniciar sin depurar o presione Ctrl + F5.In the top menu bar, click Debug -> Start Without debugging or press Ctrl + F5. Si esta es la primera vez que se implementa en el dispositivo, tendrá que emparejarla con Visual Studio.If this is the first time deploying to your device, you will need to pair it with Visual Studio.
  5. Cuando la aplicación se haya implementado, descartará el Fitbox con un gesto de selección.When the app has deployed, dismiss the Fitbox with a select gesture.

Si se implementa en un auricular envolvente:If deploying to an immersive headset:

  1. Con la barra de herramientas superior de Visual Studio, cambie el destino de Debug a Release y de ARM a x64.Using the top toolbar in Visual Studio, change the target from Debug to Release and from ARM to x64.
  2. Asegúrese de que el destino de implementación está establecido en equipo local.Make sure the deployment target is set to Local Machine.
  3. En la barra de menús superior, haga clic en depurar-> iniciar sin depurar o presione Ctrl + F5.In the top menu bar, click Debug -> Start Without debugging or press Ctrl + F5.
  4. Cuando la aplicación se haya implementado, descarte el Fitbox mediante la extracción del desencadenador en un controlador de movimiento.When the app has deployed, dismiss the Fitbox by pulling the trigger on a motion controller.

Capítulo 2: comentarios de cursores y de destinoChapter 2 - Cursor and target feedback

ObjetivosObjectives

  • Comportamiento y diseño visual de los cursores.Cursor visual design and behavior.
  • Comentarios del cursor basados en la mirada.Gaze-based cursor feedback.
  • Comentarios sobre hologramas basados en la mirada.Gaze-based hologram feedback.

Vamos a basar nuestro trabajo en algunos principios de diseño de cursores, es decir:We're going to base our work on some cursor design principles, namely:

  • El cursor siempre está presente.The cursor is always present.
  • No deje que el cursor sea demasiado pequeño o grande.Don't let the cursor get too small or big.
  • Evite obstruir el contenido.Avoid obstructing content.

InstruccionesInstructions

  1. En la carpeta HoloToolkit\Input\Prefabs , busque el recurso InputManager .In the HoloToolkit\Input\Prefabs folder, find the InputManager asset.
  2. Arrastre y coloque el InputManager en la jerarquía.Drag and drop the InputManager onto the Hierarchy.
  3. En la carpeta HoloToolkit\Input\Prefabs , busque el recurso cursor .In the HoloToolkit\Input\Prefabs folder, find the Cursor asset.
  4. Arrastre y coloque el cursor en la jerarquía.Drag and drop the Cursor onto the Hierarchy.
  5. Seleccione el objeto InputManager en la jerarquía.Select the InputManager object in the Hierarchy.
  6. Arrastre el objeto cursor desde la jerarquía al campo cursor de la SimpleSinglePointerSelector de InputManager, en la parte inferior del Inspector.Drag the Cursor object from the Hierarchy into the InputManager's SimpleSinglePointerSelector's Cursor field, at the bottom of the Inspector.

Configuración sencilla del selector de puntero único

Compilación e implementaciónBuild and Deploy

  1. Vuelva a compilar la aplicación desde el archivo > la configuración de compilación.Rebuild the app from File > Build Settings.
  2. Abra la carpeta de la aplicación.Open the App folder.
  3. Abra la solución ModelExplorer de Visual Studio.Open the ModelExplorer Visual Studio Solution.
  4. Haga clic en depurar-> iniciar sin depurar o presione Ctrl + F5.Click Debug -> Start Without debugging or press Ctrl + F5.
  5. Observe cómo se dibuja el cursor y cómo cambia la apariencia si toca un holograma.Observe how the cursor is drawn, and how it changes appearance if it is touching a hologram.

InstruccionesInstructions

  1. En el panel jerarquía , expanda el objeto AstroMan -> GEO_G -> Back_Center .In the Hierarchy panel, expand the AstroMan->GEO_G->Back_Center object.
  2. Haga doble clic en Interactible.CS para abrirlo en Visual Studio.Double click on Interactible.cs to open it in Visual Studio.
  3. Quite las marcas de comentario de las líneas de las devoluciones de llamada IFocusable. OnFocusEnter () y IFocusable. OnFocusExit () en Interactible.CS.Uncomment the lines in the IFocusable.OnFocusEnter() and IFocusable.OnFocusExit() callbacks in Interactible.cs. Las llama el InputManager del kit de herramientas de realidad mixta cuando el foco (ya sea por miras o por controlador) entra y sale del Colisionador de GameObject específico.These are called by the Mixed Reality Toolkit's InputManager when focus (either by gaze or by controller pointing) enters and exits the specific GameObject's collider.
/* TODO: DEVELOPER CODING EXERCISE 2.d */

void IFocusable.OnFocusEnter()
{
    for (int i = 0; i < defaultMaterials.Length; i++)
    {
        // 2.d: Uncomment the below line to highlight the material when gaze enters.
        defaultMaterials[i].EnableKeyword("_ENVIRONMENT_COLORING");
    }
}

void IFocusable.OnFocusExit()
{
    for (int i = 0; i < defaultMaterials.Length; i++)
    {
        // 2.d: Uncomment the below line to remove highlight on material when gaze exits.
        defaultMaterials[i].DisableKeyword("_ENVIRONMENT_COLORING");
    }
}

Nota

Usamos EnableKeyword y DisableKeyword versiones posteriores.We use EnableKeyword and DisableKeyword above. Con el fin de usarlos en su propia aplicación con el sombreador estándar del kit de herramientas, debe seguir las directrices de Unity para acceder a los materiales a través del script.In order to make use of these in your own app with the Toolkit's Standard shader, you'll need to follow the Unity guidelines for accessing materials via script. En este caso, ya hemos incluido las tres variantes de material resaltado necesarios en la carpeta de recursos (busque los tres materiales con resaltado en el nombre).In this case, we've already included the three variants of highlighted material needed in the Resources folder (look for the three materials with highlight in the name).

Compilación e implementaciónBuild and Deploy

  1. Como antes, compile el proyecto e impleméntelo en HoloLens.As before, build the project and deploy to the HoloLens.
  2. Observe lo que sucede cuando la mirada está dirigida a un objeto y cuando no lo está.Observe what happens when the gaze is aimed at an object and when it's not.

Capítulo 3: técnicas de destinoChapter 3 - Targeting Techniques

ObjetivosObjectives

  • Facilitar el destino de los hologramas.Make it easier to target holograms.
  • Estabilice los movimientos de los cabezales naturales.Stabilize natural head movements.

InstruccionesInstructions

  1. En el panel jerarquía , seleccione el objeto InputManager .In the Hierarchy panel, select the InputManager object.
  2. En el panel Inspector , busque el script del estabilizador de miras .In the Inspector panel, find the Gaze Stabilizer script. Haga clic en él para abrirlo en Visual Studio, si desea echar un vistazo.Click it to open in Visual Studio, if you want to take a look.
    • Este script recorre en iteración muestras de datos de Raycast y ayuda a estabilizar la mirada del usuario para el destino de precisión.This script iterates over samples of Raycast data and helps stabilize the user's gaze for precision targeting.
  3. En el Inspector, puede editar el valor de los ejemplos de estabilidad almacenados .In the Inspector, you can edit the Stored Stability Samples value. Este valor representa el número de muestras que el estabilizador recorre en iteración para calcular el valor estabilizado.This value represents the number of samples that the stabilizer iterates on to calculate the stabilized value.

Capítulo 4: indicador direccionalChapter 4 - Directional indicator

ObjetivosObjectives

  • Agregue un indicador direccional en el cursor para buscar hologramas.Add a directional indicator on the cursor to help find holograms.

InstruccionesInstructions

Vamos a usar el archivo DirectionIndicator.CS , que:We're going to use the DirectionIndicator.cs file which will:

  1. Muestra el indicador direccional si el usuario no se Gazing en los hologramas.Show the directional indicator if the user is not gazing at the holograms.
  2. Oculte el indicador direccional si el usuario es Gazing en los hologramas.Hide the directional indicator if the user is gazing at the holograms.
  3. Actualice el indicador direccional para que apunte a los hologramas.Update the directional indicator to point to the holograms.

Comencemos.Let's get started.

  1. Haga clic en el objeto AstroMan en el panel jerarquía y haga clic en la flecha para expandirlo.Click on the AstroMan object in the Hierarchy panel and click the arrow to expand it.
  2. En el panel jerarquía , seleccione el objeto DirectionalIndicator en AstroMan.In the Hierarchy panel, select the DirectionalIndicator object under AstroMan.
  3. En el panel Inspector , haga clic en el botón Agregar componente .In the Inspector panel, click the Add Component button.
  4. En el menú, escriba en el indicador de Dirección del cuadro de búsqueda.In the menu, type in the search box Direction Indicator. Seleccione el resultado de la búsqueda.Select the search result.
  5. En el panel jerarquía , arrastre y coloque el objeto cursor en la propiedad cursor del Inspector.In the Hierarchy panel, drag and drop the Cursor object onto the Cursor property in the Inspector.
  6. En el panel Proyecto , en la carpeta hologramas , arrastre y coloque el recurso DirectionalIndicator en la propiedad indicador direccional del Inspector.In the Project panel, in the Holograms folder, drag and drop the DirectionalIndicator asset onto the Directional Indicator property in the Inspector.
  7. Compile e implemente la aplicación.Build and deploy the app.
  8. Vea cómo el objeto indicador direccional le ayuda a encontrar el Astronaut.Watch how the directional indicator object helps you find the astronaut.

Capítulo 5: carteleraChapter 5 - Billboarding

ObjetivosObjectives

  • Use la cartelera para que los hologramas siempre se encuentren en su caso.Use billboarding to have holograms always face towards you.

Vamos a usar el archivo Billboard.CS para mantener una orientación GameObject de forma que se enfrente al usuario en todo momento.We will be using the Billboard.cs file to keep a GameObject oriented such that it is facing the user at all times.

  1. En el panel jerarquía , seleccione el objeto AstroMan .In the Hierarchy panel, select the AstroMan object.
  2. En el panel Inspector , haga clic en el botón Agregar componente .In the Inspector panel, click the Add Component button.
  3. En el menú, escriba en el cuadro de búsqueda de la cartelera.In the menu, type in the search box Billboard. Seleccione el resultado de la búsqueda.Select the search result.
  4. En el Inspector , establezca el eje dinámico en Y.In the Inspector set the Pivot Axis to Y.
  5. ¡Pruébelo!Try it! Compile e implemente la aplicación como antes.Build and deploy the app as before.
  6. Vea cómo se enfrenta el objeto de la cartelera independientemente de cómo cambie el punto de vista.See how the Billboard object faces you no matter how you change the viewpoint.
  7. Elimine el script de AstroMan por ahora.Delete the script from the AstroMan for now.

Capítulo 6: Tag-AlongChapter 6 - Tag-Along

ObjetivosObjectives

  • Use Tag-Along para que nuestros hologramas nos vayan alrededor de la habitación.Use Tag-Along to have our holograms follow us around the room.

A medida que trabajamos en este problema, se le guiará por las siguientes restricciones de diseño:As we work on this issue, we'll be guided by the following design constraints:

  • El contenido siempre debe ser un vistazo.Content should always be a glance away.
  • El contenido no debe estar en el camino.Content should not be in the way.
  • No se siente el contenido del bloqueo de encabezado.Head-locking content is uncomfortable.

La solución que se usa aquí es usar un enfoque "etiqueta a lo largo".The solution used here is to use a "tag-along" approach.

Un objeto de etiqueta no deja completamente la vista del usuario.A tag-along object never fully leaves the user's view. Puede pensar en una etiqueta, como un objeto asociado al encabezado del usuario por las bandas de goma.You can think of the a tag-along as being an object attached to the user's head by rubber bands. A medida que el usuario se mueve, el contenido permanecerá dentro de un sencillo vistazo mediante la deslizamiento hacia el borde de la vista sin salir completamente.As the user moves, the content will stay within an easy glance by sliding towards the edge of the view without completely leaving. Cuando el usuario mira hacia el objeto de etiqueta, resulta más completo ver.When the user gazes towards the tag-along object, it comes more fully into view.

Vamos a usar el archivo SimpleTagalong.CS , que:We're going to use the SimpleTagalong.cs file which will:

  1. Determine si el objeto Tag-Along está dentro de los límites de la cámara.Determine if the Tag-Along object is within the camera bounds.
  2. Si no está dentro del frustum de vista, coloque el Tag-Along en parcialmente dentro del frustum de la vista.If not within the view frustum, position the Tag-Along to partially within the view frustum.
  3. De lo contrario, coloque el Tag-Along a una distancia predeterminada del usuario.Otherwise, position the Tag-Along to a default distance from the user.

Para ello, primero debemos cambiar el script Interactible.CS para llamar a TagalongAction.To do this, we first must change the Interactible.cs script to call the TagalongAction.

  1. Edite Interactible.CS completando la codificación del ejercicio 6. a (Quite los comentarios de las líneas 84 a 87).Edit Interactible.cs by completing coding exercise 6.a (uncommenting lines 84 to 87).
/* TODO: DEVELOPER CODING EXERCISE 6.a */
// 6.a: Uncomment the lines below to perform a Tagalong action.
if (interactibleAction != null)
{
    interactibleAction.PerformAction();
}

El script InteractibleAction.CS , emparejado con Interactible.CS , realiza acciones personalizadas cuando se pulsa en los hologramas.The InteractibleAction.cs script, paired with Interactible.cs performs custom actions when you tap on holograms. En este caso, usaremos un específicamente para etiquetar.In this case, we'll use one specifically for tag-along.

  • En la carpeta scripts , haga clic en el recurso TagalongAction.CS para abrirlo en Visual Studio.In the Scripts folder click on TagalongAction.cs asset to open in Visual Studio.
  • Complete el ejercicio de codificación o cámbielo por este:Complete the coding exercise or change it to this:
    • En la parte superior de la jerarquía, en la barra de búsqueda, escriba ChestButton_Center y seleccione el resultado.At the top of the Hierarchy, in the search bar type ChestButton_Center and select the result.
    • En el panel Inspector , haga clic en el botón Agregar componente .In the Inspector panel, click the Add Component button.
    • En el menú, escriba en la acción tagalong del cuadro de búsqueda.In the menu, type in the search box Tagalong Action. Seleccione el resultado de la búsqueda.Select the search result.
    • En la carpeta hologramas , busque el recurso tagalong .In Holograms folder find the Tagalong asset.
    • Seleccione el objeto de ChestButton_Center de la jerarquía.Select the ChestButton_Center object in the Hierarchy. Arrastre y coloque el objeto TagAlong del panel proyecto en el Inspector en el objeto en la propiedad TagAlong.Drag and drop the TagAlong object from the Project panel onto the Inspector into the Object To Tagalong property.
    • Arrastre el objeto de acción tagalong desde el Inspector al campo Acción interactiva del script interactuable .Drag the Tagalong Action object from the Inspector into the Interactible Action field on the Interactible script.
  • Haga doble clic en el script TagalongAction para abrirlo en Visual Studio.Double click the TagalongAction script to open it in Visual Studio.

Instalación interactiva

Necesitamos agregar lo siguiente:We need to add the following:

  • Agregue funcionalidad a la función PerformAction en el script TagalongAction (se hereda de InteractibleAction).Add functionality to the PerformAction function in the TagalongAction script (inherited from InteractibleAction).
  • Agregue la cartelera al objeto mirados y establezca el eje dinámico en XY.Add billboarding to the gazed-upon object, and set the pivot axis to XY.
  • A continuación, agregue Tag-Along simples al objeto.Then add simple Tag-Along to the object.

Esta es nuestra solución, desde TagalongAction.CS:Here's our solution, from TagalongAction.cs:

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See LICENSE in the project root for license information.

using HoloToolkit.Unity;
using UnityEngine;

public class TagalongAction : InteractibleAction
{
    [SerializeField]
    [Tooltip("Drag the Tagalong prefab asset you want to display.")]
    private GameObject objectToTagalong;

    private void Awake()
    {
        if (objectToTagalong != null)
        {
            objectToTagalong = Instantiate(objectToTagalong);
            objectToTagalong.SetActive(false);

            /* TODO: DEVELOPER CODING EXERCISE 6.b */

            // 6.b: AddComponent Billboard to objectToTagAlong,
            // so it's always facing the user as they move.
            Billboard billboard = objectToTagalong.AddComponent<Billboard>();

            // 6.b: AddComponent SimpleTagalong to objectToTagAlong,
            // so it's always following the user as they move.
            objectToTagalong.AddComponent<SimpleTagalong>();

            // 6.b: Set any public properties you wish to experiment with.
            billboard.PivotAxis = PivotAxis.XY; // Already the default, but provided in case you want to edit
        }
    }

    public override void PerformAction()
    {
        // Recommend having only one tagalong.
        if (objectToTagalong == null || objectToTagalong.activeSelf)
        {
            return;
        }

        objectToTagalong.SetActive(true);
    }
}
  • ¡Pruébelo!Try it! Compile e implemente la aplicación.Build and deploy the app.
  • Vea cómo el contenido sigue el centro del punto de miración, pero no continuamente y sin bloquearlo.Watch how the content follows the center of the gaze point, but not continuously and without blocking it.