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