O Scene Viewer é um visualizador imersivo que possibilita experiências 3D e RA no seu site ou app Android. Ele permite que usuários de dispositivos móveis Android visualizem, posicionar, visualizar e interagir com modelos 3D hospedados na web em seu ambiente.
A maioria dos navegadores Android é compatível com o Scene Viewer. O Scene Viewer foi concluído com sucesso implementados por vários parceiros do Google para oferecer suporte confiável a experiências em 3D e RA. Elas também otimizam 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 a integração de apenas algumas linhas de código Java.
Requisitos de tempo 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 em execução Android 7.0 Nougat (nível 24 da API) ou mais recente
- Uma versão atualizada (recente) de Google Play Services para RA. Esse serviço é instalado e atualizado automaticamente na vasta com a maioria dos dispositivos compatíveis com o ARCore.
- Uma versão atualizada do Google (em inglês) app. Este app vem pré-instalado e é atualizado automaticamente na grande maioria dos dispositivos compatíveis com o ARCore.
Para atender a casos em que o Google Play Services para RA ou o Google app não estiverem presentes ou as versões instaladas forem muito antigas, será possível especificar um URL que inicia uma experiência alternativa, como uma página da Web, um erro ou uma experiência substituta que você criou.
Casos de uso com suporte
Caso de uso pretendido | Aplicativo recomendado | Vantagens |
---|---|---|
Com um botão ou link em um site ou app Android, inicie uma
visualização nativa de RA de um modelo 3D.
Se o Google Play Services para RA não estiver presente no dispositivo, volte graciosamente para mostrar o modelo em um modo 3D com a tecnologia Scene Viewer. |
Abra o Scene Viewer usando uma intent explícita para o
pacote da Pesquisa Google e escolha um mode adequado
para mostrar o modelo 3D.
|
|
A partir de um botão ou link em um site ou app Android, iniciar uma visualização de RA nativa
de um modelo 3D.
Se o Google Play Services para RA não estiver presente no dispositivo, controle o comportamento substituto. |
Iniciar o Scene Viewer usando uma intent explícita para
Google Play Services para RA (ARCore) e escolha uma
mode para mostrar o modelo 3D.
|
Use seu próprio visualizador de modelos 3D ou forneça outra resposta substituta do seu próprio design para casos de uso que não sejam de RA. |
Hospede uma visualização inline de um modelo 3D em seu site e permita que o usuário entrar manualmente no modo de RA nativo de tela cheia. | Use <model-viewer> ou qualquer outro
visualizador em 3D baseado na web para iniciar o Scene Viewer, exibindo de maneira nativa o modelo 3D
em RA. |
|
Iniciar o Scene Viewer usando uma intent explícita (3D ou RA)
Para oferecer suporte à maior variedade de dispositivos Android, use uma linguagem de programação intenção para iniciar o Scene Viewer. A intent explícita pode ser acionada por uma página HTML ou um app Android nativo. A intent será processada pelo Google (em inglês) que vem pré-instalado em dispositivos Android compatíveis com o ARCore.
Dependendo dos recursos do dispositivo e dos parâmetros de intent configurados, as interações Modelos 3D podem ser colocados no ambiente do usuário ou voltar a ser exibidos um visualizador em 3D.
Se o dispositivo tiver o Google Play Services para RA atualizado, O Scene Viewer 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 O visualizador graciosamente volta a exibir o modelo em uma visualização em 3D.
Se um modelo 3D não puder ser exibido, por exemplo, porque Google (em inglês) O app não está instalado ou é uma versão antiga, o
S.browser_fallback_url
parâmetro será usado para exibir uma página da Web substituta.
Iniciar o Scene Viewer em HTML ou Java
HTML
Para acionar a intent explícita pelo 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 da intent
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 usada
versão 1.0. Quando recursos mais recentes do Scene Viewer forem necessários, você
pode iniciar o Scene Viewer com uma versão de intent maior correspondente à
recursos necessários.
A versão 1.1 da intent adicionou suporte a links intent://
, que podem ser iniciados.
diretamente em um app Android
e não em um URL. Se você quiser usar o Scene
Viewer para garantir que essa funcionalidade esteja disponível quando iniciada e falhar
iniciar de outra forma, abrir o visualizador de cena com a intenção de
intent://arvr.google.com/scene-viewer/1.1
:
Parâmetros de intent compatíveis
Os parâmetros a seguir têm suporte em uma intent explícita para o Pesquisar pacote.
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 Visualizador de cena. Ele deve ter escape de URL. |
S.browser_fallback_url (obrigatório para intents baseadas em HTML) |
Um URL válido | Este é um recurso do Google Chrome com suporte apenas para implementações baseadas na Web. Quando o Google app é não estiver presente no dispositivo, esse é o URL para o qual o Google Chrome navega. |
mode (opcional) |
3d_preferred (padrão) |
O Scene Viewer exibe o modelo no modo 3D com um botão View in your space.
Se o Google Play Services para RA não estiver presente no dispositivo, o O botão Ver no seu espaço está oculto. |
3d_only |
O Scene Viewer é iniciado com o modelo exibido no modo 3D, mesmo se
O Google Play Services para RA está presente no dispositivo.
O botão Ver no seu espaço nunca aparece.
|
|
ar_preferred |
O Scene Viewer é iniciado no modo nativo de RA como o modo de entrada. O usuário recebe
a opção de alternar entre os modos RA e 3D no
Botões Veja no seu espaço e Veja em 3D.
Se o Google Play Services para RA não estiver presente, o Scene Viewer cairá normalmente de volta ao 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 via
intent explícita do Android
para o Google app.
|
|
link (opcional) |
Um URL válido |
O URL de uma página da Web externa. Se estiver presente, um botão será exibido
a IU que envia a mensagem a esse URL quando clicada.
|
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 que é sincronizado com a primeira uma animação incorporada a um arquivo glTF. Ele deve ser fornecido junto com um glTF com uma animação de comprimento correspondente. Se presente, o som é repetido após o carregamento do modelo. Ele deve ter escape de URL. |
resizable (opcional) |
true (padrão)
|
Quando definido como false , os usuários não poderão escalonar o modelo.
na experiência de RA. O dimensionamento funciona normalmente na experiência 3D.
|
enable_vertical_placement (opcional) |
false (padrão)
|
Quando definido como true , os usuários poderão colocar o modelo em uma
uma superfície vertical.
|
Orientação sobre UX
Para oferecer a melhor experiência do usuário possível, recomendamos que as chamadas visíveis para a ação transmitir que o usuário está prestes a entrar em um ambiente imersivo.
Para experiências no visualizador em 3D, recomendamos usar uma call-to-action chamada Visualizar em 3D que se parece com uma das seguintes imagens:
Iniciar o Scene Viewer usando uma intent explícita para o Google Play Services para RA (somente no modo RA)
O modo RA no Scene Viewer usa a tecnologia do Google Play Services para RA.
Para garantir que a RA esteja disponível no Scene Viewer, você pode usar uma linguagem explícita do Android
intenção
de um site ou aplicativo Android nativo para iniciar o Scene Viewer por meio da
com.google.ar.core package
e forneça um browser_fallback_url
. Dessa forma, você
garante que todos os usuários tenham uma experiência nativa de RA pelo Scene Viewer ou
uma experiência substituta
criada por você. Por exemplo, você pode criar
experiências substitutas, como seu próprio visualizador em 3D ou uma mensagem de erro simples.
Para acionar a intent explícita pelo 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 compatíveis
Os parâmetros a seguir são compatíveis com uma intent explícita para o Google Play Serviços para o pacote de RA.
Parâmetro de intent | Valores permitidos | Comentários |
---|---|---|
browser_fallback_url (obrigatório para intents baseadas em HTML) |
Um URL válido | Isso é aceito apenas para implementações baseadas na Web. Quando o Google Play Services para RA não está presente no dispositivo ou não está data, esse é o URL para o qual ele é direcionado. |
mode (opcional) |
ar_only |
O Scene Viewer sempre inicia o modelo 3D em uma visualização de RA nativa e oculta quaisquer
Interface para alternar para o visualizador em 3D do visualizador de cenas.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai iniciar o URL definido em browser_fallback_url para experiências baseadas na Web.
Para experiências baseadas em app, o Scene Viewer volta a uma experiência alternativa
como uma mensagem de erro ou outra experiência
criada por você.
|
ar_preferred |
O Scene Viewer é iniciado em modo nativo de RA como modo de entrada e fornece aos usuários
a opção de alternar entre os modos RA e 3D em Visualizar no seu espaço
e Ver em 3D.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai iniciar o URL definido em browser_fallback_url para experiências baseadas na Web.
Para experiências baseadas em app, o Scene Viewer volta a uma experiência alternativa
como uma mensagem de erro ou outra experiência
criada por você.
|
|
link (opcional) |
Um URL válido |
O URL de uma página da Web externa. Se estiver presente, um botão será exibido na
Interface que direciona para este URL quando clicada.
A versão 1.1 adicionou suporte a links intent:// no Scene Viewer em para permitir que o botão de visita do Scene Viewer seja acionado diretamente no e outros apps. Isso deve ser usado com cuidado e só deve ser especificado quando há a garantia de que um gerenciador de intents estará presente para o específica para cada intent. |
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 ao estilo html do conteúdo do título, com uma quantidade arbitrária de texto permitida. O título deve ter escape de URL. |
sound (opcional) |
Um URL válido | Um URL para uma faixa de áudio em loop que é sincronizado com a primeira animação incorporado em um arquivo glTF... Ele deve ser fornecido junto com um glTF com um animação de comprimento correspondente. Se presente, o som se repete após o é carregado. |
resizable (opcional) |
true (padrão)
|
Quando definido como false , os usuários não poderão escalonar o modelo.
na experiência de RA. O dimensionamento 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 de objetos do mundo real na cena. Consulte
[Ative a oclusão](/ar/develop/depth#enable_occlusion) para saber mais.
|
Orientação sobre UX
Para oferecer a melhor experiência do usuário possível, 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 que você use o Call-to-action Veja no seu espaço:
É possível que os usuários não tenham Google Play Services para RA instalado no dispositivo. Confira como o
<model-viewer>
lida com o substituto. e use esse 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 <model-viewer>
para iniciar o Scene Viewer
Para ativar o Scene Viewer em seu site, inclua o
<model-viewer>
(link em inglês) com o
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 com suporte a ARCore, um site que inclui o
O componente <model-viewer>
com o atributo ar
mostra um botão, conforme mostrado em
no exemplo a seguir.
Quando o modo scene-viewer
é usado no ar-modes
,
ele alterna 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 em 3D de <model-viewer>
.
Consulte a documentação de <model-viewer>
para mais informações sobre como começar a usar o <model-viewer>
.
Requisitos de arquivo para modelos
O Scene Viewer tem as seguintes limitações e suporte 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 reproduzirá somente a primeira animação.
|
Limites recomendados |
O desempenho geral dos recursos depende das restrições
fazer concessões entre vértices, materiais, resolução de textura, malha por
material e outros fatores. Use as diretrizes a seguir para otimizar os recursos.
|
Suporte de sombra | Sombras fortes são renderizadas automaticamente pelo Scene Viewer ao colocar um objeto. Portanto, recomendamos não usar baking e sombras no modelo. |
Compatibilidade com texturas |
|
Material | PBR |
Carregamento de arquivo | HTTPS |
Scene |
|
Como usar a ferramenta de visualização para validar seus modelos 3D
Para garantir que seu arquivo de modelo 3D seja exibido corretamente no Scene Viewer, use nosso ferramenta de visualização on-line para validar os arquivos no PC.
Como validar o modelo 3D
Para validar um modelo, a ferramenta de visualização precisa de um arquivo glb ou glTF, imagem associada e arquivos bin e um arquivo de áudio opcional. O arquivo de áudio será loop junto com a animação 0.
Você pode selecionar vários arquivos individuais ou, opcionalmente, colocar os parâmetros glb ou glTF e seus arquivos associados em um arquivo ZIP. O método de arquivo ZIP não é compatível com arquivos de áudio files.)
Para validar o modelo 3D, faça o seguinte:
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 (ou um arquivo zip contendo esses arquivos) e arraste os arquivos selecionados ou arquivo ZIP 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 (ou um arquivo ZIP contendo esses arquivos) e clique em Abrir.
Depois de carregar os arquivos do modelo 3D na ferramenta de visualização, um console na parte inferior do navegador exibe os resultados, incluindo qualquer mensagens de erro.
Adicionar modelos 3D para validação
Para validar um modelo 3D, adicione os arquivos que compõem o modelo 3D ao nosso Ferramenta Editor de modelos.
Para validar um modelo, o visualizador precisa do arquivo glb ou glTF do modelo, qualquer imagem associada e arquivos bin e um arquivo de áudio opcional. É possível fazer a seleção múltipla arquivos individuais ou adicionar um único arquivo ZIP.
Ao adicionar um arquivo ZIP, o visualizador carrega o primeiro glb ou glTF que encontrar, conforme a imagem associada e os arquivos bin nesse arquivo zip.
Abra a ferramenta Editor de modelos. 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árias vezes o arquivo glb ou glTF. e os arquivos associados (ou selecione um arquivo zip contendo esses arquivos), e arraste-o para a ferramenta de visualização.
Selecionar arquivos da ferramenta de visualização Na ferramenta de visualização, escolha Scene Viewer > Carregar arquivo. Selecione várias vezes o arquivo glb ou glTF e todos os respectivos (ou um arquivo ZIP contendo esses arquivos) e clique em Abrir.
Erros de validação
Código do erro | Gravidade | Mensagem | Valores aceitos atualmente |
---|---|---|---|
INVALID_INPUT_FILE_EXTENSION |
Erro | O arquivo de entrada [filename] tem uma extensão de arquivo que 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 Scene Viewer, que é o 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 suportado pela especificação Scene Viewer, que é um limite de tamanho 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 suportado pelo Especificação do Scene Viewer, que é um máximo de [num] animações. | 1 |
MORPH_TARGET_USED |
Erro | O glTF contém um objetivo de transformação, que não é suportado pelo Especificação do Scene Viewer. | |
MATERIAL_LIMIT_EXCEEDED |
Aviso | O número de materiais no glTF excede o limite recomendado por especificação do Scene Viewer, que é um máximo de [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 Scene Viewer, que é a resolução máxima de [res] x [res]. | 2048 x 2048 |
UV_LIMIT_EXCEEDED |
Erro | O número de UV por malha no glTF excede o limite permitido pelo Especificação do Scene Viewer, que é um máximo de [num] UV por malha. | 1 |
VERTEX_COLOR_USED |
Erro | O glTF contém uma cor de vértice, que não é suportada pelo a especificação do Scene Viewer. | |
JOINT_LIMIT_EXCEEDED |
Erro | O número de articulações no glTF excede o limite suportado pelo a especificação do Scene Viewer, que é um máximo de [num] junções. | 254 |
TRIANGLE_LIMIT_EXCEEDED |
Aviso | O número de triângulos no glTF excede o limite recomendado pela especificação Scene Viewer, que é o 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 : lista de triângulos, 5 : tira triangular, 6 : ventilador Triangle} |
MISSING_PBR_METALLIC_ROUGHNESS |
Informações |
O material no índice [idx] não tem o pbrMetallicRoughness
. Isso não é exigido pela especificação Scene Viewer se metálico
e fatores de aspereza são usados. Se nenhuma dessas opções for usada,
o material usará os valores padrão, o que pode levar a um comportamento não intencional.
|