Observação

Os tutoriais misturados do Academia de realidade foram projetados com o HoloLens (1º gen) e com o fone de cabeça de imersão de realidade misturada.The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. Como tal, achamos que é importante deixar esses tutoriais em vigor para os desenvolvedores que ainda estão procurando orientação no desenvolvimento para esses 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. Esses tutoriais não serão atualizados com os conjuntos de ferramentas e as interações mais recentes usados para o HoloLens 2.These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. Eles serão mantidos para continuar a trabalhar nos dispositivos com suporte.They will be maintained to continue working on the supported devices. Uma nova série de tutoriais foi postada para o HoloLens 2.A new series of tutorials has been posted for HoloLens 2.

Entrada MR 210: olharMR Input 210: Gaze

Olhar é a primeira forma de entrada e revela a intenção e a conscientização do usuário.Gaze is the first form of input and reveals the user's intent and awareness. A entrada MR 210 (também conhecida como explorador de projeto) é aprofundada nos conceitos relacionados ao olhar para a realidade mista do Windows.MR Input 210 (aka Project Explorer) is a deep dive into gaze-related concepts for Windows Mixed Reality. Adicionaremos reconhecimento contextual ao cursor e aos hologramas, aproveitando ao máximo o que seu aplicativo sabe sobre o olhar do usuário.We will be adding contextual awareness to our cursor and holograms, taking full advantage of what your app knows about the user's gaze.

Temos um Astronaut amigável aqui para ajudá-lo a aprender os conceitos de olhar.We have a friendly astronaut here to help you learn gaze concepts. No Sr basics 101, tínhamos um simples cursor que logo seguiu o olhar.In MR Basics 101, we had a simple cursor that just followed your gaze. Hoje, estamos movendo uma etapa além do cursor simples:Today we're moving a step beyond the simple cursor:

  • Estamos fazendo com que o cursor e nossos hologramas olhar: ambos mudarão de acordo com o local em que o usuário está olhando ou para onde o usuário não está olhando.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. Isso faz com que eles reconheçam o contexto.This makes them context-aware.
  • Vamos adicionar comentários ao cursor e aos hologramas para dar ao usuário mais contexto sobre o que está sendo direcionado.We will add feedback to our cursor and holograms to give the user more context on what is being targeted. Esses comentários podem ser áudio e Visual.This feedback can be audio and visual.
  • Mostraremos as técnicas de direcionamento para ajudar os usuários a atingirem destinos menores.We'll show you targeting techniques to help users hit smaller targets.
  • Mostraremos como atrair a atenção do usuário para seus hologramas com um indicador direcional.We'll show you how to draw the user's attention to your holograms with a directional indicator.
  • Ensinaremos técnicas para levar seus hologramas com o usuário quando ele se movimentar em seu mundo.We'll teach you techniques to take your holograms with the user as she moves around in your world.

Importante

Os vídeos inseridos em cada um dos capítulos abaixo foram registrados usando uma versão mais antiga do Unity e o kit de ferramentas do Mixed Reality.The videos embedded in each of the chapters below were recorded using an older version of Unity and the Mixed Reality Toolkit. Embora as instruções passo a passo sejam precisas e atuais, você pode ver scripts e visuais nos vídeos correspondentes que estão desatualizados.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. Os vídeos permanecem incluídos para posterity e porque os conceitos abordados ainda se aplicam.The videos remain included for posterity and because the concepts covered still apply.

Suporte a dispositivosDevice support

CourseCourse HoloLensHoloLens Headsets imersivosImmersive headsets
Entrada MR 210: olharMR Input 210: Gaze ✔️✔️ ✔️✔️

Antes de começarBefore you start

Pré-requisitosPrerequisites

Arquivos de projetoProject files

  • Baixe os arquivos exigidos pelo projeto.Download the files required by the project. Requer o Unity 2017,2 ou posterior. Requires Unity 2017.2 or later.
  • Cancele o arquivamento dos arquivos em sua área de trabalho ou outro local fácil de acessar.Un-archive the files to your desktop or other easy to reach location.

