Como criar seu primeiro aplicativo Unreal do HoloLensCreating your first HoloLens Unreal application

Este guia descreverá como executar seu primeiro aplicativo de Realidade Misturada no HoloLens no Unreal Engine.This guide will walk you through getting your first Mixed Reality app running on the HoloLens in Unreal Engine. Na tradição do "Olá, Mundo", você criará um aplicativo simples que exibe um cubo na tela.In the tradition of "Hello World", you'll create a simple app that displays a cube on the screen. Para torná-lo mais útil, você também criará seu primeiro gesto para girar o cubo e encerrar o aplicativo.To make it more useful, you'll also create your first gesture to rotate the cube and quit the application.

ObjetivosObjectives

  • Iniciar um projeto do HoloLensStart a HoloLens Project
  • Habilitar os plug-ins corretosEnable the correct plugins
  • Criar um ativo de dados ARSessionConfigCreate an ARSessionConfig Data Asset
  • Configurar entradas de gestoSet up gesture inputs
  • Criar um nível básicoBuild a basic level
  • Implementar um gesto de pinçagemImplement a pinch gesture

Crie um novo projetoCreating a new project

A primeira coisa que você precisa é de um projeto com o qual trabalhar.The first thing you need is a project to work with. Se você é um desenvolvedor novo do Unreal, baixe os arquivos de suporte do Epic Launcher.If you're a first-time Unreal developer, you'll need to download supporting files from the Epic Launcher.

  1. Iniciar Unreal EngineLaunch Unreal Engine
  2. Em Novas Categorias de Projeto, selecione Jogos e clique em Avançar:In the New Project Categories, select Games and click Next:

Janela Projetos recentes aberta com os Jogos realçados

  1. Selecione o modelo Em branco e clique em Avançar:Select the Blank template and click Next:

A janela do navegador de projetos do Unreal com o modelo Em branco realçado

  1. Em Configurações do Projeto, defina C++, 3D ou 2D Escalonável, Celular/Tablet e Nenhum Conteúdo Inicial, escolha uma localização de salvamento e clique em Criar ProjetoIn the Project Settings, set C++, Scalable 3D or 2D, Mobile/Tablet, and No Starter Content, then choose a save location and click Create Project

Observação

Você está usando um projeto C++ em vez de um projeto Blueprint para estar pronto para usar o plug-in OpenXR mais tarde.You're using a C++ rather than a Blueprint project in order to be ready to use the OpenXR plugin later. Este Guia de Início Rápido usa o plug-in OpenXR padrão fornecido com o Unreal Engine.This QuickStart uses the default OpenXR plugin that comes with Unreal Engine. No entanto, é recomendável baixar e usar o plug-in oficial do Microsoft OpenXR.However, downloading and using the official Microsoft OpenXR plugin is recommended. Isso requer que o projeto seja um projeto C++.That requires the project to be a C++ project.

Janela de configurações do projeto com as opções de projeto, de desempenho, de plataforma de destino e de conteúdo inicial realçadas

O seu novo projeto deve ser aberto automaticamente no editor do Unreal, o que significa que você está pronto para a próxima seção.Your new project should open up automatically in the Unreal editor, which means you're ready for the next section.

Como habilitar os plugins necessáriosEnabling required plugins

Habilite dois plug-ins para começar a adicionar objetos à cena.You'll need to enable two plugins before you can start adding objects to the scene.

  1. Abra Editar > Plug-ins e selecione Realidade Aumentada na lista de opções internas.Open Edit > Plugins and select Augmented Reality from the built-in options list.
  • Role para baixo até HoloLens e marque HabilitadoScroll down to HoloLens and check Enabled

A janela Plug-ins com a seção de realidade aumentada está aberta e o HoloLens está realçado

  1. Digite OpenXR na caixa de pesquisa no canto superior direito e habilite os plug-ins OpenXR e OpenXRMsftHandInteraction:Type OpenXR in the search box at the top right and enable the OpenXR and OpenXRMsftHandInteraction plugins:

Janela Plug-ins com o OpenXR habilitado

Janela Plug-ins com a Interação das Mãos do Open XR Msft habilitada

  1. Reiniciar o editorRestart your editor

Observação

Este tutorial usa o OpenXR, mas os dois plug-ins que você instalou acima não fornecem atualmente o conjunto de recursos completo para o desenvolvimento do HoloLens.This tutorial uses OpenXR, but the two plugins you've installed above don't currently provide the full feature set for HoloLens development. O plug-in HandInteraction será suficiente para o gesto de "pinçar" que você usará mais tarde, mas se quiser ir além dos conceitos básicos, você precisará baixar o plug-in do OpenXR.The HandInteraction plugin will suffice for the "Pinch" gesture you'll use later, but if you want to go beyond the basics you'll need to download the OpenXR plugin.

Com os plug-ins habilitados, você pode se concentrar em preenchê-lo com conteúdo.With the plugins enabled, you can focus on filling it with content.

Criar um nívelCreating a level

Sua próxima tarefa será criar uma configuração de jogador com um ponto de partida e um cubo para referência e escala.Your next task is to create a player setup with a starting point and a cube for reference and scale.

  1. Selecione Arquivo > Novo Nível e escolha Nível Vazio.Select File > New Level and choose Empty Level. A cena padrão no visor agora deve estar vaziaThe default scene in the viewport should now be empty
  2. Na guia Modos, selecione Básico e arraste PlayerStart para a cenaFrom the Modes tab, select Basic and drag PlayerStart into the scene
  • Na guia Detalhes, defina a Localização como o X = 0, Y = 0 e Z = 0 para colocar o usuário no centro da cena quando o aplicativo for iniciadoIn the Details tab, set Location to X = 0, Y = 0, and Z = 0 to place the user at the center of the scene when the app starts

A cena do editor do Unreal com a localização e o início do player adicionados

  1. Na guia Básico, arraste um Cubo para a cenaFrom the Basic tab, drag a Cube into the scene
  • Defina a Localização do cubo como X = 50, Y = 0 e Z = 0 para posicionar o cubo a 50 cm de distância do player no inícioSet the cube's Location to X = 50, Y = 0, and Z = 0 to position the cube 50 cm away from the player at start
  • Altere a Escala do cubo para X = 0,2, Y = 0,2 e Z = 0,2Change the cube's Scale to X = 0.2, Y = 0.2, and Z = 0.2

Você não poderá ver o cubo, a menos que adicione uma luz à cena, que será a sua última tarefa antes de testar a cena em questão.You can't see the cube unless you add a light to your scene, which is your last task before testing the scene.

  1. No painel Modos, alterne para a guia Luzes e arraste uma Luz Direcional até a cenaIn the Modes panel, switch to the Lights tab and drag a Directional Light into the scene
  • Posicione a luz acima de PlayerStart para que você possa vê-loPosition the light above PlayerStart so you can see it

Cena do editor do Unreal com o cubo e a luz direcional adicionados

  1. Acesse Arquivo > Salvar Atual, nomeie o nível Principal e selecione SalvarGo to File > Save Current, name your level Main, and select Save

Com a cena preparada, pressione Jogar na barra de ferramentas para ver o cubo em ação!With the scene set, press Play in the toolbar to see your cube in action! Quando tiver terminado de admirar seu trabalho, pressione Esc para interromper o aplicativo.When you're finished admiring your work, press Esc to stop the application.

Cena no modo de jogo com o cubo no meio da tela

Agora que a cena está configurada, vamos prepará-la para algumas interações básicas no RA.Now that the scene is set up, lets get it ready for some basic interactions in AR. Primeiro, você precisa criar uma Sessão de RA e pode adicionar blueprints para habilitar a interação das mãos.First, you need to create an AR Session and can add blueprints to enable hand interaction.

Como adicionar um ativo de sessãoAdding a session asset

As sessões de RA no Unreal não acontecem espontaneamente.AR sessions in Unreal don't happen by themselves. Para usar uma sessão, você precisará de um ativo de dados ARSessionConfig com o qual trabalhará, que será a sua próxima tarefa:To use a session, you need an ARSessionConfig data asset to work with, which is your next task:

  1. No Navegador de Conteúdo, selecione Adicionar Novo > Diversos > Ativos de Dados e verifique se você está no nível da pasta de Conteúdo raizIn the Content Browser, select Add New > Miscellaneous > Data Asset and make sure you're at the root Content folder level
  2. Selecione ARSessionConfig, clique em Selecionar e nomeie o ativo ARSessionConfig:Select ARSessionConfig, click Select, and name the asset ARSessionConfig:

Janela Selecionar classe de ativo de dados aberta com o ativo de configuração de sessão de RA realçado

  1. Clique duas vezes em ARSessionConfig para abri-lo, selecione Salvar com todas as configurações padrão e retorne para a Janela principal:Double-click ARSessionConfig to open it, Save with all default settings, and return to the Main window:

Janela Detalhes do ativo de configuração de sessão de RA

