Перейти к основному содержимому

AR Clip SDK

Обзор

AR Clip позволяет запускать AR-опыты через App Clip, стримая WebGL-контент и используя ARKit вместе с движком WebAR³ VPS для локализации. Воспользуйтесь привычным порядком: убедитесь в выполнении требований, подключите пакет, подготовьте сцену, включите VPS и выгрузите WebGL-сборку.

Требования

Важно: в редакторе Unity большинство вызовов AR Clip обёрнуты в Application.isEditor. Для реального поведения выполните сборку WebGL и протестируйте её через мобильное приложение AR Clip.

Установка пакета

  1. Откройте Window → Package Manager.
  2. Нажмите + → Add package from Git URL….
  3. Вставьте https://github.com/WebAR-Studio/arclip_sdk.git и подтвердите.

Перед импортом удалите старую папку Assets/ARLib, иначе появятся дублирующиеся типы:

error CS0433: The type 'ARLibTester' exists in both 'ARLib' and 'Assembly-CSharp'

Импорт примеров

В Package Manager → AR Clip → Samples:

  • Импортируйте WebGLTemplates и скопируйте полученную папку в Assets/, чтобы выбрать шаблон в Project Settings → Player → WebGL Template.
  • Импортируйте TransparentBackground и переместите TransparentBackground.jslib в Assets/Plugins для прозрачного рендера WebGL.

Настройка сцены

  1. Создайте пустой GameObject ARClipController.
  2. Добавьте ARLibController и привяжите камеру к полю renderCamera.
  3. Отключите компонент Camera, выставьте Clear Flags = Solid Color и цвет RGBA(0,0,0,0).
  4. (Опционально) подключите ARLibTester из примеров для имитации событий в редакторе.

Минимальный скрипт

using UnityEngine;
using ARLib;

public class ARClipBootstrap : MonoBehaviour
{
[SerializeField] private Camera renderCamera;

private void OnEnable()
{
ARLibController.Initialized += HandleInitialized;
ARLibController.VPSPositionUpdated += HandleVpsPose;
}

private void OnDisable()
{
ARLibController.Initialized -= HandleInitialized;
ARLibController.VPSPositionUpdated -= HandleVpsPose;
}

private void Start()
{
ARLibController.SetRenderCamera(renderCamera);
ARLibController.Initialize();
}

private void HandleInitialized()
{
ARLibController.EnableCamera();
ARLibController.EnableAR();
ARLibController.EnableSurfaceTracking("horizontal");
}

private void HandleVpsPose(VPSPoseData pose)
{
Debug.Log($"VPS pose: {pose.Position}");
}
}

Запуск VPS

Настройте VPS после инициализации и перед запуском локализации:

var settings = new VPSSettings
{
apiKey = "your-api-key",
locationIds = new[] { "your-location-id" }
};

ARLibController.SetupVPS(settings);
ARLibController.StartVPS();

Отслеживайте события:

  • ARLibController.VPSInitialized — подсистема готова.
  • ARLibController.VPSPositionUpdated — поступают позы локализации.
  • ARLibController.OnVPSErrorHappened — текст ошибки.

Регулируйте частоту запросов методами вроде SetSendPhotoDelay, SetGpsAccuracyBarrier и SetFirstRequestDelay.

Модули трекинга

  • Добавляйте изображения через AddTrackingImage до включения трекинга. Ждите TrackedImagesArrayUpdate, чтобы убедиться в загрузке.
  • Запускайте поиск плоскостей EnableSurfaceTracking("horizontal" | "vertical" | "both"). Результаты приходят в SurfaceTrackingUpdated.

Сборка и загрузка

  1. Выберите шаблон: в Project Settings → Player → WebGL → Resolution and Presentation укажите импортированный шаблон.
  2. Соберите проект: File → Build Settings → WebGL → Build.
  3. Заархивируйте: упакуйте содержимое сборки так, чтобы index.html лежал в корне архива.
  4. Загрузите: отправьте архив через https://cdn.mobile.web-ar.studio/clip/pages/zip_uploader.html.
  5. Протестируйте: отсканируйте QR-код в приложении AR Clip (https://apps.apple.com/app/ar-clip/id6742754238).

Решение проблем

  • Нет видеопотока: убедитесь, что TransparentBackground.jslib находится в Assets/Plugins, а камера назначена и отключена.
  • В редакторе нет событий AR: это ожидаемо — используйте ARLibTester или билд WebGL.
  • Ошибка дублирования типов: удалите старую папку ARLib перед импортом пакета.