[Existem GIFs 3D embaixo do corte]A realidade aumentada (RA) tornou-se repentinamente um termo muito popular. Graças ao Vuforia, os desenvolvedores podem
complementar facilmente
o mundo físico com conteúdo digital.
Embora o lançamento do
ARKit e
ARCore tenha ajudado a aumentar a popularidade da realidade aumentada, outras plataformas e SDKs já existiam. Um deles era Vuforia; e, recentemente, a Unity
firmou um contrato de parceria com a Vuforia e integrou essa plataforma de AR ao mecanismo de jogo Unity.
Neste tutorial, criarei um jogo de realidade aumentada usando o Vuforia SDK integrado ao mecanismo Unity. No processo, falarei sobre os seguintes componentes principais:
- Configurar a transferência de dados da câmera de realidade aumentada
- Rastreamento de imagens - o que é e como funciona
- Anexando conteúdo digital a um objeto físico
- Crie interações personalizadas que são acionadas dependendo do que a câmera vê
Nota: este tutorial sobre Vuforia pressupõe que você já conhece os conceitos básicos de desenvolvimento no Unity. Se você é novo no Unity, confira o ótimo tutorial Introdução ao Unity .
Desenvolvimento de jogos de realidade aumentada no Unity
Existem muitos dispositivos de RA no mercado, mas o principal objetivo dos aplicativos de RA é o espaço móvel de plataformas como iOS e Android. É aqui que a combinação de Unity e Vuforia é conveniente - no desenvolvimento de plataforma cruzada. Outra vantagem é que o aplicativo pode ser testado no editor. Para isso, você só precisa de uma webcam!
Antes de começar, faça o download da versão mais recente do Unity e instale o componente
Vuforia Augmented Reality Support . Se você usa o
Unity Hub , pode adicionar este componente a uma versão já instalada do Unity.
Começando a trabalhar
Agora que você possui o Unity, o Vuforia e uma webcam, é necessário fazer o download de um projeto de amostra (
daqui ).
Após o download, extraia os arquivos e abra o projeto
Como criar um jogo de realidade aumentada usando o Vuforia Starter no Unity. Quando o projeto for carregado, abra a cena
Starter na pasta
Scenes e observe a janela Hierarchy:
Depois de revisar a composição do projeto, clique no botão
Reproduzir no editor para preencher o pedido no nosso jogo de pizza.
Ótimo, podemos brincar de pizza, mas nosso verdadeiro desafio é transformar isso em um jogo de realidade aumentada.
Nota: Os ativos da interface do usuário para este tutorial foram baixados do shareicon.net
.
Conheça o Chef Vuforia
Para fazer isso, precisamos fazer com que a pizza virtual apareça na imagem do rastreador que possuímos no mundo real. Depois de adicionar o recheio ao pedido, você pode "servir" fisicamente a pizza, tirando-a da visibilidade da câmera ...
Mas tudo tem seu tempo. Primeiro, você precisa substituir a
câmera principal por uma câmera AR . Remova a
câmera principal da cena e
clique com o
botão direito do mouse na
hierarquia .
Em seguida, adicione
Vuforia -> AR Camera . Isso abrirá esta janela:
Clique em
Importar e aguarde o Pacote Vuforia ser importado para o projeto, e alguns arquivos serão adicionados.
Você pode ignorar os novos arquivos nas pastas
Editor e
Streaming Assets . Estes são apenas modelos; Os arquivos que precisamos estão incluídos no projeto.
A pasta
Vuforia contém todos os prefabs e scripts usados pela plataforma Vuforia que iremos usar.
Também vale a pena mencionar o arquivo
VuforiaConfiguration dentro da pasta
Resources . Este arquivo foi adicionado porque é necessária uma licença para desenvolver o aplicativo Vuforia. No entanto, se desejar, você pode obter uma licença de desenvolvedor gratuita para o
Vuforia Developer Portal .
Nota: se o seu projeto não tiver uma Chave de Licença de Aplicativo, ela poderá ser encontrada no arquivo LEIA-ME. Copie a linha no campo inspetor do arquivo
VuforiaConfiguration .
Agora que temos a Câmera AR em cena, só há uma coisa a fazer: ativar a Realidade Aumentada!
Vá para
Editar -> Configurações do projeto -> Player . Role para baixo até as opções
XR Settings e verifique se a caixa de seleção
Vuforia Augmented Reality Supported está marcada.
Clique no editor do
Play e diga olá para si mesmo!
Nota: se você clicou em play e a tela “Falha na inicialização do Vuforia” aparece, tente reiniciar o Unity. Este é um erro aleatório que aparece apenas em alguns sistemas.
Introdução ao reconhecimento de padrões
Admirar-se é ótimo, é claro, mas não íamos fazer um jogo de pizza?
Por padrão, o Vuforia funciona com o
reconhecimento de imagem . O reconhecimento de padrões, também chamado de Tracker Recognition ou Image Tracking, é um processo no qual uma câmera reconhece uma imagem predefinida e sabe o que fazer com ela, por exemplo, renderiza algum conteúdo sobre ela. Isso funciona melhor quando a imagem de rastreamento, de alguma forma, corresponde ao conteúdo, por exemplo, plantas baixas para renderização de construção funcionam bem na parte superior da imagem com a construção.
Como funciona: é muito importante escolher uma imagem de boa qualidade para rastreamento. Ao usar o Vuforia, você pode carregar a imagem selecionada no portal do desenvolvedor para verificar a qualidade de seu rastreamento, e isso deve ser feito
antes de iniciar o desenvolvimento. O portal do desenvolvedor atribui uma classificação à imagem, mas, mais importante, mostra seus "pontos característicos". Para que o rastreador seja bom, esses pontos característicos (pontos de destaque) devem ser densamente distribuídos sobre a imagem e não deve haver nenhum padrão repetitivo neles. Em tempo de execução, a câmera procura esses pontos característicos para calcular sua localização em relação à imagem.
Para este tutorial, o banco de dados de imagem e rastreamento já está configurado. A imagem da pizza está localizada na pasta Materiais que você baixou anteriormente. Idealmente, imprima-o. Ou você pode abri-lo em algum dispositivo digital e depois "mostrá-lo" para a câmera. Veja como é a imagem no banco de dados do Vuforia Tracker:
Como você pode ver, os pontos característicos estão bem distribuídos. Também é pizza, o que é conveniente!
Adicionando destinos de imagem à cena
É hora de fazer a mágica! Faremos uma pizza virtual aparecer em cima da nossa pizza. Novamente, use o menu
Criar na
Hierarquia e selecione
Vuforia -> Imagem .
Agora temos um
GameObject de destino de imagem em cena. Olhe para este alvo no inspetor e você verá vários componentes. Os mais importantes são o
Comportamento do destino da imagem e o
manipulador de eventos rastreáveis padrão . Examinaremos o segundo com mais detalhes posteriormente, mas, por enquanto, verifique se as opções da lista suspensa
Comportamento de destino da
imagem estão configuradas da seguinte maneira:
- O banco de dados está definido como RW_ItsaPizza
- Destino da imagem definido como PizzaClipArt
Lembra dos arquivos adicionados anteriormente ao projeto que eu pedi para ignorar? Você os encontrou! A Vuforia está adicionando vários bancos de dados de amostra do Image Target para que possamos começar a desenvolver e usá-los como exemplo, como o que estamos usando, já adicionado aos materiais.
Nota: o Pizza Tracker é o único destino de imagem no seu banco de dados; no entanto, pode haver centenas de imagens em um banco de dados. Além disso, pode haver vários bancos de dados em um aplicativo.
Agora que configuramos a
Câmera AR e o
Rastreador de imagens em cena, temos tudo o que você precisa para que a realidade aumentada funcione! No Editor, clique no botão
Reproduzir e coloque a imagem impressa na frente da câmera.
Temos pizza!
Anexando objetos de jogo aos rastreadores como objetos filhos
A pizza é um pouco pequena, mas está firmemente presa à imagem do rastreador. Você também pode notar que, se você remover a imagem rastreada, a pizza permanecerá no ar.
O fato é que, enquanto a webcam pode ver o
rastreador de imagens , Vuforia é capaz de atualizar a posição da
câmera AR na cena. Se você quiser ver isso em ação, configure o Unity Editor para que as janelas
Game e
Scene fiquem visíveis ao mesmo tempo, selecione
AR Camera e clique em Play.
Como fazer com que a pizza se comporte corretamente quando a câmera está funcionando? Selecione
ImageTarget na hierarquia. Você verá que sua escala em cada eixo é
10 . Isso é controlado pelo componente
Image Target Behavior . Na seção avançada, você pode ver que o parâmetro
Width tem um valor
10 . Foi definido quando a imagem foi carregada no site do desenvolvedor da Vuforia.
Dica: você não entende por que o Image Target foi definido como largura 10 neste tutorial? Quando o tamanho não é um fator significativo para o aplicativo, defini-lo como 10 fornece à câmera uma maior probabilidade de rastreamento, mantendo uma boa posição para o conteúdo entre os planos próximos e distantes da câmera AR. No entanto, às vezes é necessário que a realidade aumentada tenha uma certa escala. Nesse caso, você precisa definir o tamanho do rastreador de imagens para que ele corresponda às medidas físicas ao fazer o upload no portal do desenvolvedor.
Agora selecione
Pizza GameObject na
Hierarquia . Arraste-o para
ImageTarget para torná-lo filho. A escala mudará para
(X: 0.1, Y: 0.1, Z: 0.1)
. Retorne aos valores
(X: 1, Y: 1, Z: 1)
e também mude a Posição até
0.01
ao longo do eixo
Y. Graças a isso, a
Pizza estará em conformidade com o
ImageTarget .
Pressione
Reproduzir novamente e você verá que a pizza está sobre a imagem e também desaparece quando a imagem desaparece do quadro.
Explorando DefaultTrackableEventHandler
Esse comportamento é obtido do
DefaultTrackableEventHandler do
ImageTarget . Abra o script e visualize-o.
O script é bem comentado, mas vale a pena prestar atenção em alguns aspectos:
- A função Iniciar registra esse script como um manipulador de eventos para o TrackableBehaviour (nesse caso, ImageTargetBehaviour ).
- OnDestroy remove esse link.
- OnTrackableStateChanged é a função mais importante. O código dela diz o que deve acontecer quando o estado de rastreamento é alterado.
- OnTrackingFound e OnTrackingLost são chamados de OnTrackableStateChanged . No DefaultTrackableEventHandler, eles alternam os componentes Renderer , Collider e Canvas de qualquer filho.
Quando a câmera detecta uma imagem, ela não move mais a
Câmera AR ; ela também ordena que o GameObject
Pizza ative todos os seus componentes
Renderer e, quando a imagem desaparece da câmera, ele novamente ordena que os desative.
Diger esta informação por enquanto.
Crie suas próprias ações de rastreamento
É hora de fazer algo com esta informação!
Remova o componente
DefaultTrackableEventHandler do
ImageTarget . Em seguida, adicione o
PizzaTrackableEventHandler , que pode ser encontrado na pasta
Scripts . Em seguida, abra
PizzaTrackableEventHandler . Este é um clone de
DefaultTrackableEventHandler , mas o código em
OnTrackingFound e
OnTrackingLost foi excluído -
você precisa resolver esse problema!
Habilitar e desabilitar os componentes do
Renderer é útil em quase todos os aplicativos de recuperação de direitos, então vamos recuperar esse código. Se você ficar preso, você pode copiá-lo do
DefaultTrackableEventHandler ou encontrá-lo no spoiler abaixo.
Código protected virtual void OnTrackingFound() { var rendererComponents = GetComponentsInChildren<Renderer>(true);
Estamos prontos para transformar esse projeto em um jogo de realidade aumentada!
Veja a interface do usuário e encontre o botão que o jogador precisa pressionar para concluir a pizza.
Como você pode ver, quando um botão é pressionado, o evento
GameManager.CompleteOrder()
chamado. Em vez de forçar o jogador a pressionar o botão, verifique se ele "serviu" a pizza para concluir o pedido (movendo o rastreador para fora da visibilidade da câmera).
No início de
PizzaTrackableEventHandler, adicione um
UnityEvent para chamar quando Image perder o rastreamento.
using Vuforia; using UnityEngine; using UnityEngine.Events; public class PizzaTrackableEventHandler : MonoBehaviour, ITrackableEventHandler { public UnityEvent OnTrackingLostEvent; ...
Agora vamos chamar o evento no método
OnTrackingLost :
protected virtual void OnTrackingLost() { var rendererComponents = GetComponentsInChildren<Renderer>(true);
Isso torna o
PizzaTrackableEventHandler mais flexível, porque agora podemos definir a execução de qualquer ação se o rastreamento for perdido. Salve o
PizzaTrackableEventHandler , retorne ao Unity Editor e aguarde a conclusão da compilação. Quando terminar, faça com que
GameManager.CompleteOrder()
chamado quando o rastreador de pizza de rastreamento for perdido. Por fim, desative ou remova o
CompleteOrderButton na interface do usuário.
Salve a cena, clique em
Reproduzir e sirva pizza!
Para onde ir a seguir
Parabéns, você concluiu o tutorial!
Um exemplo de projeto pode ser baixado
aqui .
Para obter mais informações sobre como desenvolver o Vuforia no Unity, consulte a
Biblioteca do desenvolvedor do
Vuforia ou
o tutorial do Unity .
Não se esqueça de configurar uma conta de desenvolvedor no
portal Vuforia . Você também pode tentar enviar vários rastreadores diferentes para verificar como eles são rastreados.
Para mais detalhes, leia sobre
os botões virtuais . O site da Vuforia possui materiais de amostra. Verifique se você pode criar esses botões virtuais para substituir a interface do usuário em um jogo de pizza.
Crie novas idéias para jogos de realidade aumentada. Talvez este seja um jogo de luta com cartas em que criaturas pulam diretamente das cartas? E em defesa da torre, onde você controla um helicóptero de combate usando seu telefone?