Scene Viewer — это интерактивный просмотрщик, позволяющий создавать 3D- и AR-контент на вашем веб-сайте или в Android-приложении. Он позволяет пользователям мобильных устройств Android легко просматривать, размещать, отображать и взаимодействовать с размещенными в интернете 3D-моделями в своей среде.
Большинство браузеров для Android поддерживают Scene Viewer. Scene Viewer успешно внедрен многими партнерами Google для надежной поддержки 3D и дополненной реальности. Он также обеспечивает работу этих функций в поиске Google.
Реализация проста:
Для работы веб-сайтов достаточно правильно отформатированных ссылок на веб-странице.
Для создания приложений требуется всего несколько строк кода на Java.
Требования к среде выполнения Scene Viewer
Для использования дополненной реальности с помощью Scene Viewer пользователям необходимо иметь:
- Устройство с поддержкой ARCore, работающее под управлением Android 7.0 Nougat (уровень API 24) или более поздней версии.
- Актуальная (последняя) версия Google Play Services for AR . Эта служба автоматически устанавливается и обновляется на подавляющем большинстве устройств, поддерживающих ARCore.
- Актуальная версия приложения Google . Это приложение предустановлено и автоматически обновляется на подавляющем большинстве устройств, поддерживающих ARCore.
Чтобы предусмотреть случаи, когда сервисы Google Play для дополненной реальности или само приложение Google отсутствуют, или установленные версии слишком устарели, можно указать резервный URL-адрес, который запускает альтернативный вариант, например, веб-страницу, сообщение об ошибке или созданный вами резервный вариант.
Поддерживаемые варианты использования
| Предполагаемый сценарий использования | Рекомендуемое приложение | Преимущества |
|---|---|---|
| С помощью кнопки или ссылки на веб-сайте или в приложении Android можно запустить встроенное AR-представление 3D-модели. Если на устройстве отсутствуют сервисы Google Play для дополненной реальности, в случае их отсутствия, модель будет корректно отображаться в 3D-режиме, поддерживаемом Scene Viewer. | Запустите Scene Viewer, явно указав путь к пакету Google Search , и выберите подходящий mode отображения 3D-модели.
|
|
| С помощью кнопки или ссылки на веб-сайте или в приложении Android можно запустить встроенное AR-представление 3D-модели. Если на устройстве отсутствует Google Play Services for AR, настройте поведение резервного варианта. | Запустите Scene Viewer, используя явное намерение обратиться к Google Play Services for AR (ARCore) , и выберите подходящий mode отображения 3D-модели.
| Используйте собственную программу для просмотра 3D-моделей или предоставьте альтернативный вариант собственной разработки для сценариев использования, не связанных с дополненной реальностью. |
| Разместите на своем веб-сайте встроенное отображение 3D-модели и предоставьте пользователю возможность вручную перейти в полноэкранный режим дополненной реальности. | Используйте <model-viewer> или любой другой веб-просмотрщик 3D-моделей, чтобы запустить Scene Viewer, отображающий 3D-модель в дополненной реальности. |
|
Запустите Scene Viewer, используя явно заданное намерение (3D или AR).
Для поддержки максимально широкого спектра устройств Android используйте явное намерение Android для запуска Scene Viewer. Явное намерение может быть запущено со страницы HTML или из нативного приложения Android. Обработка намерения будет осуществляться приложением Google , которое предустановлено на устройствах Android с поддержкой ARCore.
В зависимости от настроенных параметров намерения и возможностей устройства, интерактивные 3D-модели могут размещаться в окружении пользователя или отображаться в 3D-просмотрщике.
Если на устройстве установлены и обновлены до последней версии сервисы Google Play для дополненной реальности, Scene Viewer отобразит модель в режиме дополненной реальности или в 3D-режиме.
Если Google Play Services for AR отсутствует или устарел, Scene Viewer корректно переключается на отображение модели в 3D-режиме.
Если 3D-модель не может быть отображена, например, потому что приложение Google не установлено или имеет старую версию, для отображения резервной веб-страницы будет использоваться параметр
S.browser_fallback_url.
Запуск средства просмотра сцен из 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
Для явного запуска интента из 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 с более высокой версией приложения, соответствующей необходимым вам функциям.
В версии 1.1 Intent добавлена поддержка ссылок intent:// , которые могут запускать приложение Android напрямую, а не по URL-адресу. Если вы хотите, чтобы Scene Viewer гарантировал доступность этой функции при запуске и не запускался в противном случае, запустите Scene Viewer с помощью intent://arvr.google.com/scene-viewer/1.1 .
Поддерживаемые параметры намерения
Для явного указания намерения в пакете Google Search поддерживаются следующие параметры.
| Параметр намерения | Допустимые значения | Комментарии |
|---|---|---|
file (обязательно) | Действительный URL | Этот URL-адрес указывает файл glTF или glb, который должен быть загружен в Scene Viewer. Его следует экранировать. |
S.browser_fallback_url (необходим для интентов на основе HTML) | Действительный URL | Эта функция Google Chrome поддерживается только в веб-версиях. Если приложение Google отсутствует на устройстве, Google Chrome переходит по этому URL-адресу. |
mode (опционально) | 3d_preferred (по умолчанию) | Программа просмотра сцен отображает модель в 3D-режиме с кнопкой « Просмотреть в вашем пространстве» .![]() Если на устройстве отсутствует Google Play Services for AR, кнопка « Просмотреть в вашем пространстве» будет скрыта. ![]() |
3d_only | Приложение Scene Viewer запускается с моделью, отображаемой в 3D-режиме, даже если на устройстве установлены сервисы Google Play для дополненной реальности. Кнопка « Просмотреть в вашем пространстве» никогда не отображается. ![]() | |
ar_preferred | Приложение Scene Viewer запускается в режиме дополненной реальности (AR) в качестве начального режима. Пользователю предоставляется возможность переключаться между режимами AR и 3D с помощью кнопок « Просмотреть в своем пространстве» и «Просмотреть в 3D» .![]() Если сервисы Google Play для дополненной реальности отсутствуют, Scene Viewer автоматически переключается в 3D-режим в качестве начального режима. ![]() | |
ar_only | При использовании этого значения запуск следует осуществлять через явное Android-интентирование к com.google.ar.core .Примечание: Не используйте режим ar_only при запуске приложения Google через явное намерение Android . ![]() | |
link (необязательно) | Действительный URL | URL-адрес внешней веб-страницы. Если он присутствует, в пользовательском интерфейсе отобразится кнопка, которая при нажатии будет перенаправлять на этот URL-адрес. ![]() |
title (необязательно) | Допустимая строка | Название модели. Если оно присутствует, то будет отображаться в пользовательском интерфейсе. После 60 символов название будет обрезано многоточием.![]() |
| звук (опционально) | Действительный URL | URL-адрес зацикленной аудиодорожки, синхронизированной с первой анимацией, встроенной в файл glTF. Он должен быть предоставлен вместе с файлом glTF, содержащим анимацию соответствующей длины. Если звук присутствует, он зацикливается после загрузки модели. Этот адрес должен быть экранирован. |
resizable (опционально) | true (по умолчанию) | Если установить значение false , пользователи не смогут масштабировать модель в режиме дополненной реальности. Масштабирование работает в обычном режиме в 3D-режиме. |
enable_vertical_placement (необязательно) | false (по умолчанию) | Если установить значение true , пользователи смогут разместить модель на вертикальной поверхности. |
Руководство по UX
Для обеспечения наилучшего пользовательского опыта мы рекомендуем, чтобы видимые призывы к действию давали понять, что пользователь вот-вот погрузится в иммерсивную среду.
Для просмотра 3D-контента мы рекомендуем использовать призыв к действию с надписью « Просмотреть в 3D» , который будет выглядеть как одно из следующих изображений:
Запустите Scene Viewer, используя явное намерение обратиться к Google Play Services для дополненной реальности (только в режиме дополненной реальности).
Режим дополненной реальности в Scene Viewer работает на основе сервисов Google Play для дополненной реальности.
Чтобы обеспечить доступность дополненной реальности в Scene Viewer, вы можете использовать явное намерение Android с веб-сайта или нативного приложения Android для запуска Scene Viewer через com.google.ar.core package и указать browser_fallback_url . Таким образом, вы можете гарантировать, что все пользователи будут иметь либо доступ к нативной дополненной реальности через 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 для дополненной реальности отсутствуют на устройстве или устарели, устройство переходит по этому URL-адресу. |
mode (опционально) | ar_only | Scene Viewer всегда запускает 3D-модель в нативном режиме дополненной реальности и скрывает любой интерфейс для переключения на 3D-просмотрщик Scene Viewer. Если Google Play Services for AR отсутствует, Scene Viewer запускает веб-приложения по URL-адресу, указанному в параметре browser_fallback_url . Для приложений Scene Viewer использует альтернативный вариант, например, сообщение об ошибке или другой разработанный вами интерфейс. ![]() |
ar_preferred | Приложение Scene Viewer запускается в режиме дополненной реальности (AR) в качестве начального режима и предоставляет пользователям возможность переключаться между режимами AR и 3D с помощью кнопок « Просмотр в вашем пространстве» и «Просмотр в 3D» . Если Google Play Services for AR отсутствует, Scene Viewer запускает веб-приложения по URL-адресу, указанному в параметре browser_fallback_url . Для приложений Scene Viewer использует альтернативный вариант, например, сообщение об ошибке или другой разработанный вами интерфейс. ![]() ![]() | |
link (необязательно) | Действительный URL | URL-адрес внешней веб-страницы. Если он присутствует, в пользовательском интерфейсе отобразится кнопка, которая при нажатии будет перенаправлять на этот URL-адрес.![]() В версии 1.1 добавлена поддержка ссылок intent:// в Scene Viewer, что позволяет кнопке перехода в Scene Viewer напрямую запускаться в других приложениях. Обратите внимание, что это следует использовать с осторожностью и указывать только в том случае, если гарантировано наличие обработчика intent для данного intent. |
title (необязательно) | Допустимая строка | Название модели. Если оно присутствует, то будет отображаться в пользовательском интерфейсе. После 60 символов название будет обрезано многоточием.![]() В версии 1.1 добавлена поддержка HTML-стилизации содержимого заголовка, допускающая произвольное количество текста. Обратите внимание, что заголовок должен быть экранирован с помощью URL-адресов. |
sound (опционально) | Действительный URL | URL-адрес зацикленной аудиодорожки, синхронизированной с первой анимацией, встроенной в файл glTF. Он должен быть предоставлен вместе с файлом glTF, содержащим анимацию соответствующей длины. Если звук присутствует, он зацикливается после загрузки модели. |
resizable (опционально) | true (по умолчанию) | Если установить значение false , пользователи не смогут масштабировать модель в режиме дополненной реальности. Масштабирование работает в обычном режиме в 3D-режиме. |
disable_occlusion (необязательно) | false (по умолчанию) | Если установить значение true , объекты, размещенные на сцене, всегда будут отображаться перед реальными объектами на сцене. Дополнительную информацию см. в разделе [Включить окклюзию](/ar/develop/depth#enable_occlusion). |
Руководство по UX
Для обеспечения наилучшего пользовательского опыта мы рекомендуем следовать этим рекомендациям.
В случае с дополненной реальностью видимый призыв к действию должен передавать пользователю информацию о том, что он вот-вот погрузится в иммерсивную среду. Мы рекомендуем использовать призыв к действию « Посмотреть в своем пространстве» :
Вполне возможно, что у пользователей на устройстве не установлены сервисы Google Play для дополненной реальности . Вот как
<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 приложение переключается на стандартный режим дополненной реальности и предлагает пользователю разместить модель в своем окружении с помощью режима просмотра сцены.
Если Google Play Services с поддержкой дополненной реальности отсутствует, нажатие этой кнопки отобразит модель в 3D-просмотрщике <model-viewer> .
Для получения дополнительной информации о том, как начать работу с <model-viewer> см. документацию к <model-viewer> .
Требования к файлам для моделей
Программа Scene Viewer поддерживает следующие модели, но имеет следующие ограничения.
| Поддержка форматов файлов | glTF 2.0/ glb , с использованием следующих расширений:
|
| Анимация |
glTF содержит несколько анимаций, 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 | Ошибка | Входной файл [filename] имеет расширение, которое не поддерживается валидатором. | ['.glb', '.gltf'] |
REC_INPUT_BINARY_SIZE_EXCEEDED | Предупреждение | Размер предоставленных пользователем входных данных в двоичном формате превышает предел, рекомендованный спецификацией Scene Viewer, который составляет [размер] МБ. | 10 |
MAX_INPUT_BINARY_SIZE_EXCEEDED | Ошибка | Размер предоставленных пользователем входных данных в двоичном формате превышает максимальный размер, поддерживаемый спецификацией Scene Viewer, который составляет [размер] МБ. | 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 x 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, это свойство не требуется, если вместо него используются факторы металличности и шероховатости. Если ни один из этих факторов не используется, материал будет использовать значения по умолчанию, что может привести к непредвиденному поведению. |













