
Muitos desenvolvedores usam o AR em seus aplicativos há muito tempo. Uma boa ajuda para isso são as soluções de terceiros como o OpenCV ou o Wikitude. Com o lançamento do iOS 11, os programadores têm acesso à estrutura do sistema ARKit. Vamos ver como essas bibliotecas são boas e qual delas deve ser usada para o seu próximo projeto de realidade aumentada.
ARKit
As vantagens indubitáveis do ARKit incluem sua natividade. A integração e a configuração levam apenas alguns minutos. O Xcode gentilmente faz metade das operações necessárias para você, após o que a estrutura "simplesmente funciona". É muito fácil organizar a interação entre o ARKit e outras estruturas do sistema (SpriteKit, SceneKit, Metal, CoreLocation etc.).
A biblioteca está bem otimizada e utiliza ao máximo os recursos de hardware dos modelos mais recentes de iPhone e iPad. Um grande número de cálculos que ocorrem sob o capô, quase sem efeito no UX. Estou satisfeito com a precisão com que a estrutura reconhece aviões e marcadores. Nem a iluminação fraca nem o movimento repentino do dispositivo interferem nisso. Graças às tecnologias complementares de VIO (Visual Inertial Odometry) e IMU (Inertial Measurement Unit), que formam a base do ARKit, os funcionários da Apple conseguiram minimizar os erros de cálculo.
Claro, não sem desvantagens. Em primeiro lugar, o ARKit está disponível apenas em dispositivos com iOS 11+, é suportado apenas no iPhone 6s e versões mais recentes, iPad Pro (9.7, 10.5 ou 12.9). Infelizmente, isso pode alienar os clientes que têm medo de perder parte de seu público-alvo.
O ARKit é projetado de tal maneira que as informações sobre os objetos do mundo circundante e a posição do dispositivo nele são constantemente calibradas. Por esse motivo, no início da sessão, enquanto os dados não são precisos o suficiente, é criado um sentimento de "instabilidade" do trabalho, que ainda não será capaz de se livrar. Além disso, se a sessão for longa o suficiente, ao que parece menor, os erros nos indicadores dos sensores se acumularão e se tornarão mais visíveis.
Ao reconhecer imagens, surgem problemas com o posicionamento do objeto AR, o objeto flutua e não é corrigido claramente no ponto indicado. Um comportamento semelhante é observado no
exemplo publicado pela Apple . No entanto, um objeto colocado em um determinado ponto no espaço praticamente não se move.
Em alguns casos (pequenas imagens em preto e branco de qualidade não muito boa), o marcador é reconhecido, mas o sistema determina incorretamente suas coordenadas. Como resultado, o objeto AR é desenhado no lugar errado.
O ARKit é muito fácil de aprender, para começar, você precisa de uma quantidade mínima de conhecimento. Um número bastante grande de artigos de treinamento e exemplos de código já foi publicado na Web, e a comunidade é grande e receptiva; portanto, não será difícil encontrar respostas para perguntas que surjam no processo de escrever código.
Opencv
A biblioteca OpenCV escrita em C ++ é distribuída gratuitamente e oferece a oportunidade de baixar o
SDK do
iOS no site oficial ou compilá-lo você mesmo.
Já na fase de introdução de fãs, Swift está aguardando uma fascinante busca para eliminar erros de compilação, que ameaça se estender por várias horas. Felizmente, as instruções passo a passo estão disponíveis na Web, publicadas por nossos companheiros que já superaram uma estrutura intratável (por exemplo,
OpenCV com Swift - passo a passo ).
Depois que você finalmente conseguir iniciar o projeto com a biblioteca conectada, surgirá a pergunta: o que fazer em seguida. Talvez você decida procurar por tutoriais no site oficial. Lá, os desenvolvedores do iOS aguardam três exemplos de uso da versão antiga da estrutura em projetos focados no iOS 8. Não há muitos artigos modernos sobre desenvolvimento móvel com o OpenCV. Aparentemente, isso se deve ao fato de que todo mundo que deseja dominar esta biblioteca já fez isso há muito tempo e não precisa mais de explicações.
No entanto, os iniciantes ainda têm a chance de dominar isso, sem dúvida, uma ferramenta poderosa. No entanto, levará muito tempo e esforço. Como qualquer outra biblioteca de baixo nível, o OpenCV requer um estudo profundo e aprofundado, uma análise detalhada da documentação, analisando milhares de discussões em fóruns, em busca de uma resposta para sua pergunta e inúmeras experiências.
A propósito, não se esqueça de adicionar um pouco mais a isso para restaurar o curso universitário de matemática na memória, porque o OpenCV não exibirá as fórmulas para você.
Wikitude
Para começar, o Wikitude é uma estrutura paga e de
modo algum uma estrutura
barata . A versão gratuita contém marcas d'água, portanto você não pode usá-lo para compilações de versões.
No entanto, a biblioteca vale o dinheiro. Ao contrário do ARKit, ele suporta dispositivos e versões de sistema ainda mais antigos. O produto está bem documentado, possui muitos artigos, lições e exemplos de código; portanto, a integração e implementação das tarefas mais simples para um programador despreparado levará apenas algumas horas.
O escopo principal da biblioteca é o reconhecimento de marcadores. Neste último caso, qualquer imagem sem canal alfa pode ser usada. É verdade que o Wikitude funciona apenas com formatos nativos. As imagens dos marcadores devem ser compactadas no formato .wtc, os modelos 3D devem ser convertidos em arquivos .wt3. Para ser justo, deve-se notar que o Wikitude fornece ferramentas de conversão em seu site.
Em geral, a estrutura lida bem com sua tarefa: os marcadores são reconhecidos, os objetos RA são colocados onde você planejou, não nadam ao alterar o ângulo de visão ou ao mover a câmera. A publicação de uma foto, vídeo ou modelo 3D não é difícil, além de garantir a interatividade. O trabalho simultâneo com vários marcadores é suportado, mas ao configurar classes de biblioteca, é melhor limitar seu número para melhorar o desempenho.
No entanto, observo que em más condições de iluminação e em movimentos imprecisos do dispositivo, há problemas com o reconhecimento de marcadores, mesmo que imagens de alta qualidade tenham sido usadas para criá-las.
O Wikitude suporta JS e a versão nativa do SDK.
Se você escolher a versão JS para integração, prepare-se para rejeitar o Swift ou Objective-C conveniente para o seu coração e concentre-se em escrever código JavaScript. E como o último é bastante doloroso ao trabalhar no Xcode, instale o Sublime ou um de seus substitutos ao mesmo tempo. E tente escrever imediatamente, porque o processo de depuração e correção de erros não será fácil.
Outro ponto diz respeito à otimização. Ao interagir com objetos JS AR por qualquer período de tempo, a versão da estrutura começa a ficar visivelmente mais lenta, o fps drena muito, o que não é surpreendente, no entanto.
A versão nativa do SDK, com toda a sua simpatia, é praticamente desprovida de "mágica". De fato, ele apenas notifica que o marcador é reconhecido, relata seu identificador e coordena no espaço, após o qual passa a bandeira para você. Então você está livre para usar sua ferramenta favorita, por exemplo, OpenGL, para desenhar objetos de AR.
Conclusão
Portanto, se você é um iniciante que decidiu tentar a realidade aumentada, tudo depende do cliente e das necessidades dele. Se o cliente não se arrepende de gastar vários milhares de euros em uma estrutura paga de alta qualidade e você não tem medo de JavaScript ou OpenGL, use o Wikitude. Caso contrário, comece com o ARKit. Graças a vários exemplos e suporte da comunidade, você pode implementar rapidamente tarefas simples e "sondar" essa tecnologia. Então, quando você começar a entender o que é o quê, e se acostumar um pouco, será possível invadir o OpenCV de baixo nível e conquistar picos anteriormente inacessíveis.