Как стать автором
Обновить

Трёхмерный мир на плоском экране: как отобразить банковскую 3D-карту в приложении на Android

Время на прочтение 8 мин
Количество просмотров 7.3K
Всего голосов 3: ↑2 и ↓1 +1
Комментарии 10

Комментарии 10

Интересно было посмотреть, как это происходит на Android. Спасибо.

Плюс у iOS не только в широких возможностях ide, но и в том, что там полноценно можно бахнуть PBR материалы. От этого картинка только лучше будет.

Кстати, возможно проглядел — а в какой момент карту из горизонтального в вертикальное положение перевернули? Читаемость упала сильно (хотя если заказчику нужна свистелка, то тут без разницы, конечно).
Поворот задаётся через кватернион, что немного удобнее в отличие от углов Эйлера, при использовании которых может быть 'gimbal lock'. В статье не весь код, только основные проблемы и их решение. Полностью рабочий пример можно посмотреть по ссылке на Github.

>Начинаем искать библиотеку.

А можно без поиска библиотеки, просто накидать такую же сотню-две строчек на чистом GLES со стандартным GLSurfaceView? Вам не нужен AR чтобы выводить 3D объекты. Да вам даже OBJ файлы тут не нужны.

То что описано в статье -- очень неоптимально. В конце концов приложение просто не установится на телефон клиента, потому что приложение занимает сотню-два мегабайта, такова цена за очередной "фреймворк" и "давайте поищем библиотеку".

В случае ARCore так же высок шанс не получить картинку вовсе, потому что в нём, насколько мне известно, жёсткий белый список для устройств, которые поддерживают AR и для его задач это оправдано. Но не для ваших.

Собственно, вы сами уже заметили что ARCore нужен Android >7 и поддерживаемое устройство. Для того, что отобразить затекстуренный с обоих сторон прямоугольник.

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

Статья не про дубовость. Человек разобрался в ARCore. Однако не удосужился всё же проверить как в принципе работает 3D на любом Android смартфоне и что там ничего сложного нет.

Мы выбрали ARCore, потому что это решение хорошо показало себя в приложении Revolut и выглядело достаточно простым в использовании. Об этом мы также говорим в статье.
Всё верно, в интеренете есть много решений, но мы не нашли готовые компоненты под наши требования. Будем рады, если поделитесь одним из таких примеров.
В статье мы заранее ответили на все ваши вопросы. Решили остановиться на библиотеке, потому что занимаемся разработкой бизнес-приложений, а не геймдевом. Применение чистого OpenGL будет занимать много времени каждого разработчика, работающего над проектом.

Также выбранное решение не перегружает телефон клиента. Для установки из Google Play нужно загрузить 15 Мб. Мы считаем, что это вполне приемлемо для данного приложения. Оно легко устанавливается, и всё хорошо работает. Перед релизом мы тщательно всё тестируем.
OpenGL не только для геймдева, а так же он достаточно прост. Это вы ещё Vulkan не видели :)

Меня конечно уже поправили, что с GLSurfaceView не всё так просто, но тем не менее и геймдев, и время разработчиков выглядит как отмазка, потому что другой человек с Medium вам так сказал.
Для решения задачи мы ищем баланс между временем разработки, результатом и сложностью дальнейшей поддержки продукта. В данном случае это банковское приложение, и 3D-карта — не основной его функционал.

Возможно, вы правы, что OpenGL упростил бы процесс. Мы рассматривали этот вариант, но обнаружили, что есть ряд сложностей с GLSurfaceView при использовании в RecyclerView. Поэтому нам было интересно попробовать готовое решение.

ARCore — не идеальный выбор, о чём и говорится в статье, но мы проверили библиотеку и решили поделиться своим опытом. Надеемся, было полезно!
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории