Сессия AR адаптация поворота экрана
Эта статья объясняет, как настроить сессию AR, когда мини-программа WeChat должна работать в альбомной ориентации.
Перед началом
- Узнайте, что такое угол поворота изображения камеры относительно ориентации экрана, через 3D-рендеринг на основе AR.
- Поймите концепцию и процесс сессии AR.
Перечисление ориентации экрана плагина Mega для мини-программ
Примечание
Определение ориентации экрана телефона см. в официальных документах систем IOS, Android и т.д.
Перечисление ориентации экрана плагина Mega для мини-программ DeviceOrientation:
| Константа | Значение | Описание |
|---|---|---|
Portrait |
0 | Портретная |
LandscapeLeft |
90 | Ландшафтная влево |
PortraitUpsideDown |
180 | Портретная перевернутая |
LandscapeRight |
270 | Ландшафтная вправо |
Изменение ориентации экрана в глобальной конфигурации мини-программы WeChat
Добавьте конфигурацию window в app.json, подробности см. в Реагирование на изменения области отображения.
"window": {
"pageOrientation": "landscape"
}
Введите "portrait" (портретная) или "landscape" (альбомная) в зависимости от ситуации.
Осторожно
Никогда не используйте "auto" в AR-приложениях для мини-программ, так как в некоторых случаях это может вызвать серьезные аномалии в AR-изображении.
Настройка ориентации экрана
Вызовите setDeviceOrientation(deviceOrientation), передав направление поворота экрана. Можно вызывать в любое время, изменения вступают в силу немедленно.
Например, для использования в альбомном режиме, когда экран повернут на 90 градусов против часовой стрелки относительно естественного вертикального положения:
let deviceOrientation = mega.DeviceOrientation.LandscapeLeft;
session.setDeviceOrientation(deviceOrientation);
Настройка ориентации экрана, предоставляемая плагином mega, предназначена для компенсации отсутствия отслеживания ориентации экрана в мини-программах WeChat. WeChat в настройке pageOrientation предоставляет только два варианта: portrait и landscape, чего недостаточно для AR-приложений. Например, альбомный режим с поворотом на 90 градусов против часовой стрелки от естественного положения и альбомный режим с поворотом на 270 градусов против часовой стрелки совершенно различны.
Поэтому, когда pageOrientation в app.json установлен как portrait, можно не вызывать setDeviceOrientation(deviceOrientation), поскольку естественное вертикальное направление большинства телефонов является ориентацией по умолчанию для сессии.
Когда pageOrientation в app.json установлен как landscape, необходимо вызвать setDeviceOrientation(deviceOrientation), чтобы зафиксировать ориентацию экрана как LandscapeLeft или LandscapeRight.