Criar um estilo de realidade aumentada Pokémon GO jogo com Vuforia
1 Introdução
No primeiro post desta série, falamos sobre o quão incrível Vuforia é para criar experiências em Realidade Aumentada , e agora estamos prontos para praticar esses conceitos em um aplicativo real. Neste tutorial, começaremos a brincar com Realidade Aumentada usando o Vuforia no Unity 3D . Vamos aprender como configurar o Vuforia e começar a desenvolver um jogo AR a partir do zero, adotando uma lógica semelhante à usada no Pokémon GO!
Não será necessário ter nenhuma experiência anterior em Unity ou Vuforia para seguir este tutorial.
Se você quer se aprofundar, por que não aprender sobre um dos mais fundamentais conceitos de AR, marcadores, em nosso minicurso:
1.1. Recapitulação Rápida: Como Funciona o Vuforia?
O Vuforia usa a alimentação da câmera do dispositivo combinada com dados de acelerômetro e giroscópio para examinar o mundo. Vuforia usa a visão computacional para entender o que "vê" na câmera para criar um modelo do ambiente. Depois de processar os dados, o sistema pode, grosso modo, localizar-se no mundo, conhecendo suas coordenadas: onde está acima, abaixo, esquerda, direita e assim por diante.
Se você não sabe o que é Vuforia, dê uma olhada no primeiro post desta série.
1.2. O que vamos aprender?
Este tutorial está dividido em duas partes. Neste, veremos algumas das particularidades de Vuforia no Unity 3D, aprenderemos a configurar o ambiente e também começaremos a desenvolver um pequeno jogo de RA chamado Shoot the Cubes. Nós vamos prestar especial atenção ao ARCamera Prefab, uma das partes mais importantes de Vuforia na Unity.
Na segunda parte, continuaremos desenvolvendo o jogo Shoot the Cubes, adicionando interatividade e tornando-a mais interessante. Esta seção não vai muito nas particularidades de Vuforia, já que a ideia será explorar algumas possibilidades oferecidas pela Unity para criar uma experiência envolvente de Realidade Aumentada.
2 Vuforia no Unity
O Unity é um popular e poderoso mecanismo de jogo que é fácil de usar e pode compilar jogos para múltiplas plataformas. Existem algumas vantagens em usar o Unity para criar experiências AR com o Vuforia. É possível segmentar todos os sistemas suportados pelo Vuforia, incluindo os óculos inteligentes. É mais simples de usar, graças às pré - fabricadas fornecidas pelo SDK da Vuforia. Usando apenas o Unity é possível acessar todos os recursos disponíveis no Vuforia.
2.1. Prefabs de Vuforia
Você pode acessar todos os recursos do Vuforia no Unity usando as prefabricadas Vuforia. Tudo o que você precisa fazer é arrastar o objeto para o palco e configurá-lo. Como o nome sugere, as prefabs são como modelos para criar e clonar objetos Unity completos com componentes e propriedades. Por exemplo, o ImageTarget representa imagens que podem ser usadas como destinos. Vamos dar uma olhada nas casas pré-fabricadas Vuforia disponíveis no Unity:
- ARCamera : O prefab mais importante. Ele gerencia a experiência geral de AR, controlando a qualidade da renderização, definindo o centro do mundo, a câmera do dispositivo a ser usada, o máximo de alvos a serem rastreados e assim por diante. Neste tutorial, concentraremos nossos esforços em entender como usar esse objeto.
- Destinos : Todos os alvos do Vuforia têm seus próprios prefab: ImageTarget , MultiTarget , CylinderTarget , ObjectTarget , UserDefinedTargetBuilder, VuMark, FrameMarker . Esses alvos serão reconhecidos pela ARCamera e iniciarão uma ação, como exibir um objeto 3D ou uma animação.
- CloudRecognition : usado para acessar destinos definidos no sistema de nuvem Vuforia.
- SmartTerrain e Prop : Esses objetos são usados no recurso Smart Terrain.
- TextRecognition e Word : Prefabs usados no recurso Reconhecimento de Texto .
- VirtualButton : Vuforia pode entender os Alvos como botões que podem ser fisicamente pressionados pelo usuário. Este prefab ajudará você a usar este recurso.
3. Criando Nossa Primeira Experiência AR
O jogo que vamos desenvolver é simples, mas ilustra bem os princípios da Realidade Aumentada, e nos ensinará alguns dos fundamentos de Vuforia. O objetivo do jogo é encontrar e disparar cubos que estão voando ao redor da sala. O jogador irá procurar os cubos usando o seu dispositivo e 'tocar' para atirar nas caixas. Não nos preocuparemos com pontuação, nível ou algo assim, mas você pode facilmente expandir esses aspectos do jogo.
3.1. Preparando Unidade para Vuforia
Antes de começarmos a brincar, precisaremos preparar o Unity for Vuforia. O processo é bastante simples, e basicamente precisamos importar o pacote SDK do Vuforia e adicionar uma pré-fabricada ARCamera ao nosso projeto.
- Crie uma conta de desenvolvedor no Vuforia.
- Faça o login e faça o download do Vuforia SDK for Unity.
- Abra o Unity e crie um novo projeto chamado "Shoot the Cubes".
- Depois que a janela do projeto Unity for aberta, acesse Assets> Import Package> Custom Package e selecione o SDK baixado.
- Importa tudo.
- Exclua o objeto Câmera na janela Hierarquia .
- Vá para o Gerenciador de licenças no portal do desenvolvedor do Vuforia e crie uma nova licença usando sua conta de desenvolvedor.
- Copie a chave de licença.
- De volta ao Unity, na janela Project , vá para Assets> Vuforia> Prefabs> ARCamera . Selecione o elemento e arraste-o para a janela Hierarquia .
- Com o ARCamera selecionado, no painel Inspetor , vá para Vuforia Behavior (Script) , encontre o campo Chave de licença do aplicativo e cole a licença que você criou no portal do desenvolvedor do Vuforia.
- Clique no botão Aplicar perto da parte superior do painel Inspetor para adicionar a chave de licença a todas as prefabs ARCamera neste projeto.
3.2. Testando se o Vuforia está funcionando
Chegou a hora de verificar se o ambiente está funcionando corretamente.
Usando a sua câmera do computador
Se você tem uma webcam no seu computador, você pode pressionar o botão de reprodução do Unity para verificar se o ARCamera está funcionando. Será possível reconhecer alvos usando a webcam; no entanto, não será possível usar nenhum dado do sensor para testar sua experiência de AR. Se a alimentação da câmera não mostrar a janela do jogo , existe a possibilidade de a câmera não ser compatível com o perfil da webcam fornecido pela ARCamera .
Configurando o aplicativo para ser executado em um dispositivo
A melhor maneira de testar seu aplicativo Vuforia é diretamente no dispositivo. Vamos compilar o projeto para o Android, mas os mesmos passos se aplicam aos dispositivos iOS.
- Primeiro, precisamos salvar a cena em que estamos trabalhando. Vá para Arquivo> Salvar Cena .
- Selecione a pasta Assets e crie uma nova pasta chamada Scenes .
- Salvar esta cena como ShootTheCubesMain .
- Vá para Arquivo> Configurações de Construção .
- Selecione Android e clique em Switch Platform . Se esta opção estiver desativada, você precisará fazer o download do SDK do Unity desejado para o dispositivo.
- Clique em Player Settings e configure o projeto na janela Inspector .
- Preste atenção a algumas opções: desative a Auto Graphics API e verifique se o OpenGLES2 está selecionado para a opção Graphics API .
- Digite o identificador do pacote .
- Para dispositivos Android, certifique-se de que o nível mínimo de APIselecionado seja a API 9 ou superior. Você também precisará usar o ARMv7 para a opção Filtro de dispositivo .
- Se você seguiu as etapas corretamente, o projeto está pronto para ser construído. No entanto, se esta for a primeira vez que você está compilando um projeto Unity para Android ou iOS, é necessário configurar o Unity para esses dispositivos. Siga este guia para Android e este para iOS .
- Para executar o projeto, volte para o Build Settings e clique em Build and Run .
Após o prédio, o aplicativo será instalado no seu dispositivo. Por enquanto, tudo o que você deve esperar é ver o feed da câmera no seu dispositivo sem nenhum erro. Se você tem isso, tudo funcionou corretamente.
3.3. Usando o Prefab ARCamera
O objetivo do jogo Shoot the Cubes é procurar e disparar cubos voadores usando a câmera do dispositivo e sensores. Essa abordagem é semelhante à usada no Pokémon GO. Para conseguir isso, só precisamos usar o ARCameraVuforia pré-fabricado .
Existem muitos scripts anexados ao ARCamera . Por enquanto, o único que você precisa entender é o script Vuforia Behavior . Vamos dar uma olhada em suas opções:
- Chave de Licença do Aplicativo : Onde a chave de licença do Vuforia deve ser inserida.
- Modo de dispositivo da câmera : controla a qualidade de renderização dos objetos.
- Imagens rastreadas simultâneas máximas: define os alvos máximos rastreados ao mesmo tempo. Vuforia não recomenda mais de cinco ao mesmo tempo.
- Max Objetos Rastreados Simultâneos : Define o máximo de objetos rastreados ao mesmo tempo. Mais uma vez, Vuforia não recomenda mais do que cinco ao mesmo tempo.
- Carregar destinos de objeto na detecção : carrega o objeto associado ao destino assim que o destino é detectado.
- Direção da câmera : Escolha qual câmera do dispositivo usar.
- Espelhar o fundo do vídeo : Define se o feed da câmera deve ser espelhado.
- Modo Word Center : A opção mais relevante para o nosso projeto. Define como o sistema deve localizar o centro do mundo.
- SPECIFIC_TARGET : usa um alvo específico como referência para o mundo.
- FIRST_TARGET : O primeiro alvo detectado será usado como referência para o mundo.
- CÂMERA : Usa a câmera como um ponto de referência para o mundo.
- DEVICE_TRACKING : usa o sensor do dispositivo como referência para definir as posições do mundo. Esta é a opção que precisamos escolher para o nosso pequeno projeto.
Por enquanto, tudo o que você precisará alterar na ARCamera é o Modo do Word Center . Clique no elemento ARCamera na hierarquia e, no painel Inspetor , altere o modo do World Center para DEVICE_TRACKING .
3.4. Usando o sensor do dispositivo para encontrar o centro do mundo
Vamos adicionar um cubo ao palco e testar se o ARCamera está funcionando corretamente.
- Certifique-se de que a posição e a rotação da ARCamera estão definidas para 0 nos eixos X, Y e Z.
- Crie um objeto Cube a partir do Objeto de Jogo> Objeto 3D> Cubo .
- Mover o cubo Posição nas Z eixo a 10 e 0 no X e Y .
- Dimensione o objeto para 2 no eixo X , Y e Z.
- Gire o cubo 45 graus nos eixos X e Y.
- Você pode pressionar o botão play para verificar se o cubo está posicionado corretamente.
- Quando tiver certeza de que o cubo está posicionado corretamente, crie o projeto novamente e teste-o no dispositivo. Para construir, vá para Arquivo> Construir e Executar .
Você terá que olhar ao redor girando seu dispositivo para encontrar o cubo. Você notará que o objeto permanece no mesmo lugar, mesmo depois de você girar o dispositivo para longe dele. É como se o cubo "existisse" no mundo real, mas só pudesse ser visto com a câmera do dispositivo.
3.5. Definir a posição dos elementos de acordo com ARCamera
O primeiro problema com a nossa aplicação até agora é que o cubo pode aparecer em qualquer lugar e o usuário terá que olhar em volta para encontrá-lo. Como o centro do mundo é definido de acordo com os sensores do dispositivo, não podemos ter certeza da posição real dos elementos. Isso ocorre porque o usuário pode começar com o dispositivo em qualquer orientação e porque a maneira como a rotação é medida varia de dispositivo para dispositivo.
Para se certificar de que as entidades de AR partem do ponto de vista do usuário, a abordagem mais fácil é esperar que Vuforia defina o centro do mundo e encontre a rotação ARCamera e, em seguida, organize a localização inicial dos elementos de acordo com isso. orientação.
Vamos criar um Gerenciador de Spawn para definir a posição dos cubos a serem gerados. O gerente definirá sua posição de acordo com a rotação da ARCamera . Ele aguardará até que a rotação seja definida e, em seguida, mova 10 unidades para a frente da câmera.
- Crie dois objetos vazios com Objeto de Jogo> Criar Vazio. Clique com o botão direito em um dos objetos que você acabou de criar e renomeie para _SpawnController .
- Altere o nome do outro objeto vazio para _GameManager .
- Na janela Project , selecione a pasta Assets e crie uma nova pasta chamada Scripts .
- Na pasta Scripts , crie um script C # chamado SpawnScript .
- Arraste o SpawnScript para o _SpawnController .
- Clique duas vezes no SpawnScript para editá-lo.
Primeiro vamos adicionar o pacote Vuforia.
01
02
03
04
05
06
07
08
09
10
| using UnityEngine; using System.Collections; // We'll need to use Vuforia package to // make sure that everything is working using Vuforia; public class SpawnScript : MonoBehaviour { } |
Para acessar o ARCamera , use
Camera.main
. Vamos criar uma função para obter a posição da câmera e definir o cubo para gerar 10 unidades a partir deste ponto.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
| public class SpawnScript : MonoBehaviour { // Define the position if the object // according to ARCamera position private bool SetPosition() { // get the camera position Transform cam = Camera.main.transform; // set the position 10 units forward from the camera position transform.position = cam.forward * 10; return true ; } } |
Vamos mudar a posição apenas uma vez da
Start
função. ChangePosition
é uma co-rotina que espera uma pequena quantidade de tempo antes de definir a posição.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
| private bool mPositionSet; void Start () { // Defining the Spawning Position StartCoroutine( ChangePosition() ); } // We'll use a Coroutine to give a little // delay before setting the position private IEnumerator ChangePosition() { yield return new WaitForSeconds(0.2f); // Define the Spawn position only once if ( !mPositionSet ){ // change the position only if Vuforia is active if ( VuforiaBehaviour.Instance.enabled ) SetPosition(); } } |
Vamos testar o script:
- De volta ao Unity, clique no objeto _SpawnController e use Game Object> 3D Object> Sphere para inserir uma esfera dentro de _SpawnController .
- Selecione a esfera e verifique se sua posição está definida como 0 no eixo X, Y e Z.
- Agora vamos sobrepor o cubo e o _SpawnController para que você possa notar a importância do script. Selecione _SpawnController e defina sua posição para 0 no eixo X e Y e para 10 no eixo Z, a mesma posição do cubo.
Os elementos começam a se sobrepor; no entanto, depois de criar e executar o aplicativo em um dispositivo, você verá que o _SpawnController e sua esfera aparecerão na frente da câmera e o cubo estará em outro local. Vá em frente e teste! Verifique se você está olhando para o dispositivo logo quando o aplicativo é iniciado.
4. Conclusão
Parabéns, você criou sua primeira experiência em Realidade Aumentada. Sim, é um pouco difícil, mas está funcionando! Neste tutorial você aprendeu a usar o prefab principal do Vuforia no Unity, o ARCamera . Você também aprendeu como configurá-lo e como usar os sensores do dispositivo para criar a ilusão de que um objeto virtual é inserido no mundo.
4.1. Qual é o próximo?
No próximo tutorial , vamos melhorar este princípio para criar um jogo real e uma experiência mais envolvente. Continuaremos a desenvolver o jogo Shoot the Cubes, adicionando alguma interatividade e explorando as possibilidades do Unity para criar um interessante AR Game. Nós vamos fazer os cubos aparecerem e voar, e deixaremos o jogador procurar e destruí-los, disparando um laser para fora do dispositivo.
Te vejo em breve!
Comentários