Com isso feito, a próxima etapa será verificar se a sessão de RA começa e é interrompida quando o nível é carregado e encerrado.With that done, your next step is to make sure the AR session starts and stops when the level loads and ends. A boa notícia é que o Unreal tem um blueprint especial chamado Blueprint de Nível que funciona como um grafo de eventos global em todo esse nível.Luckily, Unreal has a special blueprint called a Level Blueprint that acts as a level-wide global event graph. Conectar o ativo ARSessionConfig no Blueprint de Nível garante que a sessão de RA será disparada exatamente quando o jogo começar.Connecting the ARSessionConfig asset in the Level Blueprint guarantees the AR session will fire right when the game starts playing.

  1. Na barra de ferramentas do editor, selecione Blueprints > Abrir Blueprint de Nível:From the editor toolbar, select Blueprints > Open Level Blueprint:

Menu do Blueprint aberto com a opção Abrir blueprint de nível realçada

  1. Arraste o nó de execução (ícone de seta à esquerda) para o Evento BeginPlay e solte-oDrag the execution node (left-facing arrow icon) off Event BeginPlay and release
  • Pesquise pelo nó Iniciar Sessão de RA e clique em EnterSearch for the Start AR Session node and hit enter
  • Clique na lista suspensa Selecionar Ativo em Configuração de Sessão e escolha o ativo ARSessionConfigClick the Select Asset dropdown under Session Config and choose the ARSessionConfig asset

Grafo de blueprint com o evento Iniciar jogo conectado à função Iniciar sessão de RA

  1. Clique com o botão direito do mouse em qualquer lugar do EventGraph e crie um nó EndPlay de Evento.Right-click anywhere in the EventGraph and create a new Event EndPlay node.
  • Arraste o marcador de execução e solte-o e, em seguida, pesquise um nó Interromper Sessão de RA e clique em EnterDrag the execution pin and release, then search for a Stop AR Session node and hit enter
  • Clique em Compilar, Salvar e retorne para a Janela principalHit Compile, then Save and return to the Main window

Importante

Se a sessão de RA ainda estiver em execução quando o nível for encerrado, alguns recursos poderão parar de funcionar se você reiniciar o aplicativo durante o streaming para um headset.If the AR session is still running when the level ends, certain features may stop working if you restart your app while streaming to a headset.

Nó Encerrar jogo do evento anexado à função Parar sessão de RA

Como configurar entradasSetting up inputs

  1. Selecione Editar > Configurações de Projeto e acesse Mecanismo > EntradaSelect Edit > Project Settings and go to the Engine > Input
  2. Selecione o ícone + ao lado de Mapeamentos de Ação e crie as ações RightPinch e LeftPinch:Select the + icon next to Action Mappings and create RightPinch and LeftPinch actions:

Associando as configurações de entrada com os mapeamentos de ação de pinçagem à direita e à esquerda realçados

  1. Mapeie as ações RightPinch e LeftPinch para as respectivas ações Interação das mãos do OpenXR MSFT:Map the RightPinch and LeftPinch actions the to the respective OpenXR Msft Hand Interaction actions:

Mapeamentos de ação com as opções de Interação das mãos do OpenXR MSFT realçadas

Como configurar gestosSetting up gestures

Agora que configuramos as entradas, podemos chegar à parte interessante: Adicionar gestos!Now that we have setup the inputs, we can get to the exciting part: Adding gestures! Vamos girar o cubo com uma pinçagem à direita e encerrar o aplicativo com uma pinçagem à esquerda.Lets rotate the cube on the right pinch and quit the application on left pinch.

  1. Abra o Blueprint de Nível e adicione InputAction RightPinch e InputAction LeftPinchOpen the Level Blueprint and add an InputAction RightPinch and InputAction LeftPinch
  • Conecte o evento de pinçagem à direita a um AddActorLocalRotation com o seu Cubo como o destino e a Rotação Delta definida como X = 0, Y = 0 e Z = 20.Connect the right pinch event to an AddActorLocalRotation with your Cube as the target and Delta Rotation set to X = 0, Y = 0, and Z = 20. O cubo agora será girado em 20 graus sempre que você pinçarThe cube will now rotate by 20 degrees every time you pinch
  • Conecte o evento de pinçagem à esquerda para Encerrar o JogoConnect the left pinch event to Quit Game

Blueprint de nível aberto com as ações de entrada para eventos de pinçagem à direita e à esquerda

  1. Nas configurações de Transformação do cubo, defina a Mobilidade como Móvel para que ele possa ser movido dinamicamente:In the cube's Transform settings, set Mobility to Movable so it can move dynamically:

Configurações de transformação com a propriedade de mobilidade realçada

Neste ponto, você está pronto para implantar e testar o aplicativo.At this point, you're ready to deploy and test the application!