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

AR Clip SDK

Делайте AR-проекты в Unity, которые открываются в AR Clip как App Clip. Ваш WebGL-контент подгружается по сети, а локализацией занимаются ARKit и AR Clip VPS.

Что нужно​

Проверяйте на телефоне

В Unity Editor большинство API 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 на этом GameObject. Задайте Clear Flags = Solid Color и фон RGBA(0,0,0,0).
  4. Необязательно: чтобы имитировать нативные колбэки в редакторе, добавьте ARLibTester (из Samples).

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

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 — VPS готов к работе.
  • ARLibController.VPSPositionUpdated — новая поза после локализации.
  • ARLibController.OnVPSErrorHappened — ошибка, в виде строки.

Чтобы настроить, как часто отправляются запросы в конкретной локации, используйте SetSendPhotoDelay, SetGpsAccuracyBarrier и SetFirstRequestDelay.

Отслеживание изображений и поверхностей​

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

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

  1. Выберите шаблон WebGL. В Project Settings → Player → WebGL → Resolution and Presentation выберите шаблон, который вы скопировали из пакета.
  2. Соберите проект. File → Build Settings → WebGL → Build.
  3. Упакуйте в zip. Сожмите сборку так, чтобы index.html лежал в корне архива.
  4. Загрузите. Загрузите архив через загрузчик архивов.
  5. Проверьте. Отсканируйте полученный QR-код в приложении AR Clip для iOS.

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

  • В WebGL нет изображения с камеры. Проверьте, что TransparentBackground.jslib лежит в Assets/Plugins, а камера рендеринга и назначена, и выключена.
  • В режиме Play в редакторе нет AR-событий. Так и должно быть. Используйте ARLibTester или соберите под WebGL, чтобы получить настоящие данные.
  • Ошибки о дублирующихся символах. Убедитесь, что удалили старую папку ARLib перед импортом пакета.