Iniciando o desenvolvimento em realidade mista com o UrhoSharp e Hololens – Parte 02 | iMasters
Iniciando o desenvolvimento em realidade mista com o UrhoSharp e Hololens – Parte 02
Se você perdeu a primeira parte, acesse no link abaixo:
Bom, no artigo anterior vimos a estrutura básica de um projeto UrhoSharp para o Hololens, baseado no código que temos de exemplo ao criar um novo projeto utilizando o template, apenas com formas básicas e texturas simples.
Todo o desenvolvimento de um projeto de realidade virtual/aumentada/mista, passa inevitavelmente pela criação de modelos 3D que vão representar os objetos do mundo virtual.
Para um programador, isso tudo é meio alienígena, mas calma que vamos tentar deixar isso um pouco mais simples, e nos próximos artigos nos preocuparemos com detalhes sobre ferramentas de modelagem, texturas, animações, esqueletos, física, etc. Agora vamos nos concentrar apenas em trazer um modelo pronto e utilizar no projeto.
O UrhoSharp trabalha com modelos em formato .mdl proprietário, que podem ser obtidos convertendo um arquivo .FBX (formato comum para objetos 3D) utilizando o AssetsImporter, disponível no pacote do Urho3D, ou atráves do Blender por meio de um plugin de exportação para o Urho3D.
Observação: Em um próximo artigo, vou mostrar como executar esse procedimento passo a passo para que você possa trazer seus próprios modelos e animações para o projeto.
Baixar modelo mutante
Nesse link, os arquivos já estão organizados em pastas, conforme a estrutura necessária pra funcionar no projeto:
Caso queira baixar outros modelos, esse repositório no Git possui vários exemplos prontos pra uso:
E os último detalhes; o Visual Studio não vai entender logo de cara que os arquivos .ani e . mdl devem ser copiados na build, então precisamos ajustar manualmente nas propriedades:
Pronto, agora é só começar a programar:
Como podemos ver no código acima, é algo bastante simples. Após a inicialização, habilitar gestos e configuração da iluminação da cena, criamos o componente do personagem utilizando o tipo AnimatedModel.
Para adicionar as animações para o modelo, precisamos de um objeto do tipo AnimationController. Esse objeto vai ser responsável por executar uma animação (.ani) em um modelo carregado.
AnimationController animation
animation = mutantNode.CreateComponent<AnimationController>()
animation.Play("Animations/Mutant_Walk.ani", 0, true, 0.2f)
O resultado no emulador será esse:
Carregamos os arquivos do modelo 3D, texturas e animações, depois carregamos o modelo 3D em um componente, e por fim adicionamos uma animação para esse modelo com pouquíssimas linhas de código. Agora vamos fazer algo mais legal. Vamos fazer o nosso personagem reagir a comandos de voz.
Agora vamos utilizar isso tudo já pensando na criação de um jogo com esses recursos básicos. Imagine que queremos criar um jogo de corrida, como o Temple Run: do que precisamos?
Bom, a primeira coisa é iniciar o jogo com o mutante de costas pra nós, então vou posicionar ele dessa maneira, ajustando a rotação no eixo Y e X para que ele fique de costas para a câmera, e também um pouco inclinado de modo a criar um efeito de perspectiva. Também precisamos ajustar um pouco a escala pra que ele fique um pouco menor, e trocar a animação de andar para uma de correr.
Depois vamos criar dois métodos simples: um para criar uma animação para executar o pulo, e mais duas compostas para virar a esquerda, e outra para virar a direita, que também deslocam o personagem lateralmente:
Assim, temos nosso mutante recebendo comandos para desviar à direita, à esquerda e pular:
Pronto! Agora, para termos um jogo de verdade e funcional, só falta adicionar obstáculos e detectar a colisão para quando o mutante esbarrar em algo, contar pontos, criar mecanismos diversos para pontuação, etc.