Observação

Se você quiser examinar o código-fonte antes de baixá-lo, ele estará disponível no GitHub.If you want to look through the source code before downloading, it's available on GitHub.

Errata e observaçõesErrata and Notes

  • No Visual Studio, "Apenas Meu Código" precisa ser desabilitado (desmarcado) em Ferramentas-> Opções-> depuração para acessar os pontos de interrupção no 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 – configuração do UnityChapter 1 - Unity Setup

ObjetivosObjectives

  • Otimizar o Unity para o desenvolvimento no HoloLens.Optimize Unity for HoloLens development.
  • Importar ativos e configurar a cena.Import assets and setup the scene.
  • Exiba o Astronaut no HoloLens.View the astronaut in the HoloLens.

InstruçõesInstructions

  1. Inicie o Unity.Start Unity.
  2. Selecione novo projeto.Select New Project.
  3. Nomeie o projeto ModelExplorer.Name the project ModelExplorer.
  4. Insira o local como a pasta olhar que você cancelou anteriormente.Enter location as the Gaze folder you previously un-archived.
  5. Verifique se o projeto está definido como 3D.Make sure the project is set to 3D.
  6. Clique em Criar Projeto.Click Create Project.

Configurações de Unity para o HoloLensUnity settings for HoloLens

Precisamos deixar que o Unity saiba que o aplicativo que estamos tentando exportar deve criar uma exibição imersiva em vez de uma exibição 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. Fazemos isso adicionando o HoloLens como um dispositivo de realidade virtual.We do that by adding HoloLens as a virtual reality device.

  1. Vá para Editar configurações de projeto > > Player.Go to Edit > Project Settings > Player.
  2. No painel Inspetor para configurações do Player, selecione o ícone Windows Store .In the Inspector Panel for Player Settings, select the Windows Store icon.
  3. Expanda o grupo de configurações XR .Expand the XR Settings group.
  4. Na seção renderização , marque a caixa de seleção suporte à realidade virtual para adicionar uma nova lista de SDKs de realidade virtual .In the Rendering section, check the Virtual Reality Supported checkbox to add a new Virtual Reality SDKs list.
  5. Verifique se a realidade mista do Windows aparece na lista.Verify that Windows Mixed Reality appears in the list. Caso contrário, selecione o botão + na parte inferior da lista e escolha Windows Holographic.If not, select the + button at the bottom of the list and choose Windows Holographic.

Em seguida, precisamos definir nosso back-end de script para .NET.Next, we need to set our scripting backend to .NET.

  1. Vá para Editar configurações de projeto > > Player (talvez você ainda tenha isso na etapa anterior).Go to Edit > Project Settings > Player (you may still have this up from the previous step).
  2. No painel Inspetor para configurações do Player, selecione o ícone Windows Store .In the Inspector Panel for Player Settings, select the Windows Store icon.
  3. Na seção configuração de outras configurações , verifique se o back-end de script está definido como .netIn the Other Settings Configuration section, make sure that Scripting Backend is set to .NET

Por fim, atualizaremos nossas configurações de qualidade para obter um desempenho rápido no HoloLens.Finally, we'll update our quality settings to achieve a fast performance on HoloLens.

  1. Vá para Editar configurações de projeto > > qualidade.Go to Edit > Project Settings > Quality.
  2. Clique na seta apontando para baixo na linha padrão no ícone Windows Store.Click on downward pointing arrow in the Default row under the Windows Store icon.
  3. Selecione muito baixo para aplicativos da Windows Store.Select Very Low for Windows Store Apps.

