Известные проблемы и ограничения плагина Mega для мини-программ WeChat
Эта статья описывает известные проблемы и ограничения при использовании плагина Mega для мини-программ WeChat.
Известные проблемы WeChat
Подтверждённые недостатки текущей реализации xr-frame или VisionKit в WeChat. При возникновении приводят к сбою функций AR, разработчикам следует учитывать эти сценарии.
Аномалии обнаружения плоскостей в WeChat
В определённых ситуациях (например, при наличии больших белых стен в кадре, длительном закрытии камеры) система обнаружения плоскостей WeChat может перейти в аномальное состояние. В этом состоянии MegaTracker не сможет работать корректно.
Методы обработки описаны в Обработка ошибок трекера плоскостей AR.
Длительная инициализация Session
AR Session требует завершения инициализации системы обнаружения плоскостей WeChat перед своей собственной инициализацией. В некоторых случаях инициализация обнаружения плоскостей WeChat занимает значительное время.
Причина, по которой AR Session ожидает завершения инициализации ARTracker xr-frame, описана в Принцип работы MegaTracker на базе xr-frame.
- Справочник состояний: Документация по состояниям AR-трекера мини-программ WeChat.
- Пример прослушивания:
<xr-ar-tracker id="xrARTracker" mode="Plane" bind:ar-tracker-state="handleARTrackerState"></xr-ar-tracker>
handleARTrackerState({detail}) {
if (detail.value.state == xrFrameSystem.EARTrackerState.Detected) {
console.log('Plane is now detected by XR-Frame ARTracker.');
}
}
Мировые координаты узла (worldPosition) не обновляются немедленно в текущем кадре
В этом примере trs.worldPosition не обновляется своевременно:
public onTick(delta, data) {
const trs = this.el.getComponent(xrFrameSystem.Transform);
// WorldPosition узла ДО обновления
console.log(`World Position before update: ${trs.worldPosition.x}, ${trs.worldPosition.y}, ${trs.worldPosition.z}`);
// LocalPosition узла ДО обновления
console.log(`Local Position before update: ${trs.Position.x}, ${trs.Position.y}, ${trs.Position.z}`);
trs.position.x += 0.1;
trs.position.y += 0.1;
trs.position.z += 0.1;
// WorldPosition узла НЕ обновлён
console.log(`World Position after update: ${trs.worldPosition.x}, ${trs.worldPosition.y}, ${trs.worldPosition.z}`);
// LocalPosition узла обновлён
console.log(`Local Position after update: ${trs.Position.x}, ${trs.Position.y}, ${trs.Position.z}`);
}
При разработке рекомендуется использовать LocalTransform, то есть el.getComponent(xrFrameSystem.Transform).position и el.getComponent(xrFrameSystem.Transform).rotation.
Аномалии при смене ориентации экрана
Если в глобальной конфигурации мини-программы WeChat (app.json) в разделе window указано значение "auto":
При выходе из мини-программы в альбомной ориентации и последующем входе в портретной ориентации может возникнуть аномалия изображения AR.
Поэтому ни в коем случае не используйте "auto" в AR-приложениях для мини-программ.
Ограничения использования
Жёсткие требования для работы функций. При невыполнении функции недоступны, но этого можно избежать путём настройки конфигурации или среды.
Ограничения по моделям устройств
Устройства для запуска плагина Mega для мини-программ должны поддерживать как минимум интерфейс плоскостей WeChat VisionKit V1. Для достижения наилучших результатов рекомендуется использовать устройства, поддерживающие интерфейс плоскостей WeChat VisionKit V2.
Список поддерживаемых моделей: см. Список поддержки интерфейса плоскостей AR V2.
Быстрый способ проверки:
- Отсканируйте QR-код официального Sample мини-программы WeChat.

- В мини-программе перейдите в Интерфейсы > Визуальные возможности VisionKit > Горизонтальные плоскости AR-v2, чтобы быстро определить поддержку текущим устройством.
- Отсканируйте QR-код официального Sample мини-программы WeChat.
Если необходимо использовать сервис Mega на устройствах без поддержки VisionKit, обратитесь к лучшим практикам для сценариев навигации для использования продукта AR-навигации EasyAR "Вид+", который поддерживает почти все устройства.
Принудительная конфигурация PlaneMode
Из-за ограничений поддержки некоторых интерфейсов WeChat параметр planeMode должен быть установлен в значение 1.
<xr-scene ar-system="modes:Plane; planeMode: 1" bind:ready="handleReady">
Ограничения функциональности GPS
В настоящее время не поддерживается выравнивание Block по GPS.
В настоящее время не поддерживается размещение аннотационных данных с помощью GPS.