O Scene Viewer é um visualizador imersivo que oferece experiências em 3D e RA no seu site ou app Android. Ele permite aos usuários de dispositivos móveis Android visualizar, posicionar, visualizar e interagir facilmente com modelos 3D hospedados na Web no próprio ambiente.
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 RA. Ela também potencializa essas experiências para a 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 aplicativos exigem a integração apenas de algumas linhas de código Java.
Requisitos de tempo de execução do Scene Viewer
Para usar a RA com o Visualizador de cenas, os usuários precisam ter:
- Um dispositivo com suporte ao ARCore com o Android 7.0 Nougat (API de nível 24) ou mais recente.
- Uma versão atualizada (recente) do Google Play Services para RA. Esse serviço é instalado automaticamente e atualizado na grande maioria dos dispositivos com suporte ao ARCore.
- Uma versão atualizada do Google app. Este aplicativo 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á presente ou as versões instaladas são muito antigas, é possível especificar um URL substituto que inicie uma experiência alternativa, por exemplo, uma página da Web, uma mensagem de erro ou uma experiência substituta criada por você.
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 em RA de um modelo 3D.
Se o Google Play Services para RA não estiver presente no dispositivo, volte 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.
|
|
Com um botão ou link de um site ou app Android, inicie uma visualização em RA nativa
de um modelo 3D.
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 do
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 substituta do seu projeto para casos de uso que não sejam de 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 de tela cheia. | Use o <model-viewer> ou qualquer outro
visualizador em 3D baseado na Web para iniciar o Scene Viewer exibindo o modelo 3D
de forma nativa em RA. |
|
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. A intent explícita pode ser acionada em uma página HTML ou em um app Android nativo. A intent será processada pelo app Google que vem pré-instalado em dispositivos Android compatíveis com ARCore.
Dependendo dos parâmetros de intent configurados e dos recursos do dispositivo, os modelos 3D interativos podem ser colocados no ambiente do usuário ou voltar a exibi-los em um visualizador em 3D.
Se o Google Play Services para RA estiver presente no dispositivo e atualizado, o Visualizador de cenas 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 Visualizador de cenas volta a exibir o modelo em uma visualização 3D.
Se não for possível mostrar um modelo 3D, por exemplo, porque o app Google não está instalado ou é uma versão antiga, o parâmetro
S.browser_fallback_url
será usado para exibir uma página da Web substituta.
Iniciar o Scene Viewer no HTML ou Java
HTML
Para acionar a intent explícita do 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 do 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ão 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 usou
a versão 1.0. Quando recursos mais recentes do Scene Viewer forem necessários, você
poderá iniciá-lo com uma versão de intent mais recente correspondente aos
recursos necessários.
A versão 1.1 da intent adicionou suporte a links intent://
, que podem ser iniciados
diretamente em um app Android em vez de em um URL. Se você quiser que o Scene Viewer
garantir que essa funcionalidade esteja disponível quando iniciado e falhar
ao iniciar, abra o visualizador de cena com uma intent para
intent://arvr.google.com/scene-viewer/1.1
.
Parâmetros de intent compatíveis
Os parâmetros a seguir 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 precisa ser carregado no Scene Viewer. Precisa 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 compatível somente com implementações baseadas na Web. Quando o Google app não está presente no dispositivo, este é o URL que o Google Chrome acessa. |
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 botão Ver no seu espaço 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 Veja no seu espaço nunca é exibido.
|
|
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 RA e 3D usando os botões
Visualizar no seu espaço e Ver em 3D.
Se o Google Play Services para RA não estiver presente, o Visualizador de cenas voltará para o modo 3D como o modo de entrada. |
|
ar_only |
Ao usar esse valor, você precisa iniciar a inicialização com uma
intent explícita do Android
para com.google.ar.core .
Observação:não use o modo ar_only ao iniciar com uma
intent do Android explícita
para o Google app.
|
|
link (opcional) |
Um URL válido |
Um URL para uma página da Web externa. Se estiver presente, um botão será exibido na interface que direcionará o usuário para 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 que é sincronizada com a primeira animação incorporada em um arquivo glTF. Ele precisa ser fornecido junto com um glTF com uma animação de comprimento correspondente. Se estiver presente, o som será repetido após o carregamento do modelo. Precisa 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 superfície vertical.
|
Orientações sobre UX
Para oferecer a melhor UX possível para os usuários, recomendamos que as calls-to-action visíveis mostrem que o usuário está prestes a entrar em um ambiente imersivo.
Para experiências do visualizador em 3D, recomendamos uma call-to-action Ver em 3D que se pareça com uma das imagens a seguir:
Iniciar o Scene Viewer usando uma intent explícita do 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 intent do Android
explícita
de um site ou app Android nativo para iniciar esse recurso usando o
com.google.ar.core package
e fornecer um browser_fallback_url
. Dessa forma, você
pode garantir que todos os usuários tenham uma experiência de RA nativa pelo Visualizador de cenas ou
uma experiência substituta que você criou. Por exemplo, é possível criar
experiências de fallback, como seu próprio visualizador em 3D ou uma mensagem de erro simples.
Para acionar a intent explícita do 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 do 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 abaixo têm suporte para uma intent explícita do pacote do Google Play Services para RA.
Parâmetro de intent | Valores permitidos | Comentários |
---|---|---|
browser_fallback_url (obrigatório para intents baseadas em HTML) |
Um URL válido | Isso é compatível apenas 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 que o app acessa. |
mode (opcional) |
ar_only |
O Scene Viewer sempre inicia o modelo 3D em uma visualização de RA nativa e oculta qualquer
interface para alternar para o visualizador em 3D.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai abrir o URL definido na browser_fallback_url para experiências baseadas na Web.
Para experiências baseadas em app, o Scene Viewer retorna para uma experiência alternativa,
como uma mensagem de erro ou outra experiência criada por você.
|
ar_preferred |
O Scene Viewer é iniciado no modo nativo de RA como o modo de entrada e fornece aos usuários
a opção de alternar entre os modos RA e 3D usando os botões View in your space
e View in 3D.
Se o Google Play Services para RA não estiver presente, o Scene Viewer vai abrir o URL definido na browser_fallback_url para experiências baseadas na Web.
Para experiências baseadas em app, o Scene Viewer retorna para uma experiência alternativa,
como uma mensagem de erro ou outra experiência criada por você.
|
|
link (opcional) |
Um URL válido |
Um URL para uma página da Web externa. Se estiver presente, um botão será mostrado na interface que vai invocar esse URL quando clicado.
A versão 1.1 adicionou suporte a links intent:// no Scene Viewer para permitir que o botão de visita do visualizador de cenas seja acionado diretamente em outros apps. Ela precisa ser usada com cuidado e só precisa ser especificada quando houver garantia de que um gerenciador de intent esteja presente para a intent em questão. |
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 é sincronizada com a primeira animação incorporada em um arquivo glTF. Ele precisa ser fornecido junto de um glTF com uma animação de comprimento correspondente. Se estiver presente, o som será repetido após o carregamento do modelo. |
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 reais no cenário. Consulte
[Ativar a oclusão](/ar/develop/depth#enable_occlusion) para saber mais.
|
Orientações sobre UX
Para oferecer a melhor UX possível aos usuários, recomendamos seguir estas diretrizes.
Para experiências de RA, a call-to-action visível precisa informar que o usuário está prestes a entrar em um ambiente imersivo. Recomendamos que você use a call-to-action Veja 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>
lida com o substituto e você pode usar 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 no seu site, inclua 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 com suporte a ARCore, um site que inclui o
componente <model-viewer>
com o atributo ar
exibe um botão, conforme mostrado 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 dele usando o Scene Viewer.
Se o Google Play Services com RA não estiver presente, tocar nesse botão exibirá
o modelo no visualizador em 3D do <model-viewer>
.
Consulte a documentação de <model-viewer>
para mais informações sobre como começar a usar <model-viewer>
.
Requisitos de arquivo para modelos
O Scene Viewer tem o suporte e as limitações abaixo para modelos.
Suporte a formatos de arquivos | glTF 2.0/glb , usando estas extensões:
|
Animation |
glTF
tiver várias animações, o Scene Viewer vai reproduzir apenas a primeira animação.
|
Limites recomendados |
O desempenho geral dos recursos depende da definição de restrições e
da escolha entre vértices, materiais, resolução da textura, malha por
material e outros fatores. Siga as diretrizes a seguir para otimizar seus recursos.
|
Suporte de sombra | Sombras rígidas são renderizadas automaticamente pelo Scene Viewer ao colocar um objeto. Por isso, recomendamos não usar sombras no seu 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 PC.
Como validar seu modelo 3D
Para validar um modelo, a ferramenta de visualização precisa de um arquivo glb ou glTF, qualquer arquivo de imagem e bin associado 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 (ou um arquivo ZIP contendo esses arquivos) e arraste os arquivos selecionados ou o ZIP para a ferramenta de visualização.
Na ferramenta de visualização. Na ferramenta de visualização, escolha Scene Viewer > Load File. Selecione um arquivo glb ou glTF e todos os arquivos associados (ou um arquivo ZIP contendo esses arquivos) e clique em Open.
Depois de carregar os arquivos que consistem no seu modelo 3D na ferramenta de visualização, um console na parte inferior do navegador exibirá os resultados, incluindo quaisquer mensagens de erro.
Como adicionar modelos 3D para validação
Para validar um modelo 3D, adicione os arquivos que compõem o modelo 3D à nossa ferramenta Editor de modelos.
Para validar um modelo, o visualizador precisa do arquivo glb ou glTF do modelo, de qualquer imagem e arquivo bin associados e 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 que encontra, bem como 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 todos 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 > Load File. Selecione várias vezes o arquivo glb ou glTF e todos os arquivos associados (ou um arquivo ZIP contendo esses arquivos) e clique em Open.
Erros de validação
Código do erro | Gravidade | Mensagem | Valores atualmente aceitos |
---|---|---|---|
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 |
Alerta | 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 permitido pela especificação do 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 permitido pela especificação do Scene Viewer, que é um máximo de [num] animações. | 1 |
MORPH_TARGET_USED |
Erro | O glTF contém um destino de transformação, que não é compatível com a especificação do Scene Viewer. | |
MATERIAL_LIMIT_EXCEEDED |
Alerta | O número de materiais no glTF excede o limite recomendado pela especificação do Scene Viewer, que é um máximo de [num] materiais. | 10 |
TEXTURE_RESOLUTION_LIMIT_EXCEEDED |
Alerta | 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 permitido pela 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 é compatível com a especificação do Scene Viewer. | |
JOINT_LIMIT_EXCEEDED |
Erro | O número de articulações no glTF excede o limite permitido pela especificação do Scene Viewer, que é um máximo de [num] junções. | 254 |
TRIANGLE_LIMIT_EXCEEDED |
Alerta | 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 Visualizador de cenas. | {4 : Lista de Triangle, 5 : Tira Triangular, 6 : Ventilador do Triangle} |
MISSING_PBR_METALLIC_ROUGHNESS |
Informações |
O material no índice [idx] não tem a
propriedade pbrMetallicRoughness . Isso não é exigido pela especificação do Scene Viewer se fatores metálicos e de aspereza são usados. Se nenhuma delas for usada, o material vai usar valores padrão, o que pode levar a um comportamento não intencional.
|