Importar ativos de projetoImport project assets

  1. Clique com o botão direito do mouse na pasta ativos no painel projeto .Right click the Assets folder in the Project panel.
  2. Clique em Importar pacote > pacote personalizado.Click on Import Package > Custom Package.
  3. Navegue até os arquivos de projeto que você baixou e clique em ModelExplorer. unitypackage.Navigate to the project files you downloaded and click on ModelExplorer.unitypackage.
  4. Clique em Abrir.Click Open.
  5. Depois que o pacote for carregado, clique no botão importar .After the package loads, click on the Import button.

Configurar a cenaSetup the scene

  1. Na hierarquia, exclua a câmera principal.In the Hierarchy, delete the Main Camera.
  2. Na pasta HoloToolkit , abra a pasta de entrada e, em seguida, abra a pasta pré-fabricados .In the HoloToolkit folder, open the Input folder, then open the Prefabs folder.
  3. Arraste e solte o MixedRealityCameraParent pré-fabricado da pasta pré-fabricados para a hierarquia.Drag and drop the MixedRealityCameraParent prefab from the Prefabs folder into the Hierarchy.
  4. Clique com o botão direito do mouse na luz direcional na hierarquia e selecione excluir.Right-click the Directional Light in the Hierarchy and select Delete.
  5. Na pasta hologramas , arraste e solte os seguintes ativos na raiz da hierarquia:In the Holograms folder, drag and drop the following assets into the root of the Hierarchy:
    • AstroManAstroMan
    • NoturnaLights
    • SpaceAudioSourceSpaceAudioSource
    • SpaceBackgroundSpaceBackground
  6. Inicie o modo de reprodução ▶ para exibir o Astronaut.Start Play Mode ▶ to view the astronaut.
  7. Clique em modo de reprodução ▶ novamente para parar.Click Play Mode ▶ again to Stop.
  8. Na pasta hologramas , localize o ativo Fitbox e arraste-o para a raiz da hierarquia.In the Holograms folder, find the Fitbox asset and drag it to the root of the Hierarchy.
  9. Selecione o Fitbox no painel hierarquia .Select the Fitbox in the Hierarchy panel.
  10. Arraste a coleção AstroMan da hierarquia para a propriedade de coleção de holograma do Fitbox no painel de Inspetor .Drag the AstroMan collection from the Hierarchy to the Hologram Collection property of the Fitbox in the Inspector panel.

Salvar o projetoSave the project

  1. Salve a nova cena: arquivo > salvar cena como.Save the new scene: File > Save Scene As.
  2. Clique em nova pasta e nomeie a pasta cenas.Click New Folder and name the folder Scenes.
  3. Nomeie o arquivo como "ModelExplorer" e salve-o na pasta de cenas .Name the file “ModelExplorer” and save it in the Scenes folder.

Compilar o projetoBuild the project

  1. No Unity, selecione arquivo > configurações de Build.In Unity, select File > Build Settings.
  2. Clique em Adicionar abrir cenas para adicionar a cena.Click Add Open Scenes to add the scene.
  3. Selecione plataforma universal do Windows na lista plataforma e clique em alternar plataforma.Select Universal Windows Platform in the Platform list and click Switch Platform.
  4. Se você estiver desenvolvendo especificamente para o HoloLens, defina o dispositivo de destino para o hololens.If you're specifically developing for HoloLens, set Target device to HoloLens. Caso contrário, deixe em qualquer dispositivo.Otherwise, leave it on Any device.
  5. Verifique se tipo de compilação está definido como D3D e se o SDK está definido para o mais recente instalado (que deve ser o SDK 16299 ou mais recente).Ensure Build Type is set to D3D and SDK is set to Latest installed (which should be SDK 16299 or newer).
  6. Clique em Compilar.Click Build.
  7. Crie uma nova pasta chamada "app".Create a New Folder named "App".
  8. Clique uma vez na pasta do aplicativo .Single click the App folder.
  9. Pressione Selecionar pasta.Press Select Folder.

Quando o Unity for concluído, uma janela Explorador de arquivos será exibida.When Unity is done, a File Explorer window will appear.

  1. Abra a pasta do aplicativo .Open the App folder.
  2. Abra a solução ModelExplorer do Visual Studio.Open the ModelExplorer Visual Studio Solution.

