14 августа 2017 г.

Распознавание кота через OpenCV в браузере

Сделал на коленке демку с распознаванием кота https://rnixik.github.io/facedetectdemo/cats/

По сути это базовый пример из OpenCV http://docs.opencv.org/2.4/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html с использованием данных из https://github.com/timatooth/catscanface/blob/master/haarcascade_frontalcatface_extended.xml
и маски Бэтмена.
Всё это собрано с помощью Emscripten на основе https://github.com/ucisysarch/opencvjs

  Исходники пока не выкладывал. Чуть позже.

Плагин с паучьей навигацией опубликован в Unreal Engine 4 Marketplace

Я занимался плагином для навигации паука в мае. Подал заявку в Epic Games. Но до релиза дошло только 12 августа: https://www.unrealengine.com/marketplace/spider-navigation
Пока отзывы отличные. Посмотрим, что они скажут, когда я не стану обновлять плагин для новых версий движка. Хотя, на самом деле, я очень надеюсь, что Epic Games не скоро поломают совместимость.

22 апреля 2017 г.

Плагин паучьей навигации для Unreal Engine 4

Долго работал над способом создания навигации для паука в Unreal Engine 4. Дело в том, что стандартная система навигации работает только на горизонтальных поверхностях (UE 4.15). Но пауки должны ползать и по стенам и по потолку. Результатом работы стал плагин со своим способом построения сетки навигации. Для перемещения по сетки был реализован алгоритм поиска пути A*. Подробнее можно посмотреть на странице плагина: https://github.com/rnixik/spider-navigation-plugin


12 марта 2016 г.

Заметка о 3D-анимации в вебе с использованием three.js

Короткий журнал о том, что я узнал в процессе изучения three.js и попытки запустить в нём анимацию мешей. Версия three.js r74 и r74-dev, версия blender 2.76

 Почти все загрузчики разных форматов находятся в examples/js/loaders. Встроенным является ObjectLoader (загрузчик одного меша) и JSONLoader (загрузчик сцены).

Формат OBJ для мешей сопровождается файлом с расширением mtl, в котором описаны параметры материалов. Хорошая статья о параметрах материалов в mtl есть на англоязычной вике о obj.

Three.js не парсит значения всех текстурных карт из mtl: apha-map, displacement-map и ещё какие-то. Зато легко можно дописать это в 5 строк на каждый материал в исходники MTLLoader.

Формат OBJ не поддерживает анимацию


15 ноября 2015 г.

Получение данных с камеры телефона на Unreal Engine 4 + Android

Задача: получить и обработать данные с камеры телефона на Android в рамках проекта на Unreal Engine 4.

Необходимость в этом возникла при попытке использовать камеру на телефоне для определения местоположение телефона относительно помещения, в котором его используют. Это касается и AR- и VR-игр.

Как обычно, я запишу, что я делал для этого, чтобы потом вспомнить. Будет небольшая каша из-за того, что у меня используется моя библиотека markers detector, которая вам, скорее всего, не нужна. Но, надеюсь, вы поймёте ход моих мыслей и сможете увидеть всю картину целиком. Учитывая необходимость править файлы из директории игрового движка, использовать Java, NDK и C++, я бы не назвал весь этот подход очевидным.

28 августа 2015 г.

Как подключить MarkersDetector.dll в проект Unreal Engine 4

В этом посте описана инструкция, как можно подключить мою библиотеку MarkersDetector.dll, которая использует несколько вызовов библиотеки OpenCV. Мне пришлось собрать свою dll, а не использовать OpenCV напрямую, из-за особенности сборщика мусора в UE4 - он крашился при вызове некоторых нужных методов, например, cv::findContours(). В MarkersDetector.dll упакован необходимый минимум, чтобы получать в реальном времени координаты и вектор поворота веб-камеры относительно статичных маркеров.

20 августа 2015 г.

Некоторые проблемы и их решения при работе с Unreal Engine 4, Visual Studio и OpenCV

Здесь я запишу, чтобы не забыть и, может быть, кому-нибудь помочь, как я решал те или иные проблемы, когда работал с UE 4.8.3 и Visual Studio 2013, подключая OpenCV.
Пусть вещи и тривиальные для тех, кто знает зачем нужны заголовочные файлы и что такое .lib-файлы и как работает LINK, но описывать я буду в формате "Ошибка - Решение", так как так проще искать решение.
Осторожно! Советы могут быть вредными, так как я новичок в C++ и UE4.