Реализация AR-превью NFT-арта в мобильном приложении
NFT-коллекционер купил 3D-анимированный арт. Смотреть его в браузере в 2D неинтересно. AR-функция в мобильном приложении позволяет «повесить» NFT на стену в своей комнате или разместить 3D-скульптуру на столе — и увидеть, как это выглядит в реальном пространстве. Это добавляет ценность к NFT как физическому объекту коллекционирования.
Типы NFT-контента и AR-рендер
2D NFT (JPEG/PNG/GIF). Простейший случай: создаём виртуальную рамку (SCNPlane с материалом), текстуру загружаем с IPFS или HTTP URI из метаданных токена. Размещаем на вертикальную поверхность через ARPlaneDetection.vertical. Анимированный GIF — декодируем покадрово через CGImageSourceCreateWithData, обновляем текстуру по таймеру.
3D NFT (glTF/GLB). Всё больше проектов выпускают 3D-скульптуры. На iOS загружаем через GLTFSceneKit или конвертируем в USDZ на лету через ModelIO → MDLAsset → экспорт USDZ. На Android — SceneView (Filament-based) из Sceneform 2.0 нативно поддерживает glTF.
Видео NFT (MP4/WebM). SCNMaterialProperty принимает AVPlayerItem как содержимое текстуры — NFT-видео воспроизводится прямо на AR-поверхности в реальном времени. Петля, звук опционально.
Получение контента по метаданным NFT
Стандарт ERC-721/ERC-1155 метаданных содержит image и опционально animation_url. Шаги:
- По
tokenIdиcontractAddressзапрашиваемtokenURIчерез JSON-RPC (eth_call) или через Alchemy/Moralis/OpenSea API - Получаем JSON метаданных с
image,animation_url,properties - Если URI начинается с
ipfs://— конвертируем через публичный gateway (https://gateway.pinata.cloud/ipfs/...) или собственный IPFS-ноду - Загружаем медиафайл, кешируем локально
IPFS-загрузка может быть медленной на публичных шлюзах. Рекомендуем кешировать агрессивно: при первом просмотре пишем в URLCache с большим diskCapacity (500 MB+).
AR placement для арт-объектов
Wall hanging (2D арт). Сканируем вертикальную поверхность через ARPlaneDetection.vertical. Проблема: ARKit медленнее обнаруживает вертикальные плоскости чем горизонтальные, особенно на гладких стенах. Добавляем manual placement mode: drag по экрану для позиционирования, pinch для масштаба, rotation gesture для угла.
3D скульптура на поверхности. ARPlaneDetection.horizontal + raycast из центра экрана → помещаем объект на обнаруженную плоскость. ARRaycastQuery вместо устаревшего hitTest. Снапинг к плоскости при перемещении: отслеживаем ARPlaneAnchor updates, прибиваем Y-координату объекта к плоскости.
Фото для соцсетей. Ключевая функция для NFT-аудитории. Снимаем ARView через ARView.snapshot(saveToPhotoLibrary:) (RealityKit) или SCNView.snapshot() (SceneKit). Добавляем UI-оверлей с именем NFT и коллекцией поверх снимка перед сохранением — через UIGraphicsImageRenderer.
Права и watermark
Некоторые NFT-проекты ограничивают коммерческое использование. В AR-контексте важно не нарушать IP-права при создании производного контента (скриншоты с логотипом приложения не считаются производным произведением, но лучше проконсультироваться с юристом для конкретного проекта).
Сроки: AR-превью для 2D/3D NFT в существующем Web3-приложении — 3–5 недель. Полноценный AR-галерейный опыт с кастомными рамками, 3D скульптурами и шерингом — 6–10 недель. Стоимость рассчитывается индивидуально.







