Índice:

Realidade Aumentada Vuforia 7 Detecção de plano de solo: 8 etapas
Realidade Aumentada Vuforia 7 Detecção de plano de solo: 8 etapas

Vídeo: Realidade Aumentada Vuforia 7 Detecção de plano de solo: 8 etapas

Vídeo: Realidade Aumentada Vuforia 7 Detecção de plano de solo: 8 etapas
Vídeo: Vuforia - Augmented Reality Course 2024, Novembro
Anonim
Realidade Aumentada Vuforia 7 Detecção de plano de solo
Realidade Aumentada Vuforia 7 Detecção de plano de solo
Realidade Aumentada Vuforia 7 Detecção de plano de solo
Realidade Aumentada Vuforia 7 Detecção de plano de solo

O SDK de realidade aumentada da Vuforia para Unity 3D usa ARCore e ARKit para detectar aviões terrestres em AR. O tutorial de hoje usará sua integração nativa no Unity para fazer um aplicativo AR para Android ou IOS. Teremos um carro caindo do céu no chão, e suas portas se abrirão automaticamente quando nos aproximarmos. Também faremos vídeos em RA. Para acompanhar, você precisará do Unity 3D instalado no seu computador (é gratuito). Estas instruções são para iniciantes, então vamos passar por cima de tudo em detalhes!

A melhor parte do SLAM da Vuforia é a quantidade de dispositivos IOS e Android que ele suporta. Uma lista completa de dispositivos pode ser encontrada aqui:

library.vuforia.com/articles/Solution/grou…

Etapa 1: iniciar um novo projeto

Inicie um novo projeto
Inicie um novo projeto

Baixe o Unity 3D aqui se você ainda não o tiver:

Certifique-se de instalar o suporte para Realidade Aumentada Vuforia e Android ou IOS dependendo de qual dispositivo você possui.

Abra o Unity e comece um novo projeto do Unity, chame como quiser.

Primeiro, vamos criar um aplicativo configurado para ser construído para que não nos esqueçamos. Então, salve a cena e chame-a de "principal".

Acesse o arquivo, crie as configurações e mude sua plataforma de construção para Android ou IOS. Navegue até as configurações de XR nas configurações do jogador e marque Vuforia Augmented Reality Supported.

Se você estiver no Android, não precisará fazer mais nada, mas no IOS, vá para outras configurações e certifique-se de colocar algo para o identificador de pacote. Use o formato "com. YourCompanyName. YourAppName."

Insira qualquer coisa para a descrição de uso da câmera e altere a versão de compilação mínima de destino para pelo menos 9.0.

Encerre isso e agora vamos configurar todo o resto.

Etapa 2: vamos configurar o Vuforia

Vamos configurar o Vuforia
Vamos configurar o Vuforia

Agora vamos configurar tudo.

Vá para gameobject no menu superior e clique em ARCamera. Agora exclua a câmera principal de sua cena.

Selecione o ARCamera e no lado direito do inspetor clique em Open Vuforia Configuration. Clique na coleção de conjuntos de dados e desmarque tudo porque não estamos usando alvos de imagem aqui.

Clique no rastreador de dispositivo e clique em rastrear a pose do dispositivo. Altere o rastreamento de rotacional para posicional.

Agora volte para a guia de objetos do jogo e clique em Vuforia, Ground Plane e Plane finder. Isso abriga os scripts que encontram nosso plano de solo.

A última coisa de que precisamos é o estágio do plano de solo, então vá para o objeto do jogo novamente no menu superior e clique em Vuforia, Plano de solo e escolha Estágio do plano de solo. Agora, qualquer coisa que acreditamos nisso aparecerá no AR.

Etapa 3: adicionar um novo script

Adicione um novo script
Adicione um novo script
Adicione um novo script
Adicione um novo script

O comportamento padrão dessa detecção de plano de solo é colocar um novo objeto toda vez que você pressiona na tela. O que queremos é apenas reposicionar o objeto toda vez que você pressiona na tela. Então, clique com o botão direito na pasta de ativos e crie um novo script C #. Chame-o de "DeployStageOnce" e substitua tudo por este código:

using System;

