Aprenda a usar o Cloud Anchors nos seus próprios apps.
Pré-requisitos
Entenda os conceitos fundamentais de RA. e como configurar uma sessão do ARCore antes de continuar.
Se você não tem experiência com o Cloud Anchors, entenda como as anchors e Cloud Anchors funcionam.
Ativar a API ARCore
Antes de usar o Cloud Anchors no seu app, ative a API ARCore nele.
Ativar os recursos do Cloud Anchor na configuração da sessão
Depois de ativar os recursos do Cloud Anchors no seu app, ative os recursos do Cloud Anchors na configuração da sessão de RA do app para que ele possa se comunicar com a API ARCore:
// Create a new ARCore session. ArSession* session = NULL; CHECK(ArSession_create(env, context, &session) == AR_SUCCESS); // Create a session config. ArConfig* config = NULL; ArConfig_create(session, &config); ArSession_getConfig(session, config); // Enable Cloud Anchor mode. ArConfig_setCloudAnchorMode(session, config, AR_CLOUD_ANCHOR_MODE_ENABLED); // Configure the session. ArSession_configure(session, config); ArConfig_destroy(config);
Hospedar um Cloud Anchor
O Hosting começa com uma chamada para ArSession_hostCloudAnchorAsync()
. O ARCore fará o upload de dados visuais, poses do dispositivo e posições de âncora para a API do ARCore. A API processa essas informações para criar um mapa de recursos 3D e, por fim, retorna ao dispositivo um ID exclusivo do Cloud Anchor para a âncora.
Você também pode estender o ciclo de vida de uma âncora hospedada usando a API ARCore Cloud Anchor Management.
Seu app deve seguir estas etapas para concluir a hospedagem de um Cloud Anchor:
- Chame
ArSession_hostCloudAnchorAsync()
. - Aguarde o callback ou verifique continuamente o estado Future até que ele seja concluído.
- Verificar o estado do resultado para determinar se a operação foi bem-sucedida ou interpretar o código do erro em caso de falha.
- Compartilhar o ID do Cloud Anchor resultante com outros clientes e usá-lo para resolver o Cloud Anchor com
ArSession_resolveCloudAnchorAsync()
Verificar a qualidade do mapeamento de pontos de destaque
ArFeatureMapQuality
indica a qualidade dos pontos de recursos vistos pelo ARCore nos segundos anteriores a partir de uma determinada pose da câmera. Âncoras do Cloud hospedadas usando recursos de maior qualidade costumam ser resolvidas com mais precisão. Use ArSession_estimateFeatureMapQualityForHosting()
para ter uma estimativa da qualidade do mapa de recursos para uma determinada pose da câmera.
Valor | Descrição |
---|---|
INSUFFICIENT |
A qualidade dos pontos de destaque identificados na pose nos segundos anteriores é baixa. Esse estado indica que o ARCore provavelmente terá mais dificuldades para resolver o Cloud Anchor. Incentive o usuário a mover o dispositivo para que a posição desejada do Cloud Anchor que ele quer hospedar possa ser visualizada de diferentes ângulos. |
SUFFICIENT |
A qualidade dos pontos de recurso identificados na pose nos segundos anteriores provavelmente é suficiente para que o ARCore resolva com sucesso um Cloud Anchor, embora a precisão da pose resolvida provavelmente seja reduzida. Incentive o usuário a mover o dispositivo para que a posição desejada do Cloud Anchor que ele quer hospedar possa ser visualizada de diferentes ângulos. |
GOOD |
A qualidade dos pontos de recurso identificados na postura nos segundos anteriores provavelmente é suficiente para que o ARCore resolva um Cloud Anchor com alto grau de precisão. |
Resolver uma âncora hospedada anteriormente
Chame ArSession_resolveCloudAnchorAsync()
para resolver um Cloud Anchor hospedado. A API ARCore compara periodicamente os recursos visuais da cena com o mapa de recursos 3D da âncora para identificar a posição e a orientação do usuário em relação à âncora. Quando encontra uma correspondência, a API retorna a posição do Cloud Anchor hospedado.
É possível iniciar resoluções para vários Cloud Anchors em sequência. É possível ter até 40 operações simultâneas do Cloud Anchor por vez.
Cancelar uma operação ou remover um Cloud Anchor
Chame ArFuture_cancel()
para cancelar uma operação pendente do Cloud Anchor.
Chame ArAnchor_detach()
para interromper o rastreamento e esquecer um Cloud Anchor já resolvido. As referências à âncora precisam ser liberadas separadamente chamando ArAnchor_release()
.
Verificar o estado do resultado de uma operação do Cloud Anchor
Use ArCloudAnchorState para verificar o status do resultado da operação de hospedagem ou resolução, incluindo erros.
Valor | Descrição |
---|---|
AR_CLOUD_ANCHOR_STATE_ERROR_CLOUD_ID_NOT_FOUND |
A solução falhou porque a API ARCore não conseguiu encontrar o ID do Cloud Anchor fornecido. |
AR_CLOUD_ANCHOR_STATE_ERROR_HOSTING_DATASET_PROCESSING_FAILED |
O Hosting falhou porque o servidor não conseguiu processar o conjunto de dados para a âncora especificada. Tente de novo depois que o dispositivo coletar mais dados do ambiente. |
AR_CLOUD_ANCHOR_STATE_ERROR_HOSTING_SERVICE_UNAVAILABLE |
Não foi possível acessar a API ARCore. Isso pode acontecer por uma série de motivos. O dispositivo pode estar no modo avião ou não ter uma conexão de Internet. A solicitação enviada ao servidor pode ter atingido o tempo limite sem resposta. Uma conexão de rede ruim, indisponibilidade de DNS, problemas de firewall ou qualquer outra coisa que possa afetar a capacidade de conexão do dispositivo com a API ARCore. |
AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL |
Uma tarefa de hospedagem ou resolução para esta âncora foi concluída com um erro interno. O app não deve tentar se recuperar desse erro. |
AR_CLOUD_ANCHOR_STATE_ERROR_NOT_AUTHORIZED |
Consulte Solução de problemas com autorização da API ARCore. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_SDK_VERSION_TOO_NEW |
Não foi possível resolver o Cloud Anchor porque a versão do SDK usada para resolver a âncora é mais recente e incompatível com a versão usada para hospedá-la. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOLVING_SDK_VERSION_TOO_OLD |
Não foi possível resolver o Cloud Anchor porque a versão do SDK usada para resolver a âncora é mais antiga e incompatível com a versão usada para hospedá-la. |
AR_CLOUD_ANCHOR_STATE_ERROR_RESOURCE_EXHAUSTED |
O aplicativo esgotou a cota de solicitações alocada para o projeto do Google Cloud especificado. Você deve solicitar uma cota adicional para a API ARCore para seu projeto no Google Developers Console. |
AR_CLOUD_ANCHOR_STATE_SUCCESS |
Uma tarefa de hospedagem ou resolução para esta âncora foi concluída. |
Cotas de API para solicitações de host e resolução
A API ARCore tem as seguintes cotas para largura de banda de solicitação:
Tipo da cota | Máximo | Duração | Aplicável a |
---|---|---|---|
Número de âncoras | ilimitado | N/A | projeto |
Solicitações de âncora host | 30 | minuto | Endereço IP e projeto |
Ancorar solicitações resolve | 300 | minuto | Endereço IP e projeto |
Práticas recomendadas para uma boa experiência do usuário
Instrua os usuários a fazer o seguinte para garantir uma boa experiência do usuário no seu app:
- Aguarde alguns segundos após o início da sessão antes de tentar hospedar uma âncora (posicionando um objeto etc.). Isso dá ao acompanhamento algum tempo para se estabilizar.
- Ao selecionar um local para hospedar a âncora, tente encontrar uma área com elementos visuais que sejam facilmente distinguíveis uns dos outros. Para melhores resultados, evite superfícies reflexivas ou que não tenham recursos visuais, como paredes brancas.
Mantenha a câmera treinada no centro de interesse e movimente o dispositivo o centro de interesse para mapear o ambiente de diferentes ângulos, mantendo aproximadamente a mesma distância física que você faz isso. Isso ajudará a capturar mais dados visuais e a tornar a resolução mais robusta.
Confira se há iluminação suficiente no ambiente real enquanto hospeda e resolve âncoras do Cloud.
Política de descontinuação
- Os apps criados com o SDK do ARCore 1.12.0 ou mais recente são cobertos pela política de descontinuação da API Cloud Anchor.
- Os apps criados com o SDK 1.11.0 ou anterior do ARCore não podem hospedar ou resolver âncoras do Cloud devido ao uso de uma API do ARCore mais antiga e descontinuada pelo SDK.
A seguir
- Consulte a documentação de referência do Android NDK para ver mais maneiras de usar o ARCore no seu app.