O Scene Viewer é um visualizador imersivo que permite experiências de 3D e RA no seu site ou app Android. Ele permite que usuários de dispositivos móveis Android visualizem, coloquem, vejam e interajam com modelos 3D hospedados na Web no ambiente deles.
A maioria dos navegadores Android é compatível com o Scene Viewer. O Scene Viewer foi implementado com sucesso por muitos parceiros do Google para oferecer suporte confiável a experiências 3D e de RA. Ela também alimenta essas experiências na Pesquisa Google.
A implementação é simples:
As experiências baseadas na Web exigem apenas links formatados corretamente em uma página da Web.
As experiências baseadas em apps exigem apenas a integração de algumas linhas de código Java.
Requisitos de execução do Scene Viewer
Para usar a RA com o Scene Viewer, os usuários precisam ter:
- Um dispositivo compatível com o ARCore com Android 7.0 Nougat (nível 24 da API) ou mais recente.
- Uma versão atualizada (recente) do Google Play Services para RA. Esse serviço é instalado e atualizado automaticamente na grande maioria dos dispositivos compatíveis com o ARCore.
- Uma versão atualizada do app Google. Esse app vem pré-instalado e também é atualizado automaticamente na grande maioria dos dispositivos compatíveis com o ARCore.
Para casos em que o Google Play Services para RA ou o Google app não estão presentes ou as versões instaladas são muito antigas, é possível especificar um URL de substituição que inicia uma experiência alternativa, por exemplo, uma página da Web, uma mensagem de erro ou uma experiência de substituição criada por você.
Casos de uso com suporte
| Caso de uso pretendido | Aplicativo recomendado | Vantagens |
|---|---|---|
|
Em um botão ou link em um site ou app Android, inicie uma
visualização de RA nativa de um modelo 3D.
Se o Google Play Services para RA não estiver presente no dispositivo, faça um fallback normal para mostrar o modelo em um modo 3D com tecnologia do Scene Viewer. |
Inicie o Scene Viewer usando uma intent explícita para o
pacote da Pesquisa Google e escolha uma configuração mode
adequada para mostrar o modelo 3D.
|
|
|
Inicie uma visualização de RA nativa de um modelo 3D usando um botão ou link em um site ou app Android.
Se o Google Play Services para RA não estiver presente no dispositivo, controle o comportamento de substituição. |
Inicie o Scene Viewer usando uma intent explícita para
o Google Play Services para RA (ARCore) e escolha uma configuração
mode adequada para mostrar o modelo 3D.
|
Use seu próprio visualizador de modelos 3D ou forneça outra resposta alternativa de seu próprio design para casos de uso sem RA. |
| Hospede uma visualização inline de um modelo 3D no seu site e permita que o usuário entre manualmente em um modo de RA nativo em tela cheia. | Use <model-viewer> ou qualquer outro visualizador 3D baseado na Web para iniciar o Scene Viewer mostrando o modelo 3D em RA de forma nativa. |
|
Iniciar o Scene Viewer usando uma intent explícita (3D ou RA)
Para oferecer suporte à maior variedade de dispositivos Android, use uma intent explícita do Android para iniciar o Scene Viewer. O intent explícito pode ser acionado em uma página HTML ou um app Android nativo. Ele será processado pelo app Google, que vem pré-instalado em dispositivos Android compatíveis com o ARCore.
Dependendo dos parâmetros de intenção configurados e dos recursos do dispositivo, os modelos 3D interativos podem ser colocados no ambiente do usuário ou voltar a aparecer em um visualizador 3D.
Se o Google Play Services para RA estiver presente no dispositivo e atualizado, o Scene Viewer vai mostrar o modelo em uma visualização nativa de RA ou em 3D.
Se o Google Play Services para RA não estiver presente ou não estiver atualizado, o Scene Viewer vai mostrar o modelo em uma visualização 3D.
Se um modelo 3D não puder ser mostrado, por exemplo, porque o app Google não está instalado ou é uma versão antiga, o parâmetro
S.browser_fallback_urlserá usado para mostrar uma página da Web alternativa.
Iniciar o Scene Viewer em HTML ou Java
HTML
Para acionar a intent explícita em HTML, use a seguinte sintaxe:
<a href="intent://arvr.google.com/scene-viewer/1.0?file=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf#Intent;scheme=https;package=com.google.android.googlequicksearchbox;action=android.intent.action.VIEW;S.browser_fallback_url=https://developers.google.com/ar;end;">Avocado</a>
Java
Para acionar a intent explícita em Java, use o seguinte código:
Intent sceneViewerIntent = new Intent(Intent.ACTION_VIEW);
sceneViewerIntent.setData(Uri.parse("https://arvr.google.com/scene-viewer/1.0?file=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf"));
sceneViewerIntent.setPackage("com.google.android.googlequicksearchbox");
startActivity(sceneViewerIntent);
Controle de versões de intents
A versão da intent é indicada pelo número da versão após
arvr.google.com/scene-viewer. Por exemplo, a versão inicial usou a versão 1.0. Quando forem necessários recursos mais recentes do Scene Viewer, você
poderá iniciar o Scene Viewer com uma versão de intent mais alta correspondente aos
recursos necessários.
A versão 1.1 da intent adicionou suporte a links intent://, que podem iniciar
diretamente em um app Android em vez de um URL. Se você quiser que o Scene Viewer garanta que essa funcionalidade esteja disponível quando for iniciado e não seja iniciado de outra forma, inicie o Scene Viewer com uma intent para intent://arvr.google.com/scene-viewer/1.1.
Parâmetros de intent aceitos
Os seguintes parâmetros são compatíveis com uma intent explícita para o pacote da Pesquisa Google.
| Parâmetro de intent | Valores permitidos | Comentários |
|---|---|---|
file (obrigatório) |
Um URL válido | Esse URL especifica o arquivo glTF ou glb que deve ser carregado no Scene Viewer. Ele precisa ter caracteres de escape de URL. |
S.browser_fallback_url (obrigatório para intents baseadas em HTML) |
Um URL válido | Esse é um recurso do Google Chrome compatível apenas com implementações baseadas na Web. Quando o Google app não está presente no dispositivo, esse é o URL para onde o Google Chrome navega. |
mode (opcional) |
3d_preferred (padrão) |
O Scene Viewer mostra o modelo no modo 3D com um botão Veja no seu espaço.
Se o Google Play Services para RA não estiver presente no dispositivo, o botão Ver no seu espaço vai ficar oculto.
|
3d_only |
O Scene Viewer é iniciado com o modelo exibido no modo 3D, mesmo que o Google Play Services para RA esteja presente no dispositivo.
O botão Ver no seu espaço nunca é mostrado.
|
|
ar_preferred |
O Scene Viewer é iniciado no modo nativo de RA como o modo de entrada. O usuário tem a opção de alternar entre os modos de RA e 3D usando os botões Veja no seu espaço e Ver em 3D.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai voltar para o modo 3D como modo de entrada.
|
|
ar_only |
Ao usar esse valor, inicie com uma
intent explícita do Android
para com.google.ar.core.
Observação:não use o modo ar_only ao iniciar por uma
intent explícita do Android
para o Google app.
|
|
link (opcional) |
Um URL válido |
Um URL para uma página da Web externa. Se presente, um botão vai aparecer na interface que direciona a esse URL quando clicado.
|
title (opcional) |
String válida |
Um nome para o modelo. Se estiver presente, ele será exibido na interface.
O nome será truncado com reticências após 60 caracteres.
|
| som (opcional) | Um URL válido | Um URL para uma faixa de áudio em loop sincronizada com a primeira animação incorporada em um arquivo glTF. Ele precisa ser fornecido com um glTF com uma animação de duração correspondente. Se presente, o som será repetido depois que o modelo for carregado. Ele precisa ter caracteres de escape de URL. |
resizable (opcional) |
true (padrão)
|
Quando definido como false, os usuários não podem dimensionar o modelo na experiência de RA. O escalonamento funciona normalmente na experiência 3D.
|
enable_vertical_placement (opcional) |
false (padrão)
|
Quando definido como true, os usuários podem colocar o modelo em uma superfície vertical.
|
Orientações de UX
Para oferecer a melhor experiência possível aos usuários, recomendamos que as frases de ação visíveis transmitam a ideia de que o usuário está prestes a entrar em um ambiente imersivo.
Para experiências de visualização em 3D, recomendamos uma call-to-action chamada Ver em 3D que se pareça com uma das seguintes imagens:
Iniciar o Scene Viewer usando uma intent explícita para o Google Play Services para RA (somente no modo de RA)
O modo de RA no Scene Viewer é desenvolvido pelo Google Play Services para RA.
Para garantir que a RA esteja disponível no Scene Viewer, use uma intent explícita do Android de um site ou app Android nativo para iniciar o Scene Viewer usando o com.google.ar.core package e forneça um browser_fallback_url. Assim, você
garante que todos os usuários tenham uma experiência de RA nativa pelo Scene Viewer ou
uma experiência alternativa criada por você. Por exemplo, você pode criar
experiências alternativas, como seu próprio visualizador em 3D ou uma mensagem de erro elegante.
Para acionar a intent explícita em HTML, use a seguinte sintaxe:
<a href="intent://arvr.google.com/scene-viewer/1.0?file=https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf&mode=ar_only#Intent;scheme=https;package=com.google.ar.core;action=android.intent.action.VIEW;S.browser_fallback_url=https://developers.google.com/ar;end;">Avocado</a>;
Para acionar a intent explícita em Java, use o seguinte código:
Intent sceneViewerIntent = new Intent(Intent.ACTION_VIEW);
Uri intentUri =
Uri.parse("https://arvr.google.com/scene-viewer/1.0").buildUpon()
.appendQueryParameter("file", "https://raw.githubusercontent.com/KhronosGroup/glTF-Sample-Models/master/2.0/Avocado/glTF/Avocado.gltf")
.appendQueryParameter("mode", "ar_only")
.build();
sceneViewerIntent.setData(intentUri);
sceneViewerIntent.setPackage("com.google.ar.core");
startActivity(sceneViewerIntent);
Parâmetros de intent aceitos
Os seguintes parâmetros são compatíveis com uma intent explícita para o pacote dos Serviços do Google Play para AR.
| Parâmetro de intent | Valores permitidos | Comentários |
|---|---|---|
browser_fallback_url (obrigatório para intents baseadas em HTML) |
Um URL válido | Isso só é compatível com implementações baseadas na Web. Quando o Google Play Services para RA não está presente no dispositivo ou não está atualizado, este é o URL para onde ele navega. |
mode (opcional) |
ar_only |
O Scene Viewer sempre inicia o modelo 3D em uma visualização nativa de RA e oculta qualquer
interface para alternar para o visualizador 3D do Scene Viewer.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai abrir o URL definido no browser_fallback_url para experiências baseadas na Web.
Para experiências baseadas em apps, o Scene Viewer volta para uma experiência alternativa, como uma mensagem de erro ou outra experiência que você criou.
|
ar_preferred |
O Scene Viewer é iniciado no modo nativo de RA como modo de entrada e oferece aos usuários
a opção de alternar entre os modos de RA e 3D usando os botões Ver no seu espaço
e Ver em 3D.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai abrir o URL definido no browser_fallback_url para experiências baseadas na Web.
Para experiências baseadas em apps, o Scene Viewer volta para uma experiência alternativa, como uma mensagem de erro ou outra experiência que você criou.
|
|
link (opcional) |
Um URL válido |
Um URL para uma página da Web externa. Se presente, um botão vai aparecer na
interface que direciona a esse URL quando clicado.
A versão 1.1 adicionou suporte para links intent:// no Scene Viewer para permitir que o botão de visita do Scene Viewer seja acionado diretamente em outros apps. Observação: isso deve ser usado com cuidado e especificado apenas quando um gerenciador de intent estiver garantido para a intent especificada. |
title (opcional) |
String válida |
Um nome para o modelo. Se estiver presente, ele será exibido na interface.
O nome será truncado com reticências após 60 caracteres.
A versão 1.1 adicionou suporte para estilização HTML do conteúdo do título, com uma quantidade arbitrária de texto permitida. Observação: o título precisa ter escape de URL. |
sound (opcional) |
Um URL válido | Um URL para uma faixa de áudio em loop sincronizada com a primeira animação incorporada em um arquivo glTF. Ele precisa ser fornecido com um glTF e uma animação de duração correspondente. Se presente, o som será repetido em loop depois que o modelo for carregado. |
resizable (opcional) |
true (padrão)
|
Quando definido como false, os usuários não podem dimensionar o modelo na experiência de RA. O escalonamento funciona normalmente na experiência 3D.
|
disable_occlusion (opcional) |
false (padrão)
|
Quando definido como true, os objetos colocados na cena sempre aparecem
na frente dos objetos do mundo real na cena. Consulte
[Ativar oclusão](/ar/develop/depth#enable_occlusion) para mais informações.
|
Orientações de UX
Para oferecer a melhor experiência possível aos usuários, recomendamos seguir estas diretrizes.
Para experiências de RA, a call-to-action visível precisa transmitir que o usuário está prestes a entrar em um ambiente imersivo. Recomendamos usar a call-to-action Ver no seu espaço:
É possível que os usuários não tenham o Google Play Services para RA instalado no dispositivo. Veja como
<model-viewer>processa o fallback e use esse trecho de código como ponto de partida.// Check whether this is an Android device. const isAndroid = /android/i.test(navigator.userAgent); // This fallback URL is used if the Google app is not installed and up to date. const fallbackUrl = 'https://arvr.google.com/scene-viewer?file=https%3A%2F%2Fstorage.googleapis.com%2Far-answers-in-search-models%2Fstatic%2FTiger%2Fmodel.glb&link=https%3A%2F%2Fgoogle.com&title=Tiger'; // This intent URL triggers Scene Viewer on Android and falls back to // fallbackUrl if the Google app is not installed and up to date. const sceneViewerUrl = 'intent://arvr.google.com/scene-viewer/1.0?file=https://storage.googleapis.com/ar-answers-in-search-models/static/Tiger/model.glb&title=Tiger#Intent;scheme=https;package=com.google.android.googlequicksearchbox;action=android.intent.action.VIEW;S.browser_fallback_url=' + fallbackUrl + ';end;'; // Create a link. var a = document.createElement('a'); a.appendChild(document.createTextNode('Tiger')); // Set the href to the intent URL on Android and the fallback URL // everywhere else. a.href = isAndroid ? sceneViewerUrl : fallbackUrl; // Add the link to the page. document.body.appendChild(a);
Como usar o <model-viewer> para iniciar o Scene Viewer
É possível ativar o Scene Viewer no seu site incluindo o
componente da Web <model-viewer> com o
atributo ar.
<model-viewer ar
ar-modes="scene-viewer webxr quick-look"
alt="A 3D model of an astronaut."
src="Astronaut.gltf"></model-viewer>
Quando visualizado em um dispositivo Android compatível com o ARCore, um site que inclui o
componente <model-viewer> com o atributo ar mostra um botão, conforme mostrado no
exemplo a seguir.
Quando o modo scene-viewer é usado em ar-modes,
ele muda para uma visualização de RA nativa e convida o usuário a colocar o modelo no ambiente usando o Scene Viewer.
Se o Google Play Services com RA não estiver presente, tocar nesse botão vai mostrar
o modelo no visualizador 3D do <model-viewer>.
Consulte a documentação do <model-viewer> para saber como começar a usar o <model-viewer>.
Requisitos de arquivo para modelos
O Scene Viewer tem o seguinte suporte e limitações para modelos.
| Compatibilidade com formatos de arquivo | glTF 2.0/glb, usando estas extensões:
|
| Animation |
glTF
contiver várias animações, o Scene Viewer vai reproduzir apenas a primeira.
|
| Limites recomendados |
O desempenho geral dos recursos depende da definição de restrições e da compensação entre vértices, materiais, resolução de textura, malha por material e outros fatores. Use as diretrizes a seguir para otimizar seus recursos.
|
| Suporte a sombras | O Scene Viewer renderiza automaticamente sombras fortes ao posicionar um objeto. Por isso, não recomendamos incorporar sombras ao modelo. |
| Suporte a texturas |
|
| Material | PBR |
| Carregamento de arquivos | HTTPS |
| Scene |
|
Como usar a ferramenta de visualização para validar seus modelos 3D
Para garantir que o arquivo do modelo 3D seja exibido corretamente no Scene Viewer, use nossa ferramenta de visualização on-line para validar os arquivos no seu PC.
Validar seu modelo 3D
Para validar um modelo, a ferramenta de visualização precisa de um arquivo glb ou glTF, imagens e arquivos binários associados e um arquivo de áudio opcional. O arquivo de áudio vai ficar em loop com a animação 0.
É possível selecionar vários arquivos individuais ou, opcionalmente, colocar o glb ou glTF e os arquivos associados em um arquivo ZIP. (O método de arquivo ZIP não é compatível com arquivos de áudio.)
Para validar seu modelo 3D:
Abra a ferramenta de visualização on-line em um navegador.
Use um destes métodos para adicionar os arquivos à ferramenta de visualização:
Arrastar e soltar. Selecione um arquivo glb ou glTF e todos os arquivos associados a ele (ou um arquivo zip com esses arquivos) e arraste os arquivos ou o arquivo zip selecionado para a ferramenta de visualização.
Na ferramenta de visualização. Na ferramenta de visualização, escolha Scene Viewer > Carregar arquivo. Selecione um arquivo glb ou glTF e todos os arquivos associados a ele (ou um arquivo ZIP que contenha esses arquivos) e clique em Abrir.
Depois de carregar os arquivos do modelo 3D na ferramenta de visualização, um console na parte de baixo do navegador mostra os resultados, incluindo mensagens de erro.
Adicionar modelos 3D para validação
Para validar um modelo 3D, adicione os arquivos que o compõem à nossa ferramenta Editor de modelos.
Para validar um modelo, o visualizador precisa do arquivo glb ou glTF dele, de qualquer imagem e arquivo binário associados e de um arquivo de áudio opcional. É possível selecionar vários arquivos individuais ou adicionar um único arquivo ZIP.
Ao adicionar um arquivo ZIP, o visualizador carrega o primeiro glb ou glTF encontrado, bem como a imagem e os arquivos bin associados dentro desse arquivo ZIP.
Abra a ferramenta Model Editor em um navegador.
Use um destes métodos para adicionar os arquivos à ferramenta de visualização:
Para arrastar e soltar arquivos para validação, selecione vários arquivos glb ou glTF e todos os arquivos associados (ou selecione um arquivo zip que contenha esses arquivos) e arraste para a ferramenta de visualização.
Selecione arquivos na ferramenta de visualização. Na ferramenta de visualização, escolha Scene Viewer > Carregar arquivo. Selecione vários arquivos glb ou glTF e todos os arquivos associados (ou um arquivo ZIP com esses arquivos) e clique em Abrir.
Erros de validação
| Código do erro | Gravidade | Mensagem | Valores compatíveis atualmente |
|---|---|---|---|
INVALID_INPUT_FILE_EXTENSION |
Erro | O arquivo de entrada [filename] tem uma extensão não compatível com o validador. | ['.glb', '.gltf'] |
REC_INPUT_BINARY_SIZE_EXCEEDED |
Aviso | A entrada do usuário fornecida tem um tamanho binário que excede o limite recomendado pela especificação do Scene Viewer, que é um limite de tamanho recomendado de [size] MB. | 10 |
MAX_INPUT_BINARY_SIZE_EXCEEDED |
Erro | A entrada do usuário fornecida tem um tamanho binário que excede o limite máximo aceito pela especificação do Scene Viewer, que é um limite máximo de [size] MB. | 15 |
UNSUPPORTED_GLTF_EXTENSION_USED |
Erro | A extensão [ext] no glTF não é compatível com a especificação do Scene Viewer. | ['KHR_materials_pbrSpecularGlossiness', 'KHR_materials_unlit', 'KHR_texture_transform'] |
ANIMATION_LIMIT_EXCEEDED |
Erro | O número de animações no glTF excede o limite aceito pela especificação do Scene Viewer, que é de no máximo [num] animações. | 1 |
MORPH_TARGET_USED |
Erro | O glTF contém uma meta de transformação, que não é compatível com a especificação do Scene Viewer. | |
MATERIAL_LIMIT_EXCEEDED |
Aviso | O número de materiais no glTF excede o limite recomendado pela especificação do Scene Viewer, que é de no máximo [num] materiais. | 10 |
TEXTURE_RESOLUTION_LIMIT_EXCEEDED |
Aviso | A resolução da imagem no índice [idx] no glTF excede o limite recomendado pela especificação do Scene Viewer, que é uma resolução máxima de [res] x [res]. | 2048 x 2048 |
UV_LIMIT_EXCEEDED |
Erro | O número de UVs por malha no glTF excede o limite aceito pela especificação do Scene Viewer, que é de no máximo [num] UVs por malha. | 1 |
VERTEX_COLOR_USED |
Erro | O glTF contém uma cor de vértice, que é indisponível para a especificação do Scene Viewer. | |
JOINT_LIMIT_EXCEEDED |
Erro | O número de articulações no glTF excede o limite aceito pela especificação do Scene Viewer, que é de no máximo [num] articulações. | 254 |
TRIANGLE_LIMIT_EXCEEDED |
Aviso | O número de triângulos no glTF excede o limite recomendado pela especificação do Scene Viewer, que é um máximo de [num] triângulos. | 100.000 |
PRIMITIVE_MODE_UNSUPPORTED |
Erro | O modo primitivo [mode] não é compatível com a especificação do Scene Viewer. | {4 : Triangle List, 5 : Triangle Strip, 6 : Triangle Fan} |
MISSING_PBR_METALLIC_ROUGHNESS |
Informações |
O material no índice [idx] está sem a propriedade pbrMetallicRoughness. Isso não é exigido pela especificação do Scene Viewer se fatores metálicos e de rugosidade forem usados. Se nenhum deles for usado, o material vai usar valores padrão, o que pode levar a um comportamento não intencional.
|





