ARToolKit

ARToolKit является библиотекой компьютерного зрения, которая обеспечивает функциональные возможности отслеживания, необходимые для создания приложений дополненной реальности.

ARToolKit плагин для Unity

ARToolKit плагин для Unity можно скачать на странице https://artoolkit.org/download-artoolkit-sdk#unity.

Более актуальную и стабильную версию плагина для Unity можно скачать на GitHub https://github.com/artoolkit/arunity5.

После скачивания пакета откроем Unity и создадим новый 3D проект.

В меню Assets выберем Import Package/Custom Package, откроем и импортируем скачанный пакет.



В сцене Unity проекта удалим все объекты и с помощью меню Create/Create Empty создадим объект GameObject, который назовем ARToolKit.

Этот объект будет содержать два AR конфигурационных объекта ARController и ARMarker. Поэтому перетащим их из папки Scripts в объект ARToolKit.



ARController скрипт отвечает за видео-фон и за создание и управление AR отслеживанием.

ARMarker скрипт обеспечивает маркер отслеживания, к которому прикрепляется 3D модель. В поле Marker tag введем идентификатор маркера.



По умолчанию тип маркера Square, и изображение маркера установлено из папки Resources/ardata/markers.



Для использования этого маркера, изображение нужно распечатать из каталога ARUnity-tools\doc\patterns дополнительного набора инструментов Additional Unity Tools, который можно скачать на странице https://artoolkit.org/download-artoolkit-sdk.

Другой тип маркера это Square Barcode. Square Barcode это изображение, имеющее шаблон, предопределенный для распознавания библиотекой ARToolKit, в виде матрицы из черных и белых квадратов. Использование данного типа маркера ускоряет его распознавание камерой и обеспечивает надежность его идентификации.

Для распечатки маркеры Square Barcode находятся в каталоге ARUnity-tools\doc\patterns дополнительного набора инструментов Additional Unity Tools.

Для использования маркера Square Barcode в свойствах ARController скрипта в разделе Square tracking options в поле Pattern detection mode выберем AR_MATRIX_CODE_DETECTION, а в поле Matrix Code Type выберем тип набора маркеров.



В свойствах ARMarker скрипта в поле Type выберем Square Barcode, в поле Barcode ID введем номер маркера из набора.

Следующий тип маркера это Multimarker, состоящий из множества маркеров Square Barcode для прикрепления к одному 3D объекту. Для распечатки маркеры Multimarker находятся в каталоге ARUnity-tools\doc\patterns дополнительного набора инструментов Additional Unity Tools. Преимущество использования Multimarker состоит в повышенной устойчивости к окклюзии, даже когда один маркер затемняется, другой маркер все равно виден, а также в эффективном покрытии большего оптического угла, что приводит к уменьшению ошибок.

Для использования маркера Multimarker в свойствах ARController скрипта в разделе Square tracking options в поле Pattern detection mode выберем AR_MATRIX_CODE_DETECTION, в свойствах ARMarker скрипта в поле Type выберем Multimarker, в поле Multimarker config. введем имя конфигурационного файла из каталога StreamingAssets.



Следующий тип маркера это NFT маркер. Функция Natural Feature Tracking (NFT) позволяет распознавать и отслеживать обычное изображение, которое не содержит предопределенные маркеры.

Для распечатки примеры NFT маркеров находятся в каталоге ARUnity-tools\doc\Marker images дополнительного набора инструментов Additional Unity Tools.

Для использования NFT маркера в свойствах ARMarker скрипта в поле Type выберем NFT, в поле NFT dataset name введем имя набора данных из каталога StreamingAssets.



Примеры сцен, созданных с использованием различных типов маркеров, можно посмотреть в каталоге Example Scenes.

Создадим свой маркер, к которому будет прикрепляться 3D модель.

Для этого сфотографируем и сохраним jpeg изображение предмета, который будет служить NFT маркером.

Переместим изображение в папку bin каталога дополнительного набора инструментов Additional Unity Tools, в которой находится инструмент genTexData. exe генерации NFT набора данных

В командной строке наберем:

genTexData. exe image.jpeg

Далее в процессе генерации нужно будет ввести уровень извлечения характерных точек изображения, а также диапазон разрешения изображения, в котором характерные точки изображения будут извлекаться при приближении или удалении камеры.

После окончания генерации NFT набора мы получим три файла. iset,.fset и. fset3, которые перетащим в каталог StreamingAssets Unity проекта.

Далее в свойствах ARMarker скрипта в поле Type выберем NFT, в поле NFT dataset name введем имя полученного NFT набора из каталога StreamingAssets.

Для дальнейшего формирования сцены с помощью меню Create/Create Empty создадим объект GameObject, который назовем Scene root. Перетащим из папки Scripts в объект Scene root скрипт AROrigin, представляющий центр ARToolkit мира и являющийся корневым объектом сцены.

В свойствах объекта Scene root в окне Inspector в поле Layer выберем 9 слой сцены.





При этом в свойствах ARController скрипта в разделе Video Options в поле Layer должен быть выбран 8 слой сцены, а также выбрана опция Allow non-RGB video.



С помощью меню Create/Create Empty Child создадим объект GameObject, дочерний для объекта Scene root, который назовем Marker. Перетащим из папки Scripts в объект Marker скрипт ARTrackedObject, представляющий маркер. Его дочерние объекты будут автоматически прикрепляться к этому маркеру.

В свойствах скрипта ARTrackedObject в поле Marker tag введем тот же идентификатор, что и в поле Marker tag свойствах скрипта ARMarker.



К объекту Marker прикрепим дочерний объект – 3D модель.



Нажмем правой кнопкой мышки на объекте Scene root и прикрепим к нему дочерний объект Camera.



Перетащим из папки Scripts в объект Camera скрипт ARCamera, связывающий Unity камеру с AR контентом.

В свойствах объекта Camera в поле Culling Mask выберем 9 слой сцены.



Нажмем кнопку проигрывания сцены и поднесем к камере маркер – должен появиться 3D объект.

Для сборки Android приложения в меню File выберем Build Settings, кнопкой Add Open Scenes добавим нашу сцену, выберем платформу Android и нажмем кнопку Player Settings.

В поле Company Name введем имя пакета, в поле Product Name введем имя приложения, в разделе Other Settings в поле Bundle Identifier введем com. [Company Name]. [Product Name]. В других разделах введем остальные настройки приложения.

В каталоге Plugins/Android откроем файл манифеста AndroidManifest. xml и в атрибуте package введем com. [Company Name]. [Product Name]. После этого нажмем Build и соберем APK файл Android приложения.

ARToolKit для Android

Скачаем и установим:

Java Development Kit 1.7+

Android Studio IDE 1.5.x+

Android SDK

Git

При установке Git в окне Adjusting your PATH environment выберем Use Git from Git Bash only, в окне Configuring the line ending conversions выберем Checkout Windows-style, commit Unix-style line ends.

Для установки Android NDK откроем Android Studio и в меню File откроем Project Structure.

Воспользуемся ссылкой Download Android NDK.



В результате в каталоге Android SDK будет создана папка ndk-bundle, содержащая Android NDK.

Установим переменные среды.

ANDROID_HOME = …\android-sdks

ANDROID_NDK_ROOT = %ANDROID_HOME%\ndk-bundle

NDK = %ANDROID_HOME%\ndk-bundle

;%NDK%\ добавить в Path

Из GitHub скачаем и распакуем artoolkit5 и в папке artoolkit5\android запустим Git скрипт build.sh и build_native_examples.sh.

Возможно, в скрипте нужно будет вывести переменную $WinsVerNum и поменять ее значение в коде $WinsVerNum = «6.3».

else #Checking for Windows in a non-cygwin dependent way.

WinsOS=

if [[$OS]]; then

WinsVerNum=$ {OS##*-}

echo $WinsVerNum

if [[$WinsVerNum = «10.0» || $WinsVerNum = «6.3»]]; then

if [[$WinsVerNum = «10.0»]]; then

WinsOS=«Wins10»

else

WinsOS=«Wins8.1»

fi

echo Building on Microsoft $ {WinsOS} Desktop \ ($ {ARCH} \)

export HOST_OS=«windows»

NDK_BUILD_SCRIPT_FILE_EXT=".cmd»

CPUS=`/usr/bin/nproc`

fi

fi

fi


if [[! $CPUS]]; then


echo **Development platform not supported, exiting script**

read -rsp $«Press enter to continue…\n’

exit 1

В результате будет сгенерирована папка libs с файлами libARWrapper.so и libc++_shared.so для различных CPU архитектур в папке artoolkit5\android, а также в проектах каталога artoolkit5\AndroidStudioProjects.

Откроем Android Studio и откроем проект ARSimpleProj каталога AndroidStudioProjects.

В меню File откроем Project Structure и увидим, что модуль аRSimple имеет зависимость от модуля аRBaseLib, представленного проектом ARBaseLibProj. Если этой зависимости нет, ее нужно добавить с помощью меню File/Project Structure.

Библиотека ARBaseLib предоставляет Java классы ARToolKit, ARActivity и ARRenderer для создания ARToolKit приложения и обеспечивает с помощью JNI связь с нативной C++ библиотекой ARWrapper, представленной файлами libARWrapper.so и libc++_shared.so, которая управляет жизненным циклом ARToolkit приложения, включая инициализацию, добавление маркеров и др.

При создании своего ARToolKit приложения, в каталог src\main проекта нужно включить папку libs с файлами libARWrapper.so и libc++_shared.so для различных CPU архитектур, а также добавить зависимость от модуля аRBaseLib с помощью меню File/Project Structure/Add a new module/Import. JAR/.AAR Package/AndroidStuiodProjects/ARBaseLibProj/arBaseLib/build/outputs/aar/ ARBaseLib. aar.

Документация API библиотеки ARBaseLib находится в папке AndroidStudioProjects\ARBaseLibProj\doc.

При запуске приложения ARSimple, при наведении камеры устройства на маркер, будет появляться 3D объект – куб.

Из предыдущего раздела ARToolKit плагин для Unity возьмем изображение gibraltar.jpg и инструмент genTexData. exe и создадим набор данных маркера.

genTexData. exe gibraltar.jpg

Поместим файлы. iset,.fset и. fset3 в папку AndroidStudioProjects\ARSimpleProj\aRSimple\src\main\assets\Data.

В классе SimpleRenderer изменим код добавления маркера.

@Override

public boolean configureARScene () {


markerID = ARToolKit.getInstance().addMarker («nft; Data/gibraltar»);

if (markerID <0) return false;


return true;

}

В файле модуля build.gradle увеличим значение versionCode для обновления кэша.

Теперь при наведении камеры устройства на простое изображение, будет появляться 3D объект – куб.

По умолчанию, свойства камеры устройства содержатся в файле camera_para. dat папки src\main\assets\Data проекта ARToolKit приложения. Параметры камеры устройства по умолчанию являются достаточными для базового отслеживания для широкого спектра различных камер.

Загрузка...