Criar um estilo de realidade aumentada Pokémon GO jogo com Vuforia

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:
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.
Propaganda
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.
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.
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.
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.
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 .
ARCamera Prefab
  • 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.
Cole a chave de licença na pré-fabricada ARCamera
  • 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.
Aplique as alterações na pré-fabricada ARCamera
Chegou a hora de verificar se o ambiente está funcionando corretamente. 
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 
Pressione o botão PLAY no Unity
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.
Configurações de criação de unidade
  • Clique em Player Settings e configure o projeto na janela Inspector .
Configurações do Player do Unity
  • 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.
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 .
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.
Opções de Transformação ARCamera
  • Crie um  objeto Cube a partir do Objeto de Jogo> Objeto 3D> Cubo .
Crie um objeto de 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.
Alterar a rotação e a escala da posição do cubo
  • 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.
O cubo permanece no lugar mesmo depois que o dispositivo gira
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 Startfunçã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.
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.
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

Postagens mais visitadas deste blog

Tutorial: Usando SQLite no Unity3D com C#

Criando um jogo multiplayer no Unity 3D com Photon Unity Networking – Parte 01

Tutorial: Utilizando Atributos no Unity3D