Se estiver implantando no HoloLens:If deploying to HoloLens:

  1. Usando a barra de ferramentas superior no Visual Studio, altere o destino de debug para Release e de ARM para x86.Using the top toolbar in Visual Studio, change the target from Debug to Release and from ARM to x86.
  2. Clique na seta suspensa ao lado do botão computador local e selecione computador remoto.Click on the drop down arrow next to the Local Machine button, and select Remote Machine.
  3. Insira o endereço IP do dispositivo de HoloLens e defina o modo de autenticação como Universal (protocolo não criptografado) .Enter your HoloLens device IP address and set Authentication Mode to Universal (Unencrypted Protocol). Clique em Selecionar.Click Select. Se você não souber o endereço IP do dispositivo, examine configurações > rede & Internet > opções avançadas.If you do not know your device IP address, look in Settings > Network & Internet > Advanced Options.
  4. Na barra de menus superior, clique em depurar-> iniciar sem Depurar ou pressione Ctrl + F5.In the top menu bar, click Debug -> Start Without debugging or press Ctrl + F5. Se esta for a primeira vez que você está implantando em seu dispositivo, será necessário emparelhar com o Visual Studio.If this is the first time deploying to your device, you will need to pair it with Visual Studio.
  5. Quando o aplicativo tiver sido implantado, ignore o Fitbox com um gesto de seleção.When the app has deployed, dismiss the Fitbox with a select gesture.

Se estiver implantando em um headset de imersão:If deploying to an immersive headset:

  1. Usando a barra de ferramentas superior no Visual Studio, altere o destino de debug para Release e de ARM para x64.Using the top toolbar in Visual Studio, change the target from Debug to Release and from ARM to x64.
  2. Verifique se o destino de implantação está definido como computador local.Make sure the deployment target is set to Local Machine.
  3. Na barra de menus superior, clique em depurar-> iniciar sem Depurar ou pressione Ctrl + F5.In the top menu bar, click Debug -> Start Without debugging or press Ctrl + F5.
  4. Quando o aplicativo tiver sido implantado, ignore o Fitbox puxando o gatilho em um controlador de movimento.When the app has deployed, dismiss the Fitbox by pulling the trigger on a motion controller.

Capítulo 2-comentários de cursor e destinoChapter 2 - Cursor and target feedback

ObjetivosObjectives

  • Design e comportamento do Visual do cursor.Cursor visual design and behavior.
  • Comentários do cursor baseado em olhar.Gaze-based cursor feedback.
  • Comentários sobre o holograma baseado em olhar.Gaze-based hologram feedback.

Vamos basear nosso trabalho em alguns princípios de design de cursor, ou seja:We're going to base our work on some cursor design principles, namely:

  • O cursor está sempre presente.The cursor is always present.
  • Não deixe o cursor ficar muito pequeno ou grande.Don't let the cursor get too small or big.
  • Evite obstruir o conteúdo.Avoid obstructing content.

InstruçõesInstructions

  1. Na pasta HoloToolkit\Input\Prefabs , localize o ativo InputManager .In the HoloToolkit\Input\Prefabs folder, find the InputManager asset.
  2. Arraste e solte o InputManager na hierarquia.Drag and drop the InputManager onto the Hierarchy.
  3. Na pasta HoloToolkit\Input\Prefabs , localize o ativo de cursor .In the HoloToolkit\Input\Prefabs folder, find the Cursor asset.
  4. Arraste e solte o cursor na hierarquia.Drag and drop the Cursor onto the Hierarchy.
  5. Selecione o objeto InputManager na hierarquia.Select the InputManager object in the Hierarchy.
  6. Arraste o objeto cursor da hierarquia para o campo de cursor do SimpleSinglePointerSelectorda InputManager, na parte inferior do Inspetor.Drag the Cursor object from the Hierarchy into the InputManager's SimpleSinglePointerSelector's Cursor field, at the bottom of the Inspector.

Configuração do seletor de ponteiro único simples

Compilar e implantarBuild and Deploy

  1. Recompile o aplicativo do arquivo > configurações de Build.Rebuild the app from File > Build Settings.
  2. Abra a pasta do aplicativo.Open the App folder.
  3. Abra a solução ModelExplorer do Visual Studio.Open the ModelExplorer Visual Studio Solution.
  4. Clique em depurar-> iniciar sem Depurar ou pressione Ctrl + F5.Click Debug -> Start Without debugging or press Ctrl + F5.
  5. Observe como o cursor é desenhado e como ele muda de aparência se estiver tocando em um holograma.Observe how the cursor is drawn, and how it changes appearance if it is touching a hologram.

InstruçõesInstructions

  1. No painel hierarquia , expanda o AstroMan->GEO_G->objeto Back_Center .In the Hierarchy panel, expand the AstroMan->GEO_G->Back_Center object.
  2. Clique duas vezes em Interactible.cs para abri-lo no Visual Studio.Double click on Interactible.cs to open it in Visual Studio.
  3. Remova os comentários das linhas nos retornos de chamada IFocusable. OnFocusEnter () e IFocusable. OnFocusExit () em Interactible.cs.Uncomment the lines in the IFocusable.OnFocusEnter() and IFocusable.OnFocusExit() callbacks in Interactible.cs. Eles são chamados pelo InputManager do kit de ferramentas da realidade misturada quando o foco (por olhar ou por controlador apontando) entra e sai do colisor do Jogoobject 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");
    }
}

Observação

Usamos EnableKeyword e DisableKeyword acima.We use EnableKeyword and DisableKeyword above. Para fazer uso deles em seu próprio aplicativo com o sombreador padrão do kit de ferramentas, você precisará seguir as diretrizes do Unity para acessar materiais por meio de 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. Nesse caso, já incluímos as três variantes do material realçado necessário na pasta de recursos (procure os três materiais com realce no nome).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).

Compilar e implantarBuild and Deploy

  1. Como antes, compile o projeto e implante-o no HoloLens.As before, build the project and deploy to the HoloLens.
  2. Observe o que acontece quando o olhar é direcionado a um objeto e quando não é.Observe what happens when the gaze is aimed at an object and when it's not.

Capítulo 3-técnicas de direcionamentoChapter 3 - Targeting Techniques

ObjetivosObjectives

  • Facilite o direcionamento de hologramas.Make it easier to target holograms.
  • Estabilizar movimentos de cabeça natural.Stabilize natural head movements.

InstruçõesInstructions

  1. No painel hierarquia , selecione o objeto InputManager .In the Hierarchy panel, select the InputManager object.
  2. No painel Inspetor , localize o script de estabilizador olhar .In the Inspector panel, find the Gaze Stabilizer script. Clique para abrir no Visual Studio, se você quiser dar uma olhada.Click it to open in Visual Studio, if you want to take a look.
    • Esse script itera sobre exemplos de dados do Raycast e ajuda a estabilizar o olhar do usuário para direcionamento de precisão.This script iterates over samples of Raycast data and helps stabilize the user's gaze for precision targeting.
  3. No Inspetor, você pode editar o valor das amostras de estabilidade armazenadas .In the Inspector, you can edit the Stored Stability Samples value. Esse valor representa o número de amostras que o estabilizador itera para calcular o valor estabilizado.This value represents the number of samples that the stabilizer iterates on to calculate the stabilized value.

Capítulo 4 – Indicador direcionalChapter 4 - Directional indicator

ObjetivosObjectives

  • Adicione um indicador direcional no cursor para ajudar a encontrar hologramas.Add a directional indicator on the cursor to help find holograms.

InstruçõesInstructions

Vamos usar o arquivo DirectionIndicator.cs , que:We're going to use the DirectionIndicator.cs file which will:

  1. Mostre o indicador direcional se o usuário não estiver nuvens nos hologramas.Show the directional indicator if the user is not gazing at the holograms.
  2. Oculte o indicador direcional se o usuário estiver nuvensndo nos hologramas.Hide the directional indicator if the user is gazing at the holograms.
  3. Atualize o indicador direcional para apontar para os hologramas.Update the directional indicator to point to the holograms.

Vamos começar.Let's get started.

  1. Clique no objeto AstroMan no painel hierarquia e clique na seta para expandi-lo.Click on the AstroMan object in the Hierarchy panel and click the arrow to expand it.
  2. No painel hierarquia , selecione o objeto DirectionalIndicator em AstroMan.In the Hierarchy panel, select the DirectionalIndicator object under AstroMan.
  3. No painel Inspetor , clique no botão Adicionar componente .In the Inspector panel, click the Add Component button.
  4. No menu, digite o indicador de direçãoda caixa de pesquisa.In the menu, type in the search box Direction Indicator. Selecione o resultado da pesquisa.Select the search result.
  5. No painel hierarquia , arraste e solte o objeto cursor na propriedade cursor no Inspetor.In the Hierarchy panel, drag and drop the Cursor object onto the Cursor property in the Inspector.
  6. No painel projeto , na pasta hologramas , arraste e solte o ativo DirectionalIndicator para a propriedade Indicador direcional no Inspetor.In the Project panel, in the Holograms folder, drag and drop the DirectionalIndicator asset onto the Directional Indicator property in the Inspector.
  7. Crie e implante o aplicativo.Build and deploy the app.
  8. Observe como o objeto indicador direcional ajuda a localizar o Astronaut.Watch how the directional indicator object helps you find the astronaut.

Capítulo 5 – muralChapter 5 - Billboarding

ObjetivosObjectives

  • Use a mensagem para que os hologramas sempre se enfrentem para você.Use billboarding to have holograms always face towards you.

Usaremos o arquivo Billboard.cs para manter um gameobject orientado para que ele esteja sempre voltado ao usuário.We will be using the Billboard.cs file to keep a GameObject oriented such that it is facing the user at all times.

  1. No painel hierarquia , selecione o objeto AstroMan .In the Hierarchy panel, select the AstroMan object.
  2. No painel Inspetor , clique no botão Adicionar componente .In the Inspector panel, click the Add Component button.
  3. No menu, digite o muralda caixa de pesquisa.In the menu, type in the search box Billboard. Selecione o resultado da pesquisa.Select the search result.
  4. No Inspetor , defina o eixo dinâmico como Y.In the Inspector set the Pivot Axis to Y.
  5. Experimente!Try it! Crie e implante o aplicativo como antes.Build and deploy the app as before.
  6. Veja como o objeto do mural o rostos não importa como você altera o ponto de vista.See how the Billboard object faces you no matter how you change the viewpoint.
  7. Exclua o script do AstroMan por enquanto.Delete the script from the AstroMan for now.

Capítulo 6-marcar comoChapter 6 - Tag-Along

ObjetivosObjectives

  • Use a marca – junto com nossos hologramas nos seguem pela sala.Use Tag-Along to have our holograms follow us around the room.

À medida que trabalharmos com esse problema, iremos ser guiado pelas seguintes restrições de design:As we work on this issue, we'll be guided by the following design constraints:

  • O conteúdo deve ser sempre um breve resumido.Content should always be a glance away.
  • O conteúdo não deve estar no caminho.Content should not be in the way.
  • O conteúdo de bloqueio de cabeça é desconfortável.Head-locking content is uncomfortable.

A solução usada aqui é usar uma abordagem de "marca".The solution used here is to use a "tag-along" approach.

Um objeto de marca-ao mesmo nunca deixa totalmente a exibição do usuário.A tag-along object never fully leaves the user's view. Você pode considerar uma marca como sendo um objeto anexado à cabeça do usuário por faixas de borracha.You can think of the a tag-along as being an object attached to the user's head by rubber bands. À medida que o usuário se move, o conteúdo permanecerá dentro de uma visão fácil, deslizando para a borda da exibição sem sair completamente.As the user moves, the content will stay within an easy glance by sliding towards the edge of the view without completely leaving. Quando o usuário gazes em direção ao objeto de marca, ele é mais totalmente na exibição.When the user gazes towards the tag-along object, it comes more fully into view.

Vamos usar o arquivo SimpleTagalong.cs , que:We're going to use the SimpleTagalong.cs file which will:

  1. Determine se o objeto de marca está dentro dos limites da câmera.Determine if the Tag-Along object is within the camera bounds.
  2. Se não estiver dentro da exibição frustum, posicione a marca-junto com parcialmente dentro da exibição frustum.If not within the view frustum, position the Tag-Along to partially within the view frustum.
  3. Caso contrário, posicione a marca-junto com uma distância padrão do usuário.Otherwise, position the Tag-Along to a default distance from the user.

Para fazer isso, primeiro devemos alterar o script Interactible.cs para chamar o TagalongAction.To do this, we first must change the Interactible.cs script to call the TagalongAction.

  1. Edite Interactible.cs concluindo o código exercício 6. a (removendo as linhas de comentário 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();
}

O script InteractibleAction.cs , emparelhado com Interactible.cs , executa ações personalizadas quando você toca em hologramas.The InteractibleAction.cs script, paired with Interactible.cs performs custom actions when you tap on holograms. Nesse caso, usaremos um especificamente para a marca.In this case, we'll use one specifically for tag-along.

  • Na pasta scripts , clique em ativo TagalongAction.cs para abrir no Visual Studio.In the Scripts folder click on TagalongAction.cs asset to open in Visual Studio.
  • Conclua o exercício de codificação ou altere-o para:Complete the coding exercise or change it to this:
    • Na parte superior da hierarquia, na barra de pesquisa, digite ChestButton_Center e selecione o resultado.At the top of the Hierarchy, in the search bar type ChestButton_Center and select the result.
    • No painel Inspetor , clique no botão Adicionar componente .In the Inspector panel, click the Add Component button.
    • No menu, digite a ação queda caixa de pesquisa.In the menu, type in the search box Tagalong Action. Selecione o resultado da pesquisa.Select the search result.
    • Na pasta hologramas , localize o ativo que .In Holograms folder find the Tagalong asset.
    • Selecione o objeto ChestButton_Center na hierarquia.Select the ChestButton_Center object in the Hierarchy. Arraste e solte o objeto que do painel projeto para o Inspetor na propriedade objeto para que .Drag and drop the TagAlong object from the Project panel onto the Inspector into the Object To Tagalong property.
    • Arraste o objeto de ação que do Inspetor para o campo de ação Interactible no script Interactible .Drag the Tagalong Action object from the Inspector into the Interactible Action field on the Interactible script.
  • Clique duas vezes no script TagalongAction para abri-lo no Visual Studio.Double click the TagalongAction script to open it in Visual Studio.

Configuração do Interactible

Precisamos adicionar o seguinte:We need to add the following:

  • Adicione funcionalidade à função performaaction no script TagalongAction (Herdado de InteractibleAction).Add functionality to the PerformAction function in the TagalongAction script (inherited from InteractibleAction).
  • Adicione a mensagem ao objeto gazed e defina o eixo dinâmico como XY.Add billboarding to the gazed-upon object, and set the pivot axis to XY.
  • Em seguida, adicione uma marca simples-junto ao objeto.Then add simple Tag-Along to the object.

Aqui está nossa solução, de 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);
    }
}
  • Experimente!Try it! Crie e implante o aplicativo.Build and deploy the app.
  • Observe como o conteúdo segue o centro do ponto de olhar, mas não continuamente e sem bloqueá-lo.Watch how the content follows the center of the gaze point, but not continuously and without blocking it.