VHS

Обычно я не роюсь по помойкам. В этот раз сделал исключение — и экономический кризис тут ни при чём.

Возвращаясь вчера из клуба «Высоцкий» на Таганке, обнаружили в подъезде выброшенную коллекцию VHS кассет. Спокойно пройти мимо нельзя, поэтому, немного покопавшись, я взял «Назад в будущее, часть 2 и 3». Это классика кино.

Сегодня от этой кучи кассет уже ничего не осталось. Кто-то подсуетился.

back-to-the-future-doc-brown[1]

Дорога из жёлтого кирпича

Задумал написать программу для Android под условным названием «Дорога из жёлтого кирпича». Принцип прост: пользователь указывает место, в которое он хочет попасть, а на экране дополненной реальности рисуется пешеходный маршрут в виде дороги из жёлтого кирпича. В Москве, когда выходишь из метро и не понимаешь сразу, в какую сторону тебе идти, такая функция востребована.

Можно построить маршрут с помощью специализированных приложений для навигации, можно использовать компас для ориентации, а можно — «Дорогу из жёлтого кирпича».

Screenshot_2015-09-07-22-27-56

Google Play Services предоставили несколько способов выбора местоположения. Я попробовал Place Picker, когда на карте тыкаешь в точку. Но мне показалось, что гораздо удобнее и проще будет обыкновенное поле для ввода с автоподсказками от Google — Place Autocomplete. Пользователь вводит пару букв, а Google уже знает, куда ты хочешь попасть, и радостно выдаёт широту и долготу.

Построение пешеходного маршрута также не составляет проблем. У Google для этого есть JSON API с достаточно приличной квотой на количество запросов.

Дело осталось за малым — за движком дополненной реальности. Первое, что нашлось — Wikitude SDK. Есть бесплатная пробная версия с водяными знаками, при оплате €590 можно использовать ограниченную функциональность без водяных знаков, а при оплате €990 — всю функциональность.

Меня водяные знаки не смущают, поэтому это проблемой не стало. Всё завелось практически мгновенно.

Особенность Wikitude SDK — сам движок в нативном коде (libarchitect.so), а интерфейс к нему через JavaScript и WebView для кроссплатформенности.

Проблемой стала стабильность работы. При сворачивании приложения случаются исключения в нативном коде.

F/libc    (16599): Fatal signal 11 (SIGSEGV) at 0x6c436e6f (code=1), thread 17629 (Thread-1211)

Эта же неприятность иногда происходит и при повороте экрана. Краши плавающие, редкие, но оставляющие после себя неприятное впечатление. И, естественно, отбивают любое желание платить за этот движок. Кроме того, при использовании 3D графики частенько слетают текстуры.

Кстати, пару слов о том, как рисуется «дорога». Wikitude SDK официально не поддерживает отрисовку линий, соединяющих две точки маршрута. Поэтому приходится ставить «кирпичи» таким образом, чтобы они заполняли все пространство между точками маршрута. Отсюда и название приложения — «Дорога из жёлтого кирпича». Для расчёта местоположения этих кирпичей активно используются тригонометрические функции.

В целом, я не доволен результатом: ожидал от лидера рынка (Wikitude) большей стабильности. Была мысль самому сделать простенький движок = Android API для работы с камерой + OpenGL ES для работы с 3D графикой. Но времени и желания на это не нашлось.

Посмотреть то, что получилось, можно здесь.