using UnityEngine; usando Vuforia; public class DeployStageOnce: MonoBehaviour {public GameObject AnchorStage; private PositionalDeviceTracker _deviceTracker; private GameObject _previousAnchor; public void Start () {if (AnchorStage == null) {Debug. Log ("AnchorStage deve ser especificado"); Retorna; } AnchorStage. SetActive (false); } public void Awake () {VuforiaARController. Instance. RegisterVuforiaStartedCallback (OnVuforiaStarted); } public void OnDestroy () {VuforiaARController. Instance. UnregisterVuforiaStartedCallback (OnVuforiaStarted); } private void OnVuforiaStarted () {_deviceTracker = TrackerManager. Instance. GetTracker (); } public void OnInteractiveHitTest (HitTestResult result) {if (result == null || AnchorStage == null) {Debug. LogWarning ("Teste de acerto é inválido ou AnchorStage não definido"); Retorna; } var anchor = _deviceTracker. CreatePlaneAnchor (Guid. NewGuid (). ToString (), resultado); if (âncora! = nulo) {AnchorStage.transform.parent = anchor.transform; AnchorStage.transform.localPosition = Vector3.zero; AnchorStage.transform.localRotation = Quaternion.identity; AnchorStage. SetActive (true); } if (_previousAnchor! = null) {Destroy (_previousAnchor); } _previousAnchor = âncora; }}

Para garantir que esse script seja usado, precisamos chamar a função OnInteractiveHitTest (), então volte ao Unity e clique no objeto de jogo do localizador de avião. Altere o modo de Automático para Interativo. Arraste o script que acabamos de fazer para o objeto de jogo do localizador de planos. Remova o script ContentPositioningBehavior. Você verá um local para um objeto de jogo no script DeployStageOnce, arraste o localizador de avião para lá e encontre este script, escolha a função OnInteractiveHitTest no topo da lista. Agora nossa função será chamada sempre que o usuário clicar na tela!

Etapa 4: vamos adicionar o carro

Vamos adicionar o carro
Vamos adicionar o carro

Baixe este modelo 3D de carro gratuitamente aqui (certifique-se de obter a versão.obj):

www.turbosquid.com/3d-models/max-exterior-…

Além disso, baixe este som porque vamos tocá-lo quando o carro atingir o solo:

freesound.org/people/PaulMorek/sounds/1967…

Descompacte ambos os arquivos e arraste-os para a pasta de ativos.

Clique no carro e olhe para a direita, altere Usar Materiais Embutidos para Usar Materiais Externos (Legado) no menu suspenso na parte superior. Agora poderemos mudar a cor de todos os materiais do carro.

Arraste o carro para o estágio do plano terrestre, tornando-o uma criança. Altere a escala para 0,035 em x, y e z.

Agora passe por cada um dos objetos do jogo infantil dos carros e mude seus materiais para a cor que você quiser.

Adicione um componente de corpo rígido ao objeto de jogo raiz do carro e também adicione um colisor de caixa, dimensione-o de forma que cubra todo o carro. Além disso, adicione um colisor de caixa ao estágio do plano de solo e dimensione-o de forma que seja algumas vezes mais largo do que o estágio do plano de solo. Desta forma, podemos derrubar o carro do céu e ele vai bater no chão usando o motor de física integrado do Unity.

Etapa 5: coloque o carro no céu

Coloque o carro no céu
Coloque o carro no céu

Adicione um componente de fonte de áudio ao objeto de jogo raiz do carro, arraste o som do acidente de carro para o local do clipe de áudio.

Agora precisamos fazer um script que colocará o carro no ar quando o usuário pressionar na tela e, em seguida, reproduzirá o som de batida quando o carro bater no solo. Então, clique com o botão direito na pasta de ativos e crie um novo script C # e chame-o de "CarController."

Substitua todo o código por este:

using System. Collections;

using System. Collections. Generic; using UnityEngine; classe pública CarController: MonoBehaviour {private bool soundPlayed = false; // A atualização é chamada uma vez por quadro void Update () {if (! SoundPlayed && transform.localPosition.y <.05f) {soundPlayed = true; StartCoroutine (DelayPlaySound ()); }} public void MoveCar () {transform.localPosition + = new Vector3 (0, 10, 0); transform.eulerAngles + = novo Vector3 (5, 20, 5); soundPlayed = false; } IEnumerator DelayPlaySound () {rendimento retornar novo WaitForSeconds (.2f); GetComponent (). Play (); }}

Adicione a função MoveCar ao evento OnInteractiveHitTest como na imagem acima. Agora ele será chamado quando o usuário clicar na tela.

Etapa 6: Portas do Lambo

Lambo Doors
Lambo Doors

Portanto, se você expandir o objeto do jogo de carro e encontrar as portas, perceberá que ambas as portas são uma única malha. Se quisermos abrir as portas, nossa única opção serão as portas do Lambo que se abrem verticalmente. Para fazer este trabalho, precisamos primeiro alterar seu ponto de articulação.

Faça um objeto de jogo vazio que seja filho do carro. Arraste as portas e torne-as filhas deste novo objeto de jogo. Mova o objeto do jogo pai para onde o ponto de pivô deveria estar, perto das dobradiças da porta. Agora mova as portas secundárias de volta ao lugar. Agora, quando giramos as portas pai, o ponto de pivô está no lugar certo.

Vamos fazer um script que abre as portas quando você chega perto do carro, mas antes de fazer isso precisamos de uma forma de "desencadear" o evento. Adicione um colisor de caixa ao seu objeto de jogo principal de porta e dimensione-o de forma que passe um pouco por cima do carro em ambas as direções. Verifique "isTrigger". Agora adicione um colisor de caixa à câmera principal e dimensione-o apropriadamente. Verifique também "isTrigger". Adicione um componente Rigid Body à sua câmera e desmarque "useGravity". Com sua câmera selecionada, altere sua tag para "MainCamera" na parte superior do inspetor.

Adicione um novo script chamado "LamboDoorBehavior" e adicione o código abaixo. Arraste o script até o pai da sua porta.

using System. Collections;

using System. Collections. Generic; using UnityEngine; public class LamboDoorBehavior: MonoBehaviour {private float currAngle = 0; flutuação privada desejadaAngle = 0; // A atualização é chamada uma vez por quadro void Update () {currAngle = Mathf. LerpAngle (currAngle, neededAngle, Time.deltaTime * 3f); transform.localEulerAngles = novo Vector3 (currAngle, 0, 0); } public void OpenDoors () {neededAngle = 60f; } public void CloseDoors () {neededAngle = 0; } void OnTriggerEnter (Collider col) {if (col. CompareTag ("MainCamera")) {OpenDoors (); }} void OnTriggerExit (Collider col) {if (col. CompareTag ("MainCamera")) {CloseDoors (); }}}

Este script fará com que suas portas abram lentamente quando você as fecha em AR usando a função Lerp () na unidade que interpola entre dois pontos (ou, neste caso, dois ângulos).

Etapa 7: Reproduzindo vídeo em RA

Reproduzindo vídeo em RA
Reproduzindo vídeo em RA
Reproduzindo vídeo em RA
Reproduzindo vídeo em RA

A última coisa que precisamos fazer é reproduzir o vídeo em RA.

Clique com o botão direito em qualquer objeto do jogo que seja filho do seu carro e crie um objeto 3D, Quad. Isso garantirá que o quadriciclo seja filho do seu carro. Posicione e redimensione este quadrilátero de modo que ele caiba dentro do painel do seu carro e pareça que deveria estar lá. É sobre isso que vamos reproduzir o vídeo.

Adicione um componente de player de vídeo ao seu quad. Mude a fonte para URL e encontre um link físico para um arquivo. MP4 ou arraste um arquivo de vídeo para sua pasta de ativos e, em seguida, arraste esse clipe para o slot vazio. Se você deseja transmitir um vídeo de uma URL, o Instragram é uma ótima fonte. Clique com o botão direito em qualquer vídeo do Instagram no Google Chrome e clique em inspecionar. Encontre a div que contém o vídeo e copie o link de lá (tenho esse método na foto acima).

Certifique-se de verificar o loop se quiser que ele toque mais de uma vez. Adicione um componente de fonte de áudio a este objeto de jogo e altere a fonte de saída para fonte de áudio no reprodutor de vídeo. Arraste sua fonte de áudio recém-criada para esse slot.

Finalmente terminamos!

Etapa 8: coloque o aplicativo no seu telefone

Coloque o aplicativo no seu telefone!
Coloque o aplicativo no seu telefone!

Se você estiver construindo para Android, basta acessar o arquivo, clicar em construir e executar com o telefone conectado.

Se você estiver criando para um iPhone ou iPad, certifique-se de baixar o Xcode da app store. Além disso, inscreva-se para obter uma conta gratuita de desenvolvedor da apple em www.apple.developer.com. Vá para o arquivo e clique em construir. Abra o arquivo que foi criado a partir do Xcode e conecte seu telefone. Escolha sua equipe de desenvolvimento e aperte o botão play.

Você pode ter que mover a câmera um pouco, mas espere um segundo e toque na tela e você verá seu carro cair do céu no chão! Agora você pode entrar e assistir ao vídeo no painel!

Divirta-se e diga-me se tiver alguma dúvida nos comentários!

Recomendado: