Scene Viewer — это иммерсивная программа просмотра, которая позволяет просматривать 3D и AR-изображения на вашем веб-сайте или в приложении для Android. Он позволяет пользователям мобильных устройств Android легко просматривать, размещать, просматривать и взаимодействовать с размещенными в Интернете 3D-моделями в своей среде.
Большинство браузеров Android поддерживают Scene Viewer. Scene Viewer был успешно внедрен многими партнерами Google для надежной поддержки 3D и AR. Он также поддерживает эти возможности для поиска Google.
Реализация проста:
Для работы в Интернете требуются только правильно отформатированные ссылки на веб-странице.
Для работы с приложениями требуется всего лишь интеграция нескольких строк кода Java.
Требования к среде выполнения Scene Viewer
Чтобы использовать дополненную реальность с помощью Scene Viewer, пользователи должны иметь:
- Устройство с поддержкой ARCore под управлением Android 7.0 Nougat (уровень API 24) или более поздней версии.
- Актуальная (последняя) версия Сервисов Google Play для AR . Эта служба автоматически устанавливается и обновляется на подавляющем большинстве устройств, поддерживаемых ARCore.
- Актуальная версия приложения Google . Это приложение предустановлено и автоматически обновляется на подавляющем большинстве устройств, поддерживаемых ARCore.
Чтобы предусмотреть случаи, когда Сервисы Google Play для AR или приложение Google отсутствуют или установленные версии слишком старые, вы можете указать резервный URL-адрес, который запускает альтернативный интерфейс, например веб-страницу, сообщение об ошибке, или запасной опыт, который вы создали.
Поддерживаемые варианты использования
Предполагаемый вариант использования | Рекомендуемое применение | Преимущества |
---|---|---|
С помощью кнопки или ссылки на веб-сайте или в приложении Android запустите собственное представление 3D-модели в дополненной реальности. Если Сервисы Google Play для AR отсутствуют на устройстве, изящно вернитесь к показу модели в 3D-режиме на базе Scene Viewer. | Запустите Scene Viewer, указав явное намерение пакета Google Search , и выберите соответствующую настройку mode для отображения 3D-модели.
|
|
С помощью кнопки или ссылки на веб-сайте или в приложении Android запустите собственное представление 3D-модели в дополненной реальности. Если Сервисы Google Play для AR отсутствуют на устройстве, управляйте резервным поведением. | Запустите Scene Viewer, указав явное намерение Google Play Services for AR (ARCore) и выберите соответствующую настройку mode для отображения 3D-модели.
| Используйте собственную программу просмотра 3D-моделей или предоставьте другой запасной вариант собственной разработки для случаев использования, не связанных с AR. |
Разместите встроенное представление 3D-модели на своем веб-сайте и позвольте пользователю вручную войти в полноэкранный собственный режим AR. | Используйте <model-viewer> или любую другую веб-среду просмотра 3D-изображений, чтобы запустить Scene Viewer, отображающий 3D-модель в AR. |
|
Запустите Scene Viewer, используя явное намерение (3D или AR).
Для поддержки самого широкого спектра устройств Android используйте явное намерение Android для запуска Scene Viewer. Явное намерение может быть вызвано с HTML-страницы или собственного приложения Android. Это намерение будет обрабатываться приложением Google , которое предварительно установлено на устройствах Android с поддержкой ARCore.
В зависимости от настроенных параметров намерения и возможностей устройства интерактивные 3D-модели могут быть помещены в среду пользователя или вернуться к отображению в средстве 3D-просмотра.
Если на устройстве присутствуют сервисы Google Play для AR в актуальном состоянии, Scene Viewer покажет модель в собственном виде AR или в 3D-виде.
Если Сервисы Google Play для AR отсутствуют или устарели, Scene Viewer корректно возвращается к отображению модели в 3D-виде.
Если 3D-модель невозможно отобразить, например, из-за того, что приложение Google не установлено или имеет старую версию, вместо этого будет использоваться параметр
S.browser_fallback_url
для отображения резервной веб-страницы.
Запустите Scene Viewer из HTML или Java
HTML
Чтобы вызвать явное намерение из HTML, используйте следующий синтаксис:
<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, используйте следующий код:
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);
Управление версиями намерений
Версия намерения обозначается номером версии после arvr.google.com/scene-viewer
. Например, в первоначальном выпуске использовалась версия 1.0. Если требуются новые функции Scene Viewer, вы можете запустить Scene Viewer с более высокой версией, соответствующей необходимым вам функциям.
В Intent версии 1.1 добавлена поддержка ссылок intent://
, которые можно запускать непосредственно в приложении Android, а не по URL-адресу. Если вы хотите, чтобы программа просмотра сцен гарантировала доступность этой функции при запуске и не запускалась в противном случае, запустите программу просмотра сцен с намерением intent://arvr.google.com/scene-viewer/1.1
.
Поддерживаемые параметры намерения
Следующие параметры поддерживаются для явного намерения пакета Google Search.
Параметр намерения | Разрешенные значения | Комментарии |
---|---|---|
file (обязательно) | Действительный URL-адрес | Этот URL-адрес указывает файл glTF или glb, который следует загрузить в Scene Viewer. Это должно быть экранировано URL-адресом. |
S.browser_fallback_url (требуется для намерений на основе HTML) | Действительный URL-адрес | Эта функция Google Chrome поддерживается только для веб-реализаций. Если приложение Google отсутствует на устройстве, это URL-адрес, по которому переходит Google Chrome. |
mode (опционально) | 3d_preferred (по умолчанию) | Scene Viewer отображает модель в 3D-режиме с помощью кнопки «Просмотр в пространстве» . Если Сервисы Google Play для AR отсутствуют на устройстве, кнопка «Просмотреть в вашем пространстве» скрыта. |
3d_only | Scene Viewer запускается с моделью, отображаемой в 3D-режиме, даже если на устройстве присутствуют сервисы Google Play для AR. Кнопка «Просмотреть в своем пространстве» никогда не отображается. | |
ar_preferred | Scene Viewer запускается в собственном режиме AR в качестве режима входа. Пользователю предоставляется возможность переключаться между режимами AR и 3D с помощью кнопок «Просмотр в своем пространстве» и «Просмотр в 3D» . Если Сервисы Google Play для AR отсутствуют, Scene Viewer плавно возвращается в 3D-режим в качестве режима входа. | |
ar_only | При использовании этого значения вам следует запускать через явное намерение Android com.google.ar.core .Примечание. Не используйте режим ar_only при запуске через явное намерение Android использовать приложение Google . | |
link (необязательно) | Действительный URL-адрес | URL-адрес внешней веб-страницы. Если он присутствует, в пользовательском интерфейсе появится кнопка, которая будет переходить к этому URL-адресу при нажатии. |
title (необязательно) | Действительная строка | Имя модели. Если он присутствует, он будет отображаться в пользовательском интерфейсе. Имя будет обрезано многоточием после 60 символов. |
звук (опционально) | Действительный URL-адрес | URL-адрес зацикленной звуковой дорожки, синхронизированной с первой анимацией, встроенной в файл glTF. Его следует предоставить вместе с glTF с анимацией соответствующей длины. Если присутствует, звук зацикливается после загрузки модели. Это должно быть экранировано URL-адресом. |
resizable (необязательно) | true (по умолчанию) | Если установлено значение false , пользователи не смогут масштабировать модель в AR. Масштабирование в 3D работает нормально. |
enable_vertical_placement (необязательно) | false (по умолчанию) | Если установлено значение true , пользователи смогут размещать модель на вертикальной поверхности. |
UX-руководство
Чтобы обеспечить пользователям наилучший UX, мы рекомендуем, чтобы видимые призывы к действию сообщали о том, что пользователь собирается войти в иммерсивную среду.
Для просмотра 3D-изображений мы рекомендуем призыв к действию с надписью « Просмотреть в 3D» , который выглядит как одно из следующих изображений:
Запустите Scene Viewer, указав явное намерение использовать Сервисы Google Play для AR (только режим AR).
Режим AR в Scene Viewer поддерживается сервисами Google Play для AR.
Чтобы гарантировать, что AR доступна в Scene Viewer, вы можете использовать явное намерение Android с веб-сайта или собственного приложения Android для запуска Scene Viewer через com.google.ar.core package
и предоставить browser_fallback_url
. Таким образом, вы можете гарантировать, что у всех пользователей будет либо собственный опыт AR через Scene Viewer, либо резервный вариант, который вы создали самостоятельно. Например, вы можете создать резервные возможности, такие как собственное средство просмотра 3D-изображений или корректное сообщение об ошибке.
Чтобы вызвать явное намерение из HTML, используйте следующий синтаксис:
<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>;
Чтобы вызвать явное намерение из Java, используйте следующий код:
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);
Поддерживаемые параметры намерения
Следующие параметры поддерживаются для явного намерения пакета Google Play Services for AR.
Параметр намерения | Разрешенные значения | Комментарии |
---|---|---|
browser_fallback_url (требуется для намерений на основе HTML) | Действительный URL-адрес | Это поддерживается только для веб-реализаций. Если Сервисы Google Play для AR отсутствуют на устройстве или не обновлены, происходит переход по этому URL-адресу. |
mode (опционально) | ar_only | Scene Viewer всегда запускает 3D-модель в собственном виде AR и скрывает любой пользовательский интерфейс для переключения на 3D-просмотрщик Scene Viewer. Если Сервисы Google Play для AR отсутствуют, Scene Viewer запускает URL-адрес, который вы установили в параметре browser_fallback_url для веб-интерфейса. Для работы с приложениями Scene Viewer использует альтернативный вариант, например сообщение об ошибке или другой вариант, созданный вами самостоятельно. |
ar_preferred | Scene Viewer запускается в собственном режиме AR в качестве режима входа и предоставляет пользователям возможность переключаться между режимами AR и 3D с помощью кнопок «Просмотр в вашем пространстве» и «Просмотр в 3D» . Если Сервисы Google Play для AR отсутствуют, Scene Viewer запускает URL-адрес, который вы установили в параметре browser_fallback_url для веб-интерфейса. Для работы с приложениями Scene Viewer использует альтернативный вариант, например сообщение об ошибке или другой вариант, созданный вами самостоятельно. | |
link (необязательно) | Действительный URL-адрес | URL-адрес внешней веб-страницы. Если он присутствует, в пользовательском интерфейсе появится кнопка, которая будет переходить к этому URL-адресу при нажатии. В версии 1.1 добавлена поддержка ссылок Intent:// в Scene Viewer, чтобы кнопка посещения Scene Viewer могла активироваться непосредственно в других приложениях. Обратите внимание, что это следует использовать с осторожностью и указывать только в том случае, если для данного намерения гарантированно присутствует обработчик намерения. |
title (необязательно) | Действительная строка | Имя модели. Если он присутствует, он будет отображаться в пользовательском интерфейсе. Имя будет обрезано многоточием после 60 символов. В версии 1.1 добавлена поддержка HTML-стилизации содержимого заголовка с возможностью произвольного количества текста. Обратите внимание, что заголовок должен быть экранирован URL-адресом. |
sound (опционально) | Действительный URL-адрес | URL-адрес зацикленной звуковой дорожки, синхронизированной с первой анимацией, встроенной в файл glTF. Его следует предоставлять вместе с glTF с анимацией соответствующей длины. Если присутствует, звук зацикливается после загрузки модели. |
resizable (необязательно) | true (по умолчанию) | Если установлено значение false , пользователи не смогут масштабировать модель в AR. Масштабирование в 3D работает нормально. |
disable_occlusion (необязательно) | false (по умолчанию) | Если установлено значение true , объекты, размещенные на сцене, всегда появляются перед объектами реального мира на сцене. Дополнительную информацию см. в разделе [Включить окклюзию](/ar/develop/Deep#enable_occlusion). |
UX-руководство
Чтобы обеспечить пользователям наилучший UX, мы рекомендуем следовать этим рекомендациям.
Для AR-опыта видимый призыв к действию должен сообщать, что пользователь собирается войти в иммерсивную среду. Мы рекомендуем вам использовать призыв к действию « Посмотреть в своем пространстве» :
Возможно, у пользователей на устройстве не установлены Сервисы Google Play для AR . Вот как
<model-viewer>
обрабатывает резервный вариант, и вы можете смело использовать этот фрагмент кода в качестве отправной точки.// 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);
Использование <model-viewer>
для запуска Scene Viewer
Вы можете включить Scene Viewer со своего веб-сайта, включив веб-компонент <model-viewer>
с атрибутом ar
.
<model-viewer ar
ar-modes="scene-viewer webxr quick-look"
alt="A 3D model of an astronaut."
src="Astronaut.gltf"></model-viewer>
При просмотре на устройстве Android с поддержкой ARCore веб-сайт, включающий компонент <model-viewer>
с атрибутом ar
, отображает кнопку, как показано в следующем примере.
Когда режим scene-viewer
используется в ar-modes
, он переключается на собственный вид AR и предлагает пользователю разместить модель в своей среде с помощью Scene Viewer.
Если Сервисы Google Play с AR отсутствуют, нажатие этой кнопки отображает модель в средстве 3D-просмотра <model-viewer>
.
Дополнительную информацию о том, как начать работу с <model-viewer>
, см. в документации по <model-viewer>
.
Требования к файлам моделей
Scene Viewer имеет следующую поддержку и ограничения для моделей.
Поддержка форматов файлов | glTF 2.0/ glb , используя следующие расширения:
|
Анимация |
glTF содержит несколько анимаций, Scene Viewer воспроизводит только первую анимацию. |
Рекомендуемые пределы | Общая производительность ресурсов зависит от установки ограничений и компромисса между вершинами, материалами, разрешением текстур, сеткой на материал и другими факторами. Используйте следующие рекомендации для оптимизации ваших активов.
|
Поддержка теней | Жесткие тени автоматически визуализируются с помощью Scene Viewer при размещении объекта, поэтому мы не рекомендуем запекать тени в вашей модели. |
Поддержка текстур |
|
Материал | ПБР |
Загрузка файла | HTTPS |
Сцена |
|
Использование инструмента предварительного просмотра для проверки ваших 3D-моделей
Чтобы обеспечить правильное отображение файла 3D-модели в Scene Viewer, воспользуйтесь нашим онлайн-инструментом предварительного просмотра для проверки файлов на вашем ПК.
Проверка вашей 3D-модели
Для проверки модели инструменту предварительного просмотра необходим один файл glb или glTF, любые связанные файлы изображений и bin, а также дополнительный аудиофайл. Аудиофайл будет повторяться вместе с анимацией 0.
Вы можете выбрать несколько отдельных файлов или, при желании, поместить glb или glTF и связанные с ним файлы в zip-файл. (Метод zip-файла не поддерживает аудиофайлы.)
Чтобы проверить вашу 3D-модель:
Откройте инструмент онлайн-предварительного просмотра в браузере.
Используйте один из этих методов, чтобы добавить файлы в инструмент предварительного просмотра:
Перетащите . Выберите файл glb или glTF и все связанные с ним файлы (или zip-файл, содержащий эти файлы) и перетащите выбранные файлы или zip-файл в инструмент предварительного просмотра.
Из инструмента предварительного просмотра . В инструменте предварительного просмотра выберите «Просмотр сцен» > «Загрузить файл» . Выберите файл glb или glTF и все связанные с ним файлы (или zip-файл, содержащий эти файлы) и нажмите «Открыть» .
После того как вы загрузите файлы, состоящие из вашей 3D-модели, в инструмент предварительного просмотра, консоль в нижней части браузера отображает результаты, включая любые сообщения об ошибках.
Добавление 3D-моделей для проверки
Чтобы проверить 3D-модель, добавьте файлы, составляющие 3D-модель, в наш инструмент «Редактор моделей» .
Для проверки модели средству предварительного просмотра необходим файл glb или glTF модели, все связанные файлы изображений и bin, а также дополнительный аудиофайл. Вы можете выбрать несколько отдельных файлов или добавить один zip-файл.
При добавлении zip-файла программа предварительного просмотра загружает первый найденный glb или glTF, а также связанные с ним файлы изображений и bin в этом zip-файле.
Откройте инструмент «Редактор моделей» в браузере.
Используйте один из этих методов, чтобы добавить файлы в инструмент предварительного просмотра:
Чтобы перетащить файлы для проверки, выберите несколько файлов glb или glTF и все связанные файлы (или выберите zip-файл, содержащий эти файлы), и перетащите его в инструмент предварительного просмотра.
Выберите файлы с помощью инструмента предварительного просмотра . В инструменте предварительного просмотра выберите «Просмотр сцен» > «Загрузить файл» . Выберите несколько раз файл glb или glTF и все связанные с ним файлы (или zip-файл, содержащий эти файлы) и нажмите «Открыть» .
Ошибки валидации
Код ошибки | Серьезность | Сообщение | Текущие поддерживаемые значения |
---|---|---|---|
INVALID_INPUT_FILE_EXTENSION | Ошибка | Входной файл [имя файла] имеет расширение файла, которое не поддерживается валидатором. | ['.glb', '.gltf'] |
REC_INPUT_BINARY_SIZE_EXCEEDED | Предупреждение | Предоставленный пользовательский ввод имеет двоичный размер, превышающий ограничение, рекомендованное спецификацией Scene Viewer, которое представляет собой рекомендуемый предел размера в [размер] МБ. | 10 |
MAX_INPUT_BINARY_SIZE_EXCEEDED | Ошибка | Предоставленный пользовательский ввод имеет двоичный размер, который превышает максимальный предел, поддерживаемый спецификацией Scene Viewer, который представляет собой максимальный размер [size] МБ. | 15 |
UNSUPPORTED_GLTF_EXTENSION_USED | Ошибка | Расширение [ext] в glTF не поддерживается спецификацией Scene Viewer. | ['KHR_materials_pbrSpecularGlossiness', 'KHR_materials_unlit', 'KHR_texture_transform'] |
ANIMATION_LIMIT_EXCEEDED | Ошибка | Количество анимаций в glTF превышает предел, поддерживаемый спецификацией Scene Viewer, который составляет максимум [num] анимаций. | 1 |
MORPH_TARGET_USED | Ошибка | glTF содержит цель морфинга, которая не поддерживается спецификацией Scene Viewer. | |
MATERIAL_LIMIT_EXCEEDED | Предупреждение | Количество материалов в glTF превышает предел, рекомендованный спецификацией Scene Viewer, который составляет максимум [num] материалов. | 10 |
TEXTURE_RESOLUTION_LIMIT_EXCEEDED | Предупреждение | Разрешение изображения с индексом [idx] в glTF превышает предел, рекомендованный спецификацией Scene Viewer, который представляет собой максимальное разрешение [res] x [res]. | 2048 х 2048 |
UV_LIMIT_EXCEEDED | Ошибка | Количество UV на сетку в glTF превышает предел, поддерживаемый спецификацией Scene Viewer, который составляет максимум [num] UV на сетку. | 1 |
VERTEX_COLOR_USED | Ошибка | glTF содержит цвет вершин, который не поддерживается спецификацией Scene Viewer. | |
JOINT_LIMIT_EXCEEDED | Ошибка | Количество соединений в glTF превышает предел, поддерживаемый спецификацией Scene Viewer, который составляет максимум [num] соединений. | 254 |
TRIANGLE_LIMIT_EXCEEDED | Предупреждение | Количество треугольников в glTF превышает предел, рекомендованный спецификацией Scene Viewer, который составляет максимум [num] треугольников. | 100 000 |
PRIMITIVE_MODE_UNSUPPORTED | Ошибка | Примитивный режим [mode] не поддерживается спецификацией Scene Viewer. | {4: Список треугольников, 5: Полоса треугольников, 6: Веер треугольников} |
MISSING_PBR_METALLIC_ROUGHNESS | Информация | У материала с индексом [idx] отсутствует свойство pbrMetallicRoughness . Этого не требует спецификация Scene Viewer, если вместо этого используются коэффициенты металла и шероховатости. Если ни один из них не используется, материал будет использовать значения по умолчанию, что может привести к непредвиденному поведению. |