Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
Os tutoriais Mixed Reality Academy foram concebidos com HoloLens (1.ª geração), Unity 2017 e Mixed Reality Headsets Envolventes em mente. Como tal, consideramos importante deixar estes tutoriais em vigor para os programadores que ainda estão à procura de orientação no desenvolvimento desses dispositivos. Estes tutoriais não serão atualizados com os conjuntos de ferramentas ou interações mais recentes utilizados para HoloLens 2 e poderão não ser compatíveis com versões mais recentes do Unity. Serão mantidas para continuarem a trabalhar nos dispositivos suportados. Foi publicada uma nova série de tutoriais para HoloLens 2.
Gaze é a primeira forma de entrada e revela a intenção e a consciência do utilizador. O MR Input 210 (também conhecido como Project Explorer) é uma descrição aprofundada dos conceitos relacionados com o olhar para Windows Mixed Reality. Vamos adicionar consciência contextual ao nosso cursor e hologramas, tirando o máximo partido do que a sua aplicação sabe sobre o olhar do utilizador.
Temos aqui um astronauta amigável para o ajudar a aprender conceitos de olhar atento. No MR Basics 101, tivemos um cursor simples que acabou de seguir o seu olhar. Hoje, vamos avançar um passo para além do cursor simples:
- Estamos a tornar o cursor e os nossos hologramas atentos: ambos mudarão com base no local onde o utilizador está a procurar ou onde o utilizador não está a procurar. Isto torna-os conscientes do contexto.
- Vamos adicionar feedback ao nosso cursor e hologramas para dar ao utilizador mais contexto sobre o que está a ser visado. Este feedback pode ser áudio e visual.
- Vamos mostrar-lhe técnicas de filtragem para ajudar os utilizadores a atingir alvos mais pequenos.
- Vamos mostrar-lhe como chamar a atenção do utilizador para os seus hologramas com um indicador direcional.
- Vamos ensinar-lhe técnicas para levar os seus hologramas com o utilizador à medida que se desloca no seu mundo.
Importante
Os vídeos incorporados em cada um dos capítulos abaixo foram gravados com uma versão mais antiga do Unity e do Mixed Reality Toolkit. Embora as instruções passo a passo sejam precisas e atuais, poderá ver scripts e elementos visuais nos vídeos correspondentes desatualizados. Os vídeos permanecem incluídos para a posteridade e porque os conceitos abrangidos ainda se aplicam.
Suporte de dispositivos
| Curso | HoloLens | Headsets envolventes |
|---|---|---|
| Entrada MR 210: Olhar | ✔️ | ✔️ |
Antes de começar
Pré-requisitos
- Um WINDOWS 10 PC configurado com as ferramentas corretas instaladas.
- Alguma capacidade de programação C# básica.
- Devia ter concluído o MR Basics 101.
- Um dispositivo HoloLens configurado para desenvolvimento.
Ficheiros de projeto
- Transfira os ficheiros necessários para o projeto. Requer o Unity 2017.2 ou posterior.
- Remova o arquivo dos ficheiros para o seu ambiente de trabalho ou outra localização fácil de aceder.
Nota
Se quiser ver o código fonte antes de transferir, este estará disponível no GitHub.
Errata e Notas
- No Visual Studio, "Just My Code" tem de ser desativado (desmarcado) em Ferramentas-Opções-Depuração>> para atingir pontos de interrupção no seu código.
Capítulo 1 - Configuração do Unity
Objetivos
- Otimize o Unity para o desenvolvimento do HoloLens.
- Importe recursos e configure o cenário.
- Veja o astronauta no HoloLens.
Instruções
- Inicie o Unity.
- Selecione New Project (Novo Projeto).
- Atribua o nome ModelExplorer ao projeto.
- Introduza a localização como a pasta Gaze que anmitiu anteriormente.
- Certifique-se de que o projeto está definido como 3D.
- Clique em Create Project (Criar Projeto).
Definições do Unity para o HoloLens
Temos de informar o Unity de que a aplicação que estamos a tentar exportar deve criar uma vista envolvente em vez de uma vista 2D. Fazemos isso ao adicionar o HoloLens como um dispositivo de realidade virtual.
- Aceda a Editar Leitor > de Definições do > Projeto.
- No Painel de Inspetor para Definições do Leitor, selecione o ícone Loja Windows .
- Expanda o grupo Definições XR .
- Na secção Composição , selecione a caixa de verificação Realidade Virtual Suportada para adicionar uma nova lista de SDKs de Realidade Virtual .
- Verifique se Windows Mixed Reality aparece na lista. Caso contrário, selecione o + botão na parte inferior da lista e selecione Windows Holographic.
Em seguida, temos de definir o nosso back-end de scripting para .NET.
- Aceda a Editar Leitor > de Definições > do Projeto (ainda pode ter isto em cima do passo anterior).
- No Painel de Inspetor para Definições do Leitor, selecione o ícone Loja Windows .
- Na secção Configuração de Outras Definições , certifique-se de que o Back-end de Scripting está definido como .NET
Por fim, vamos atualizar as nossas definições de qualidade para obter um desempenho rápido no HoloLens.
- Aceda a Editar > Qualidade das Definições > do Projeto.
- Clique na seta para baixo na linha Predefinida sob o ícone loja Windows.
- Selecione Muito Baixa para Aplicações da Loja Windows.
Importar recursos do projeto
- Clique com o botão direito do rato na pasta Recursos no painel Projeto .
- Clique em Importar Pacote > Personalizado.
- Navegue para os ficheiros do projeto que transferiu e clique em ModelExplorer.unitypackage.
- Clique em Abrir.
- Após o carregamento do pacote, clique no botão Importar .
Configurar o cenário
- Na Hierarquia, elimine a Câmara Principal.
- Na pasta HoloToolkit , abra a pasta Entrada e, em seguida, abra a pasta Prefabs .
- Arraste e largue a prefab MixedRealityCameraParent da pasta Prefabs para a Hierarquia.
- Clique com o botão direito do rato na Luz Direcional na Hierarquia e selecione Eliminar.
- Na pasta Hologramas , arraste e largue os seguintes recursos na raiz da Hierarquia:
- AstroMan
- Lights
- SpaceAudioSource
- SpaceBackground
- Inicie o Modo ▶ de Reprodução para ver o astronauta.
- Clique novamente em Modo ▶ de Reprodução para Parar.
- Na pasta Hologramas , localize o recurso Fitbox e arraste-o para a raiz da Hierarquia.
- Selecione a Caixa de Ajuste no painel Hierarquia .
- Arraste a coleção AstroMan da hierarquia para a propriedade Coleção de Hologramas da Fitbox no painel Inspetor .
Guardar o projeto
- Guarde a nova cena: Cenário guardar ficheiro > como.
- Clique em Nova Pasta e dê um nome às Cenas da pasta.
- Dê o nome "ModelExplorer" ao ficheiro e guarde-o na pasta Cenas .
Compilar o projeto
- No Unity, selecione Definições de Compilação de Ficheiros>.
- Clique em Adicionar Cenas Abertas para adicionar a cena.
- Selecione Plataforma Universal do Windows na lista Plataforma e clique em Mudar de Plataforma.
- Se estiver a desenvolver especificamente para o HoloLens, defina o Dispositivo de destino como HoloLens. Caso contrário, deixe-o em Qualquer dispositivo.
- Certifique-se de que o Tipo de Compilação está definido como D3D e que o SDK está definido como Mais Recente instalado (que deve ser o SDK 16299 ou mais recente).
- Clique em Compilar.
- Crie uma Nova Pasta com o nome "Aplicação".
- Clique apenas na pasta Aplicação .
- Prima Selecionar Pasta.
Quando o Unity terminar, será apresentada uma janela Explorador de Ficheiros.
- Abra a pasta Aplicação .
- Abra a ModelExplorer Visual Studio Solution.
Se estiver a implementar no HoloLens:
- Ao utilizar a barra de ferramentas superior no Visual Studio, altere o destino de Depuração para Versão e de ARM para x86.
- Clique na seta pendente junto ao botão Máquina Local e selecione Máquina Remota.
- Introduza o endereço IP do dispositivo HoloLens e defina o Modo de Autenticação como Universal (Protocolo Não Encriptado). Clique em Selecionar. Se não souber o endereço IP do seu dispositivo, consulte Definições Rede & Opções Avançadas > da Internet>.
- Na barra de menus superior, clique em Depurar –> Iniciar Sem depuração ou prima Ctrl + F5. Se esta for a primeira vez que implementa no seu dispositivo, terá de o emparelhar com o Visual Studio.
- Quando a aplicação tiver sido implementada, dispense a Caixa de Ajuste com um gesto de seleção.
Se estiver a ser implementado num headset envolvente:
- Ao utilizar a barra de ferramentas superior no Visual Studio, altere o destino de Depuração para Versão e de ARM para x64.
- Certifique-se de que o destino de implementação está definido como Máquina Local.
- Na barra de menus superior, clique em Depurar –> Iniciar Sem depuração ou prima Ctrl + F5.
- Quando a aplicação tiver sido implementada, dispense o Fitbox ao puxar o acionador num controlador de movimento.
Capítulo 2 – Feedback de cursor e de destino
Objetivos
- Estrutura e comportamento dos elementos visuais do cursor.
- Feedback do cursor baseado no olhar.
- Comentários de hologramas baseados em olhar.
Vamos basear o nosso trabalho em alguns princípios de design do cursor, nomeadamente:
- O cursor está sempre presente.
- Não deixe que o cursor fique demasiado pequeno ou grande.
- Evite obstruir o conteúdo.
Instruções
- Na pasta HoloToolkit\Input\Prefabs , localize o recurso InputManager .
- Arraste e largue o InputManager na Hierarquia.
- Na pasta HoloToolkit\Input\Prefabs , localize o recurso Cursor .
- Arraste e largue o Cursor na Hierarquia.
- Selecione o objeto InputManager na Hierarquia.
- Arraste o objeto Cursor da Hierarquia para o campo CursorsimpleSinglePointerSelector do InputManager, na parte inferior do Inspetor.
Criar e Implementar
- Reconstrua a aplicação a partir das Definições de Compilação de Ficheiros>.
- Abra a pasta Aplicação.
- Abra a ModelExplorer Visual Studio Solution.
- Clique em Depurar –> Iniciar Sem depuração ou prima Ctrl + F5.
- Observe como o cursor é desenhado e como muda o aspeto se estiver a tocar num holograma.
Instruções
- No painel Hierarquia, expanda o objeto AstroMan-GEO_G-Back_Center>.>
- Faça duplo clique em Interactible.cs para abri-lo no Visual Studio.
- Anule o compromisso das linhas nas chamadas de retorno IFocusable.OnFocusEnter() e IFocusable.OnFocusExit() em Interactible.cs. Estes são chamados pelo inputManager do Mixed Reality Toolkit quando o foco (seja por olhar ou apontando pelo controlador) entra e sai do colisor do GameObject específico.
/* 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
EnableKeyword Utilizamos e DisableKeyword acima. Para utilizá-los na sua própria aplicação com o sombreador Padrão do Toolkit, terá de seguir as diretrizes do Unity para aceder a materiais através de script. Neste caso, já incluímos as três variantes de material realçado necessário na pasta Recursos (procure os três materiais com realce no nome).
Criar e Implementar
- Tal como anteriormente, crie o projeto e implemente no HoloLens.
- Observe o que acontece quando o olhar é direcionado para um objeto e quando não está.
Capítulo 3 - Técnicas de Segmentação
Objetivos
- Facilitar o destino dos hologramas.
- Estabilizar movimentos naturais da cabeça.
Instruções
- No painel Hierarquia , selecione o objeto InputManager .
- No painel Inspetor , localize o script Estabilizador de Olhar . Clique no mesmo para abrir no Visual Studio, se quiser dar uma vista de olhos.
- Este script itera exemplos de dados do Raycast e ajuda a estabilizar o olhar do utilizador para a segmentação de precisão.
- No Inspetor, pode editar o valor Exemplos de Estabilidade Armazenados . Este valor representa o número de amostras em que o estabilizador itera para calcular o valor estabilizado.
Capítulo 4 - Indicador direcional
Objetivos
- Adicione um indicador direcional no cursor para ajudar a encontrar hologramas.
Instruções
Vamos utilizar o ficheiro DirectionIndicator.cs que irá:
- Mostrar o indicador direcional se o utilizador não estiver a olhar para os hologramas.
- Oculte o indicador direcional se o utilizador estiver a observar os hologramas.
- Atualize o indicador direcional para apontar para os hologramas.
Vamos começar.
- Clique no objeto AstroMan no painel Hierarquia e clique na seta para expandi-lo.
- No painel Hierarquia , selecione o objeto DirectionalIndicator em AstroMan.
- No painel Inspetor , clique no botão Adicionar Componente .
- No menu, escreva na caixa de pesquisa Indicador de Direção. Selecione o resultado da pesquisa.
- No painel Hierarquia , arraste e largue o objeto Cursor na propriedade Cursor no Inspetor.
- No painel Projeto , na pasta Hologramas , arraste e largue o recurso DirectionalIndicator na propriedade Indicador Direcional no Inspetor.
- Criar e implementar a aplicação.
- Veja como o objeto de indicador direcional o ajuda a encontrar o astronauta.
Capítulo 5 - Outdoors
Objetivos
- Utilize o outdoor para ter hologramas sempre virados para si.
Vamos utilizar o ficheiro Billboard.cs para manter um GameObject orientado para que esteja sempre virado para o utilizador.
- No painel Hierarquia , selecione o objeto AstroMan .
- No painel Inspetor , clique no botão Adicionar Componente .
- No menu, escreva na caixa de pesquisa Billboard. Selecione o resultado da pesquisa.
- No Inspetor , defina o Eixo Dinâmico como Y.
- Experimente! Crie e implemente a aplicação como anteriormente.
- Veja como o objeto da Billboard te enfrenta, independentemente da forma como mudas o ponto de vista.
- Elimine o script do AstroMan por enquanto.
Capítulo 6 - Tag-Along
Objetivos
- Utilize Tag-Along para que os nossos hologramas nos sigam pela sala.
À medida que trabalhamos neste problema, seremos guiados pelas seguintes restrições de design:
- O conteúdo deve ser sempre um olhar de distância.
- O conteúdo não deve estar no caminho.
- O conteúdo de bloqueio de cabeça é desconfortável.
A solução utilizada aqui é utilizar uma abordagem "tag-along".
Um objeto de tag-along nunca sai totalmente da vista do utilizador. Pode pensar numa etiqueta como sendo um objeto ligado à cabeça do utilizador por elásticos. À medida que o utilizador se move, o conteúdo permanecerá num olhar fácil ao deslizar para a margem da vista sem sair completamente. Quando o utilizador olha para o objeto tag-along, este fica mais à vista.
Vamos utilizar o ficheiro SimpleTagalong.cs que irá:
- Determine se o objeto Tag-Along está dentro dos limites da câmara.
- Se não estiver dentro da vista frustum, posicione o Tag-Along para parcialmente dentro da vista frustum.
- Caso contrário, posicione o Tag-Along a uma distância predefinida do utilizador.
Para tal, primeiro temos de alterar o script Interactible.cs para chamar TagalongAction.
- Edite Interactible.cs ao concluir o exercício de codificação 6.a (anular comentários das linhas 84 a 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 toca em hologramas. Neste caso, vamos utilizar uma especificamente para a identificação.
- Na pasta Scripts , clique no recurso TagalongAction.cs para abrir no Visual Studio.
- Conclua o exercício de codificação ou altere-o para o seguinte:
- Na parte superior da Hierarquia, na barra de pesquisa, escreva ChestButton_Center e selecione o resultado.
- No painel Inspetor , clique no botão Adicionar Componente .
- No menu, escreva na caixa de pesquisa Tagalong Action. Selecione o resultado da pesquisa.
- Na pasta Hologramas , localize o recurso Tagalong .
- Selecione o objeto ChestButton_Center na Hierarquia. Arraste e largue o objeto TagAlong do painel Projeto no Inspetor para a propriedade Objeto Para Tagalong .
- Arraste o objeto Ação do Tagalong do Inspetor para o campo Ação Interactível no script Interactible .
- Faça duplo clique no script TagalongAction para o abrir no Visual Studio.
Temos de adicionar o seguinte:
- Adicione a funcionalidade à função PerformAction no script TagalongAction (herdado de InteractibleAction).
- Adicione outdoors ao objeto olhado e defina o eixo dinâmico como XY.
- Em seguida, adicione Tag-Along simples ao objeto.
Eis a nossa solução, em 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! Crie e implemente a aplicação.
- Veja como o conteúdo segue o centro do ponto de olhar, mas não continuamente e sem o bloquear.