Русский
Русский
English
Статистика
Реклама

Ar

Как мы новую технологию AR очков придумывали (hardware)

05.02.2021 20:16:55 | Автор: admin

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


Введение


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



Рис. 1: верхний рисунок глаз человека может фокусироваться на объекты, удаленные на расстояние больше 15 см, нижний рисунок для создания изображения в системе дополненной реальности необходимо использование прозрачного оптического элемента, который искусственно отдалит изображение на комфортное для человека расстояние.


Кратко, если нет времени читать предыдущий рекомендованный пост


Глаз человека очень сложный биологический сенсор. Считается, что порядка 80% всей информации об окружающем мире человек получает через глаза. Эволюционно сложилось так, что человеческий глаз может фокусироваться на предметы, которые находятся на удалении от 15 см до (бесконечности) (рис.1 (верхний)).


Такая особенность хороша для повседневной жизни в реальном мире, но является трудно преодолимой проблемой при разработке систем AR. В системе AR очков недостаточно просто отобразить изображение на дисплее или экране по средствам включения или выключения пикселя/мини-светодиода. Если в AR очки установить обычный дисплей, то он будет располагаться на расстоянии 2 3 см от глаз, куда человеческое зрение не в состоянии сфокусироваться. Чтобы решить эту проблему, необходимо пропустить изображение через оптическую систему и сделать так, чтобы глазу казалось, что изображение удалено на комфортное для зрения расстояние (рис. 1(нижний)). Вся сложность заключается в том, как изготовить такую оптическую систему, да так, чтобы эта система была прозрачной (для наблюдения реального окружающего мира), малой по размеру (как обычные очки), выдавала изображение высокого разрешения (конкурентоспособное в современном мире дисплеев), отображала изображение при различной ориентации глаза (глаз постоянно двигается и постоянно перемещается его оптическая ось) и т.д.


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


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


Мини-предыстория


Все началось с университетской научной деятельности. Мы занимались изготовлением больших наноструктурированных поверхностей методом лазерной интерференционной литографии. Итоговые поверхности представляли собой протравленные по маске фоторезиста нанорешётки на поверхности кремния или стекла с характерным периодом 400 нм 5 мкм.
На одном из лит. обзоров попалась статья про использование мини дифракционных решеток для создания 3D дисплея (хотя это слишком громкое название для такого рода устройств). В работе предлагалось под каждым пикселем LCD дисплея устанавливать разно-ориентированные мини дифракционные решётки (рис. 2). Такая конструкция позволяет пикселю светить только в фиксированном направлении. А если правильно подобрать направления свечения всех пикселей, то можно добиться того, что каждый глаз будет видеть свое изображение, что в свою очередь приводит к появлению стереоэффекта, ну или как авторы называют это в своей работе 3D дисплею.



Рис. 2: a сканирующая электронная микроскопия одной дифракционной решётки, b один воксель (пиксель в 3D изображении) состоит из нескольких разноориентрованных решёток, с полноволновое моделирование диаграммы направленности от 64-лучевой подсветки, d поперечный срез диаграммы по пунктирной линии.


Не будем вдаваться в детали чужой технологии. Все подробности можно прочитать по ссылке: David Fattal. Скажу только, что на основе данной технологии был разработан смартфон RED Hydrogen One c 3D дисплеем (см. анимацию).



Анимация: Работа дисплея смартфон RED Hydrogen One со стерео/3D дисплеем.


Первоначально была идея использовать подобные решетки для создания AR очков. Предполагалось, что если спроектировать систему так, чтобы все решетки перенаправляли свет пикселей в одну точку, совпадающую с центром зрачка глаза наблюдателя, то можно добиться построения необходимого изображения на сетчатке. Такой принцип работы схож с технологией Virtual Retinal Display (VRD), использующейся в очках дополненной реальности North Focals. Однако использовать отдельные решетки для фокусировки не самый оптимальный и очень затратный подход. Гораздо лучше использовать голографические линзы, которые значительно проще в изготовлении и обладают теми же оптическими свойствами, что и решётки. Так появилась технология дополненной реальности на основе голографического оптического волновода.


Голографический оптический волновод



Рис.3: верхний рисунок объемный вид работы голографического оптического волновода, нижний рисунок сечение голографического оптического волновода с трассировкой лучей подсветки параллельным пучком.


Основным элементом технологии является голографический оптический волновод структура, состоящая из нескольких слоев различного назначения. Основной слой это планарный оптический волновод (1. Planar waveguide), изготовленный из стекла. При изготовлении одна из граней этого волновода полируется под таким углом, чтобы можно было завести параллельный пучок в волновод и добиться распространения излучения по волноводу по принципу полного внутреннего отражения. Тут стоит отметить, что стекло лучше брать оптически чистое, чтобы достичь распространения излучения по волноводу с наименьшими потерями. Излучение, заводимое в волновод, представляет собой расширенный параллельный лазерный пучок с фиксированной поляризацией (4. backlight). На поверхность планарного волновода укладывается голографическая пленка с записанным в объеме оптическим элементом (линзой) (2. HOE (lens)). Лазерный пучок, распространяющийся по такой структуре, частично высвечивается из-за интерференционных особенностей голографической пленки. Высветившееся излучение представляет собой фокусирующийся пучок фиксированной поляризации (на рис. 3(нижний) показано красными стрелками между слоями 2 и 3), который далее может быть модулирован системой из ЖК-матрицы и поляризационного фильтра (3. LCD matrix). При этом систему матрица + поляризационный фильтр можно настроить так, что активные пиксели (на которые подан управляющий сигнал) либо перекрывают пучок, либо наоборот позволяют оставить его светящимся (такое поведение достигается за счет правильной ориентации поляризационного фильтра по отношению к поляризации высвечивающегося пучка). Высветившийся и промодулированный изображением свет фокусируется в центре зрачка глаза наблюдателя и далее проецируется на задней стороне сетчатки (6. retina). Использование метода фокусирования лазерного излучения в центре зрачка позволяет избежать влияния оптической системы глаза (хрусталика, стекловидного тела и т.д.) на формирование изображения. Поскольку вся схема состоит из оптически прозрачных или частично прозрачных слоев, то через всю систему можно наблюдать окружающий мир (5. external objects) без помех.


К отличительным техническим преимуществам такой схемы по сравнению с другими AR технологиями (MagicLeap, Hololens, North Focals, ) можно отнести:


  • Максимальный FOV сравнимый с полем зрения глаза человека (120)
  • Высокая компактность, обусловленная расположением активного дисплея (ЖК матрицы) и просмотровой области в одном месте. Потенциально предлагаемая технология может позволить изготавливать очки в форм-факторе обычных очков для коррекции зрения.
  • Высокое разрешение генерируемого изображения. Поскольку изображение генерируется не на отдельном мини-дисплее (как это делается у Magic Leap или Hololens) вне просмотровой области, а прямо на очковой линзе.
    Прочие технические параметры не отличаются какими-то выдающимися характеристиками и являются стандартными для технологий AR.

Изготовление голографического оптического элемента (HOE)


Перед непосредственной сборкой всего устройства, была проведена работа по записи необходимых оптических элементов (линз) в объеме голографической пленки.


Более подробно о том, что такое HOE и где они используются, можно прочитать по ссылке. Существует много материалов, которые используются в голографии и которые рассматривались нами: фоторезисты, материалы на основе галогенидов серебра, фотополимерные пленки. Мы решили особо не заморачиваться с процессом отработки нанесения фоторезиста и всеми техническими тонкостями химии фоточувствительных веществ и взяли уже готовую голографическую пленку Covestro Bayfol HX200, которая обладает дополнительным клеящимся слоем, что значительно упрощает запись и перенесение пленки на планарный оптический волновод. Спектральная чувствительность этой пленки является наиболее подходящей для наших задач.



Рис. 4: голографическая пленка Bayfol HX200, вставка спектральная чувствительность пленки ссылка


В качестве записываемого элемента использовалась плосковыпуклая короткофокусная линза N-BK7 Plano-Convex Lens, 1", f = 25 mm. Такой короткий фокус позволяет расположить голографический оптический волновод на фокусном расстоянии линзы так, чтобы фокус пучка совпадал с центром зрачка глаза наблюдателя. То есть в нашем случае AR дисплей будет установлен на расстоянии 25 мм от глаза.


Запись производилась по стандартной методике голографии в темной комнате. В качестве источника излучения использовался лазерный диод на 650 нм из набора LitiHolo. Пучок от лазерного диода расширялся до диаметра используемой оптики 1, после чего при помощи светоделительной пластины 50/50 делился на опорный и предметный пучки. Предметный пучок проходил через записываемый оптический элемент (N-BK7 Plano-Convex Lens, 1", f = 25 mm), а опорный проходил через систему зеркал и под углом проецировался в тоже место голографической пленки, что и предметный пучок. При этом оптическая ось предметного пучка была перпендикулярна поверхности голографической пленки, а оптическая ось опорного пучка составляла порядка 60к нормали. Такой угол записи обусловлен углом полного внутреннего отражения в планарном оптическом волноводе при последующем заведении излучения.


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



Рис. 5: слева схема установки для записи образа оптического элемента, который можно помещать в область, обозначенную пунктиром, справа установка, реализованная на оптическом столе.


Время засветки (экспозиции) и мощность пучков подбирались экспериментально. В нашем случае время засветки составляло 2 мин, мощность опорного пучка 1.96 мВт, мощность предметного пучка 1.68 мВт (наибольшая идентичность мощностей в пучках соответствует случаю наибольшей дифракционной эффективности).


После записи образа короткофокусной линзы, голографическая пленка подвергалась УФ облучению в течение нескольких часов. В качестве источника УФ-света использовалась кварцевая лампа КРИСТАЛЛ. В результате УФ засветки не засвеченная область пленки становилась прозрачной, как показано на рис. 6. (справа). Полученные голографические оптические элементы можно переносить (переклеивать) на подготовленный планарный волновод, который в последующем будет использоваться в AR очках.



Рис. 6: слева пример голографически записанной оптической линзы (область с радужной окраской голографическая линза), справа изменение цвета и прозрачности голографической пленки Covestro Bayfol HX200 в зависимости от длительности пост-засветки УФ кварцевой лампой (от 0 сек (0) до 2 часов (7) с шагом в 15 мин)


Список компонентов для прототипа AR очков:


  • Оптический планарный волновод с одной из граней, отполированной под углом 45. Размеры 40мм x 40мм и толщина 4 мм
  • Голографическая пленка Covestro Bayfol HX200
  • Обычная китайская красная лазерная указка на 650 нм
  • Плосковыпуклая короткофокусная линза N-BK7 Plano-Convex Lens, 1", f = 25 mm
  • Поляризационная клеящаяся пленка для LCD дисплеев
  • ЖК-модуль Nokia 5110 84x48
  • Контроллер Arduino Nano
  • расходники: провода, кнопки, батарейки и т.д.

Сборка прототипа


Первоначально мы попробовали изготовить стеклянный планарный оптический волновод самостоятельно, используя шлифовальные черепашки (казалось, что для проверки работоспособности прототипа этого будет достаточно). Но такой способ не позволил получить ровного края бокового окна. При обработке образуются сколы в нижней части, где толщина стекла наименьшая, также качество полировки оставляет желать лучшего. Помучившись с полировкой, мы решили заказать планарный волновод фабричного производства с углом при основании 45.



Рис. 7: слева самодельные оптические волноводы (у основания видны сколы), справа планарный оптический волновод фабричного производства.


LCD матрица была взята из ЖК-модуля Nokia 5110 84x48. Для этого аккуратно разобрали дисплей, удалили рассеиватель, подсветку и один из поляризационных фильтров (Рис. 8). В итоге осталась только сама ЖК-матрица и один наклеенный на нее поляризатор. Для удобства миниатюризации припаяли одножильные лакированные провода к контактам ЖК-матрицы (если эти провода не повреждать и особо не гнуть, то их лаковой защиты хватит в качестве изоляции).



Рис. 8: частично разобранный ЖК модуль Nokia 5110 84x48. На фото ЖК-модуль с двумя поляризаторами (когда один из них отклеили, матрица стала значительно более прозрачной)


Записали ряд образцов голографической линзы с разными дозами экспозиции и разным отношением мощностей в опорном и предметном плечах. Выбрали пленку с наибольшей дифракционной эффективностью (дифракционную эффективность оценивали с помощью измерителя мощности оптического излучения) и наибольшей однородностью высвечивания. У выбранного нами образца дифракционная эффективность составила 17%, что достаточно мало. В теории можно изготовить голографические оптические элементы с дифракционной эффективностью до 98%. Далее приклеили голографическую пленку на планарный волновод так, чтобы края голограммы и грани, скошенной под углом 45 планарного оптического волновода, максимально совпадали.


Планарный оптический волновод с приклеенной голографической линзой вставлялся в специальный держатель, распечатанный на 3D принтере. Также в этот держатель устанавливалась LCD матрица с наклеенным на нее поляризатором (рис. 9). Отпечатки пальцев и прочий мусор на поверхности может нарушать условие полного внутреннего отражения, что приводит к высвечиванию пучка в совершенно ненужных местах. Для защиты и предотвращения попадания грязи были использованы защитные окна, изготовленные из предметного стекла.



Рис. 9: конструкция дисплея дополненной реальности.


В качестве источника подсветки использовался лазерный светодиод на 650 нм, с правильно выбранной ориентацией поляризации света. Излучение от лазерного диода проходило через плоско-выпуклую линзу и коллимировалось до параллельного пучка, который в последующем заводился через торец планарного стеклянного волновода. Все параметры конструкции были экспериментально, итерационно подобраны с использованием 3D печати (рис. 10).



Рис. 10: пунктиром выделена область формирования параллельного пучка от лазерного диода (внутри находится линза для преобразования расходящегося пучка в параллельный с последующей проекцией на боковое окно планарного волновода)


Для крепления к голове изготовленного AR дисплея с подсветкой был изготовлен функциональный каркас (рис. 11), изготовленный по образу дужки обычных очков для коррекции зрения. Так как форма головы человека индивидуальна и может отличаться по геометрии и по размеру от изначально подобранных параметров, в конструкцию были добавлены дополнительные регулировочные винты, которые позволяют настроить очки под особенности каждого, а именно добиться совпадения пятна фокусировки от AR дисплея и центра зрачка наблюдателя. В боковые дужки были установлены элементы питания, элементы (кнопки) и блок управления (Arduino Nano). Кнопки необходимы для переключения между картинками и запуска воспроизведения изображений.



Рис. 11: слева конструкция в виде дужки очков, для крепления AR дисплея, справа в одной из дужек спрятан блок управления (Arduino Nano)


В конце-концов все это было настроено и собрано в один автономный девайс (рис. 12).



Рис. 12: первый прототип AR очков на основе голографического оптического волновода.


Конечно, мы не сразу приступили к сборке компактного варианта. Первоначально подбор базовых параметров технологии осуществлялся для прототипа, собранного на оптическом столе. Изображения, полученные в лабораторном устройстве, показаны на рис. 13. После того, как была продемонстрирована работоспособность лабораторной схемы, мы приступил к сборке устройства в компактном форм-факторе (AR очки).



Рис. 13: Изображения наложения цифровой сгенерированной информации на образ окружающего мира (на оптическом столе).


Как можно видеть из рис. 14 компактный протип AR очков работает:)))
К сожалению, изображения, полученные на компактном прототипе (рис. 14), сильно хуже, чем изображения полученные на оптическом столе (рис. 13). Скорее всего, это связано с неправильно подобранным углом заведения излучения и неправильно выставленной ориентацией поляризации лазерного источника. Также можно видеть, что изображение имеет вертикальные дефектные линии, обусловленные неточностью позиционирования голографической пленки с краем планарного волновода. Ну и не стоит забывать, что дифракционная эффективность голографического элемента порядка 17%, что достаточно мало.



Рис. 14: слева прототип очков дополненной реальности, справа изображения наложения цифровой сгенерированной информации на образ окружающего мира (компактный прототип). На изображении: шахматная доска, очки, крест, мишень (видно очень плохо, так как использовалась диф.решётка с низкой диф.эффективностью)


Из минусов технологии:


Разработанная технология отличается высочайшей компактностью. Даже не знаю аналогов, в которых изображение генерировалось прямо в просмотровой области. Как правило, в существующих AR технологиях изображение выводится на микро-дисплее, а затем по оптическому волокну передается в просмотровую область / очковую линзу. Также технология обладает наибольшим FOV, сравнимым с FOV глаза человека.


Но все же есть один недостаток:
Глаз человека находится в постоянном движении (смотрит вправо, вверх, влево, вниз, прямо). Это приводит к тому, что роговица может перекрывать пучок света, проходящий через центр зрачка. Пока не понятно, как оптимально решить проблему с постоянной подстройкой оптической системы (положения фокусного пятна) под положение зрачка пользователя.


А что дальше???


1) На момент написания поста уже одобрена патентная заявка по данной технологии.
2) С учетом допущенных ошибок начинается сборка нового прототипа с улучшенными параметрами (контрастностью изображения, разрешения картинки и т.д.).
3) Будет опробована реализация данной технологии для генерации не только монохромных, но и цветных изображений.
4) Разрабатывается система подстройки фокусного пятна под ориентацию глаза, под положение зрачка наблюдателя. Рассматриваются способы, подобные решениям в области VRD технологий.


В целом, хотя технология находится еще в стадии развития, мы считаем, что разработанный принцип наложения цифрового изображения на образ окружающего мира может послужить базой для разработки новых AR технологий, обладающих высочайшей компактностью и большим просмотровым полем (FOV).


P.S. Если вы шарите в электротехнике или любите Science (оптику, фотонику и т.д.) и у вас есть желание покопаться/поразрабатывать всякие AR хардвар штуки пишите в лс.


P.P.S. Выражаются благодарности всей тиме AR_Global (Анне П, Вере П, Мише Е), которая принимала непосредственное участие в разработке технологии и её реализации в виде прототипа. За поддержку выражается благодарность всему коллективу NanoLab.

Подробнее..

Этот портал позволяет вам помещать свою голограмму в видеовызовы

09.11.2020 20:17:29 | Автор: admin
Устали от постоянных звонков через Zoom и соскучились по живому общению? Как известно, современные проблемы требуют современных решений. Американский стартап PORTL Hologram предлагает сделать дистанционные встречи более живыми благодаря домашнему голографическому устройству. Компания создала машину, размером с телефонную будку, которая способна передавать голограмму в реальном времени прямо в вашу гостиную. Хотя стартап нацелен на массовое продвижение технологии, в настоящее время расширение их клиентской базы явно ограничивает стоимость в 60 000 долларов.

image

Телепортируй меня


Идея стартапа, как сообщает TechCrunch, заключается в создании нового вида видеовызова, который проецирует 3D-изображение вашего образа, мало чем отличающееся от голограмм из Звездных войн. Проекция работает по той же технологии, что и культовая голограмма Тупака на Coachella 2012, но с обновлениями, которые делают этот опыт гораздо более захватывающим.


Объемный звук


Использование устройства, напоминающее дверной проем, похоже на создание портала в другую комнату, отсюда и название PORTL. TechCrunch сообщает, что пользователи могут разговаривать с людьми на другом конце провода и слышать их ответ с помощью функции объемного звука.

Волшебный портал изнутри


  • Устройство PORTL оснащено передним прозрачным проекционным окном с разрешением 4К
  • По бокам встроены стереодинамики с регулятором громкости
  • Конечно же, есть встроенная камера для реалистичного присутствия, фиксирующая ваши движения
  • Также есть медиаплеер с жестким диском для воспроизведения и присутствия в реальном времени
  • Внутри бесшовного светового короба вы можете регулировать яркость в зависимости от времени суток и ваших предпочтений, а также равномерно распределять свет 18 000 люмен
  • Есть USB и HDMI входы
  • Приложение для смартфона / планшета в центре управления с выделенным маршрутизатором
  • Сенсорный экран включен, опционально
  • Устройство включается в стандартную розетку на 15 ампер
  • Размеры: 7 футов в высоту (213,36 см), 4 фута в ширину (121,92 см) и 2 фута в глубину (60,96 см)

image

Это звучит как серьёзная заявка, поскольку Zoom и Google video calls бесплатны, но PORTL сообщает, что продаёт десятки устройств частным лицам, а также торговым центрам, аэропортам и кинотеатрам.

image

image

Уменьшение


Стремясь продать несколько десятков моделей, компания сейчас работает над более доступной, миниатюрной версией (размером с компьютер), которая записывает и передает голограммы, не занимая всю высоту комнаты.

image

Варианты применения


  • Музеи (Голограммы животных, исторические интерактивные голограммы, инсталляции)
  • Спортивные / музыкальные площадки (интерактивные мероприятия для фанатов с участием любимых спортсменов или знаменитостей)
  • Цифровые туры воскрешения (умершие иконы возвращены через голограмму, чтобы посмертно совершить поездку по миру)
  • Университеты / образование (лучшие профессора со всего мира одновременно вещают в разных точках мира)
  • Экспериментальные / рекламные агентства (отлично подходят для взаимодействия с аудиторией и генерируют большой поток посетителей)
  • Концерты телеприсутствия в прямом эфире (исполнители, певцы, комики в разных местах по всему миру)
  • Молитвенные дома (Голограмма духовного лидера для праздничных или специальных проповедей)
  • Вдохновение (Мотивационные ораторы или религиозные лидеры распространяются по всему миру, чтобы вдохновить)
  • Торговые центры / универмаги (реклама в магазинах, голографические показы мод, информационная стойка)
  • Премьеры фильмов (красные дорожки, рекламные акции, встречи и приветствия знаменитостей)
  • Театральные инсталляции (Замените картонные подставки в вестибюлях театра голограммами кинозвезд)
  • Политические кампании (Самый безопасный способ проведения кампании и возможность быть в нескольких местах сразу)
  • Аэропорты / туристические направления (информационные справочники, развлечения, пока вы ожидаете ваш рейс)

Представим, что у вас есть 60 000 долларов и любимый человек, друзья или коллеги на другом конце земного шара. Вы бы захотели сделать ваши встречи более реальными благодаря голограмме? Делитесь вашими соображениями и мысленными экспериментами в комментариях!

Список литературы:

  1. Официальный сайт RORTL Hologram Company [Электронный ресурс]. URL: portlhologram.com
  2. This portal lets you beam a hologram of yourself into video calls [Электронный ресурс]. URL: futurism.com/the-byte/portal-beam-holograph-video-calls
  3. PORTL Hologram raises $3M to put a hologram machine in every home [Электронный ресурс]. URL: techcrunch.com/2020/10/29/portl-hologram-raises-3m-to-put-a-hologram-machine-in-every-home
Подробнее..

Проводим 24-часовое онлайн-мероприятие с выполнением хирургических операций в смешанной реальности

09.02.2021 10:17:03 | Автор: admin

15 хирургов из разных стран проведут 12 ортопедических операций с использованием гарнитуры смешанной реальностиMicrosoftHoloLens2, которая позволит им делиться опытом и экспертизой друг с другом в режиме реального времени.

9-10 февраля 2021 года Microsoft организует открытуюонлайн-трансляциюуникального 24-часового мероприятия, в рамках которого 15 хирургов из 13 стран проведут 12 сложных ортопедических операций с использованием очков смешанной реальности Microsoft HoloLens 2. Благодаря этому инновационному подходу эксперты из разных стран могут принять участие и ассистировать коллегам в операциях без личного присутствия. Группой врачей руководит французский профессор Тома Грегори, который в 2017 годупровелпервую в мире операцию в смешанной реальности с использованием HoloLens.

Каждая операция проводится коллегией врачей из разных стран. Благодаря очкам HoloLens 2 и приложению Dynamics 365 Remote Assist хирурги могут:

  • Визуализировать дополнительную информацию (к примеру, снимок компьютерной томографии) с помощью голограмм непосредственно поверх реального изображения.

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

  • Дистанционно обучать коллег, обогащая их медицинскую практику.

HoloLens 2 это гарнитура смешанной реальности, которая работает вместе с решениями для эффективной коллаборации. По сравнению с предыдущей моделью, гарнитура HoloLens 2 стала легче, удобнее и обеспечивает лучшую визуализацию и иммерсивность, что особенно важно для хирургов. Технология трекинга движений рук и глаз автоматически определяет, куда направлен взгляд хирурга, позволяя ему оперировать с большей точностью.

Помимо самих хирургических операций, во время мероприятия пройдут 25 дискуссий в формате круглого стола, посвященные вкладу технологий и инноваций во врачебную практику. Среди спикеров будут более 60 международных специалистов, в числе которых профессоры и эксперты в области медицины, а также представители ведущих инновационных технологических компаний и стартапов, работающих в этой сфере. Будут затронуты такие темы, как, к примеру, искусственный интеллект в медицине, будущее технологий дополненной и смешанной реальности в хирургии, перспективы развития врачебного образования и многое другое.

Онлайн-трансляция, программа мероприятия и полный список экспертов доступны по ссылке:https://aka.ms/24h.

Подробнее..

Представляем новую платформу Mesh для взаимодействия в смешанной реальности

11.03.2021 10:22:28 | Автор: admin

Новое решение от Microsoft создает настоящее ощущение присутствия, стирая границы, и открывает новые возможности для совместной работы и использования в бизнесе.

В рамках глобальной конференции Ignite 2021 былапредставленановая платформа смешанной реальности Miсrosoft Mesh. Алекс Кипман эксперт Microsoft в области технологий смешанной реальности и искусственного интеллекта, ведущий разработчик HoloLens презентовал ее во время иммерсивного выступления и рассказал про сценарии ее использования в совместной работе.

Microsoft Mesh позволяет создать у пользователей полное ощущение присутствия. Например, у людей создается впечатление, что они в одной комнате, даже когда они находятся на разных континентах. Пользователи могут взаимодействовать с 3D-контентом или друг с другом через приложения с поддержкой Mesh на любой платформе или устройстве. С помощью Mesh можно организовать так называемую холопортацию, передавая фотореалистичное изображение в смешанной реальности, а также создавать виртуальные аватары, с помощью которых можно выражать эмоции.

Базовым сценарием использования Mesh может быть совместное виртуальное присутствие в переговорной комнате, к примеру, в Teams. Но это только начало как и все продукты Microsoft, сама платформа станет основой для формирования экосистемы приложений, которые будут использовать данную технологию. Благодаря Microsoft Mesh туристические компании смогут передавать опыт виртуального путешествия, архитектурные бюро проектировать здания, создавая их виртуальную модель, а в производственном цехе удаленный эксперт сможет работать виртуально рядом со своим коллегой. Или же, как продемонстрировал в рамках конференции создавший голографическую лабораторию партнер MicrosoftOcean Xвместе с режиссером Джеймсом Кэмероном, платформа даст возможность ученым сотрудничать из любой точки мира, совместно делая новые открытия. Также свой сценарий использования Mesh продемонстрировала компанияNiantic(создатель Pokmon GO), представив демо Pokmon GO с использованием HoloLens 2.

Платформа Mesh будет доступна на различных устройствах, в том числе HoloLens 2, а также на большинстве гарнитур виртуальной реальности, планшетах, смартфонах и ПК. Предварительный просмотр приложения Microsoft Mesh для HoloLens 2 будет доступен с сегодняшнего дня, наряду с предварительной версиейAltspaceVR, в которую включена поддержка Mesh. В будущем Microsoft намерена интегрировать Mesh, созданную на основе облака Microsoft Azure, с Teams и Dynamics 365 и предлагает партнерам активно участвовать в развитии данной платформы, чтобы совместными усилиями создавать новые решения на базе технологий смешанной реальности для огромного количества сценариев использования.

Более подробная информация о Microsoft Mesh доступна вблоге.

Подробнее..

И руки превращаются в VR-дисплей изображение проецируется прямо на ладонь

05.11.2020 20:23:57 | Автор: admin

Швейцарские и израильские ученые создали новый тип интерфейса для VR. Новый шлем виртуальной реальности позволяет увидеть изображение на ладони, используемой в качестве контроллера. Управлять элементами VR-приложения можно управлять простыми жестами поворачиванием руки, сжиманием пальцев и т.п.


Разработкой цифровых перчаток занимается группа энтузиастов из Швейцарской высшей технической школы Цюриха и Даниэль Зиссерман (Danielle Sisserman) из Тель-Авивского университета. Они предложили интерфейс для VR-шлема, совмещающий прямое и дистанционное воздействия. В виде контроллера выступает рука, а интерфейс приложения проецируется на ладонь. Причем модель руки создается камерами шлема. Ладонь, по сути, заменяет смартфон.

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

Подробнее об интерфейсе



Для демонстрации возможностей интерфейса разработчики создали четыре игры-прототипа. Интерфейс используется в разных сценариях, которые можно увидеть при помощи VR-шлема HTC Vive с контроллером Leap Motion. Для управления доступны несколько жестов.


Первый прототип. Ладонь превращается в стол для игры в пинбол. Можно двигать мяч и собирать очки. Наклоны рукой позволяют управлять наклоном стола, палец вверх запускает новый уровень, указательный и большой пальцы в положении ОК выдают новый мяч.

Второй прототип. Игровое поле движется по руке, а персонаж стоит в центре ладони. Наклонами руки его можно обезопасить от падения в ямы и других препятствий. Большим пальцем активируются огненные шары.

Третий и четвертый прототипы. В игре участвуют обе руки. На ладони проецируется изображения двух различных предметов. Нужно определить, какой из них легче, и опустить ладонь с этим предметом вниз. Другую, наоборот, приподнять. В следующей игре выбор осуществляется сгибанием пальцев.

А что в AR?


Нейроинтерфейсы популярны среди разработчиков дополненной реальности. Подобный, например, предлагает Leap Motion. Их контроллер применяли при испытании интерфейса в VR-шлеме. В отличие от виртуальной реальности, их интерфейс дополняет реальную картину мира. На дополненную реальность можно смотреть через AR-очки или экран смартфона.

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

Подробнее..

Свой AR. Основы векторной алгебры

22.03.2021 18:15:22 | Автор: admin


В настоящий момент появилось достаточно большое количество библиотек дополненной реальности с богатым функционалом (ARCore, ARKit, Vuforia). Тем не менее я решил начать свой открытый проект, попутно описывая как это работает изнутри. Если повезет, то позже получится добавить какой-то особый интересный функционал, которого нет в других библиотеках. В качестве целевых платформ пока возьмем Windows и Android. Библиотека пишется на C++, и сторонние библиотеки будут задействованы по минимуму, т.е. преимущественно не будет использовано ничего готового. Фокус в статьях будет направлен на алгоритмы и математику, которые постараюсь описать максимально доступно и подробно. В этой статье пойдет речь про основы векторной алгебры.


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


Вектора это частный случай матриц, состоящие либо из одного столбца, либо из одной строки. Когда мы говорим о векторе, обычно имеется вектор-столбец $\vec v = \begin{pmatrix}v_x \\ v_y \\ v_z \\v_w\end{pmatrix}$. Но записывать вектор как столбец неудобно, поэтому будем его транспонировать $\vec v = \begin{pmatrix}v_x & v_y & v_z & v_w\end{pmatrix}^T$.


Длина вектора.


Первое, что мы рассмотрим получение длины вектора $l = |\vec v|$, где $l$ значение длины, $\vec v$ наш вектор. Для примера возьмем двумерный вектор:

$\vec v = \begin{pmatrix}x & y\end{pmatrix}^T$, где $x$ и $y$ компоненты вектора, значения проекций вектора на оси двумерных координат. И мы видим прямоугольный треугольник, где $x$ и $y$ это длины катетов, а $l$ длина его гипотенузы. По теореме Пифагора получается, что $l = \sqrt{x^2 + y^2}$. Значит $l = |\vec v| = \sqrt{x^2 + y^2}$. Вид формулы сохраняется и для векторов большей размерности, например $l = |\vec v| = |\begin{pmatrix} x & y & z & w\end{pmatrix}^T| = \sqrt{x^2 + y^2 + z^2 + w^2}$.


Скалярное произведение.


Скалярное произведение векторов это сумма произведение их компонентов: $s = \vec a \cdot \vec b = a_x \cdot b_x + a_y \cdot b_y + a_z \cdot b_z$. Но так как мы знаем, что вектора это матрицы, то тогда удобнее записать это в таком виде: $s = \vec{a}^T \vec{b}$. Это же произведение можно записать в другой форме: $s = {\vec a}^T \vec b = |\vec a| \cdot |\vec b| \cdot \cos{\delta}$, где $\delta$ угол между векторами $\vec a$ и $\vec b$ (для двумерного случая эта формула доказывается через теорему косинусов). По этой формуле можно заключить, что скалярное произведение это мера сонаправленности векторов. Ведь, если $\delta = 0^{\circ}$, то $\cos{\delta} = 1$, и $s$ это просто произведение длин векторов. Так как $\cos{\delta}$ не может быть больше 1, то это максимальное значение, которые мы можем получить, изменяя только угол $\delta$. Минимальное значение $\cos{\delta}$ будет равно -1, и получается при $\delta = 180^{\circ}$, т.е. когда вектора смотрят в противоположные направления. Также заметим, что при $\delta = 90^{\circ}$$\cos{\delta}=0$, а значит какие бы длины не имели вектора $\vec a$ и $\vec b$, все равно $s = 0$. Можно в таком случае сказать, что вектора не имеют общего направления, и называются ортогональными.
Также при помощи скалярного произведения, мы можем записать формулу длины вектора красивее: $|\vec v| = \sqrt{\vec{v}^T \vec v}$, $|\vec v|^2 = \vec{v}^T \vec{v}$.


Проекция вектора на другой вектор.


Возьмем два вектора: $\vec a$ и $\vec b$.
Проекцию вектора на другой вектор можно рассматривать в двух смыслах: геометрическом и алгебраическом. В геометрическом смысле проекция вектора на ось это вектор, а в алгебраическом число.



Вектора это направления, поэтому их начало лежит в начале координат. Обозначим ключевые точки: $O$ начало координат, $A$ конечная точка вектора $\vec a$, $B$ конечная точка вектора $\vec b$.


В геометрическом смысле мы ищем такой $\vec c$, чтобы конечная точка вектора (обозначим ее как $C$) была ближайшей точкой к точке $B$, лежащей на прямой $OA$.


Иначе говоря, мы хотим найти составляющую $\vec b$ в $\vec a$, т.е. такое значение $t$, чтобы $\vec c = \vec a \cdot t$ и $|\vec c - \vec b| \rightarrow min$


Расстояние между точками $B$ и $C$ будет минимальным, если $\angle OCB = 90^\circ$. Получаем прямоугольный треугольник $OCB$. Обозначим $\alpha = \angle COB$. Мы знаем, что $\cos{\alpha} = \frac{|OC|}{|OB|}$ по определению косинуса через соотношение сторон прямоугольного треугольника
($OB$ гипотенуза, $OC$ прилежащий катет).
Также возьмем скалярное произведение $s = \vec a \cdot \vec b = |\vec a| \cdot |\vec b| \cdot \cos{\alpha}$. Отсюда следует, что $\cos{\alpha} = \frac {\vec a \cdot \vec b } {|\vec a| \cdot |\vec b|}$. А значит $\frac{|OC|}{|OB|} = \frac {\vec a \cdot \vec b } {|\vec a| \cdot |\vec b|}$.
Тут вспоминаем, что $OC$ это искомый вектор $\vec c$, а $OB$ $\vec b$, и получаем $\frac{|\vec c|}{|\vec b|} = \frac {\vec a \cdot \vec b } {|\vec a| \cdot |\vec b|}$. Умножаем обе части на $|\vec b|$ и получаем $|\vec c| = \frac {\vec a \cdot \vec b } {|\vec a|}$. Теперь мы знаем длину $\vec c$. Вектор $\vec c$ отличается от вектора $\vec a$ длинной, но не направлением, а значит через соотношение длин можно получить: $\vec c = \vec a \cdot \frac{|\vec c|}{|\vec a|}$. И мы можем вывести финальные формулы:
$t = \frac {\vec a \cdot \vec b } {|\vec a|^2} = \frac {{\vec a}^T \vec b}{{\vec a}^T \vec a}$ и
$\vec c = \vec a t = \vec a (\frac {{\vec a}^T \vec b}{{\vec a}^T \vec a})$


Нормализованный вектор.


Хороший способ упростить работу над векторами использовать вектора единичной длины. Возьмем вектор $\vec v$ и получим сонаправленный вектор $\vec{nv}$ единичной длины. Для этого вектор разделим на его длину: $\vec{nv} = \frac{\vec v}{|\vec v|}$. Эта операция называется нормализацией, а вектор нормализованным.
Зная нормализованный вектор и длину исходного вектора, можно получить исходный вектор: $\vec v = \vec{nv} \cdot |\vec v|$.
Зная нормализованный вектор и исходный вектор, можно получить его длину: $|\vec v| = {\vec v}^T \vec{nv}$.
Хорошим преимуществом нормализованных векторов является то, что сильно упрощается формула проекции (т.к. длина равна 1, то она сокращается). Проекция вектора $\vec b$ на $\vec a$ единичной длины:
$t = \vec a \cdot \vec b = {\vec a}^T \vec b$
$\vec c = \vec a {(\vec a}^T \vec b)$


Матрица поворота двумерного пространства.


Предположим у нас есть некая фигура:
Figure
Чтобы ее нарисовать, заданы координаты ее вершин, от которых строятся линии. Координаты заданы в виде набора векторов следующим образом $\vec v_i = \begin{pmatrix}{v_i}_x & {v_i}_y \end{pmatrix}^T$. Наша координатная сетка задана двумя осями единичными ортогональными (перпендикулярными) векторами. В двумерном пространстве можно получить два перпендикулярных вектора к другому вектору такой же длины следующим образом: $\perp \vec v = \begin{pmatrix}\mp v_y & \pm v_x \end{pmatrix}^T$ левый и правый перпендикуляры. Берем вектор, задающим ось $X$ $\vec{aX}=\begin{pmatrix} 1 & 0 \end{pmatrix}^T$ и ось $Y$ левый к нему перпендикуляр $\vec{aY}=\begin{pmatrix} 0 & 1 \end{pmatrix}^T$.
Выведем новый вектор, получаемый из наших базисный векторов:
$\vec{v'} = \vec{aX}^T \cdot v_x + \vec{aY}^T \cdot v_y = \begin{pmatrix} 1 & 0 \end{pmatrix}^T \cdot v_x + \begin{pmatrix} 0 & 1 \end{pmatrix}^T \cdot v_y = \begin{pmatrix} v_x & v_y \end{pmatrix}^T = \vec v$
Сюрприз он совпадает с нашим исходным вектором.
Теперь попробуем как-то изменить нашу фигуру повернем ее на угол $\alpha$. Для этого повернем векторы $\vec{aX}$ и $\vec{aY}$, задающих оси координат. Поворот вектора $\begin{pmatrix} 1 & 0 \end{pmatrix}^T$ задается косинусом и синусом угла $\vec{aX}=rotate(\begin{pmatrix} 0 & 1 \end{pmatrix}^T, \alpha) = \begin{pmatrix} \cos{\alpha} & \sin{\alpha} \end{pmatrix}^T$. А чтобы получить вектор оси $Y$, возьмем перпендикуляр к $\vec{aX}$: $\vec{aY}=\perp \vec{aX}=\begin{pmatrix} -\sin{\alpha} & \cos{\alpha} \end{pmatrix}^T$. Выполнив эту трансформацию, получаем новую фигуру:
$\vec{v_i'} = \vec{aX} \cdot {v_i}_x + \vec{aY} \cdot {v_i}_y$


$<!-- math>$inline$\alpha=20^\circ$inline$</math -->$


Вектора $\vec{aX}$ и $\vec{aY}$ являются ортонормированным базисом, потому как вектора ортогональны между собой (а значит базис ортогонален), и вектора имеют единичную длину, т.е. нормированы.


Теперь мы говорим о нескольких системах координат базовой системы координат (назовем ее мировой), и локальной для нашего объекта (которую мы поворачивали). Удобно объединить наш набор векторов в матрицу $R = \begin{pmatrix} \vec{aX} & \vec{aY} \end{pmatrix} = \begin{pmatrix} \cos{\alpha} & -\sin{\alpha} \\ \sin{\alpha} & \cos{\alpha} \end{pmatrix}$
Тогда $\vec{v_i'} = \vec{aX} \cdot {v_i}_x + \vec{aY} \cdot {v_i}_y = \begin{pmatrix} \vec{aX} & \vec{aY} \end{pmatrix} \vec{v_i} = R \cdot \vec{v_i}$.
В итоге $\vec{v_i'} = R \cdot \vec{v_i}$.
Матрица $R$, составляющая ортонормированный базис и описывающая поворот, называется матрицей поворота.
Также матрица поворота имеет ряд полезных свойств, которые следует иметь ввиду:


  • При $R = I$, где $I$ единичная матрица, матрица соответствует нулевому повороту (угол $\alpha = 0$), и в таком случае локальные оси совпадают с мировыми. Как рассматривали выше, матрица никак не меняет исходный вектор.
  • $|R|=1$ определитель матрицы равен 1, если у нас, как обычно бывает, правая тройка векторов. $|R| = -1$, если тройка векторов левая.
  • $R^T = R^{-1}$.
  • $R^T R = R^{-1} R = I$.
    $R^T R = \begin{pmatrix}\vec{aX} & \vec{aY}\end{pmatrix}^T \begin{pmatrix}\vec{aX} & \vec{aY}\end{pmatrix} = \begin{pmatrix}\vec{aX}^T\vec{aX} & \vec{aX}^T\vec{aY} \\ \vec{aY}^T\vec{aX} & \vec{aY}^T\vec{aY}\end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}$.
  • $\vec{v'} = R \vec v \Rightarrow |\vec{v'}|=|\vec v|$, поворот не меняет длины вектора.
  • зная $\vec{v'}$ и $R$, можем получить исходный вектор $\vec v$ $\vec v = R^{-1} \vec{v'} = R^T \vec{v'}$. Т.е. умножая вектор на матрицу поворота мы выполняем преобразование координат вектора из локальной системы координат объекта в мировую, но также мы можем поступать и наоборот преобразовывать мировые координаты в локальную систему координат объекта, умножая на обратную матрицу поворота.

Теперь попробуем повернуть наш объект два раза, первый раз на угол $\alpha$, второй раз на угол $\beta$. Матрицу, полученную из угла $\alpha$, обозначим как $R_a$, из угла $\beta$ $R_b$. Распишем наше итоговое преобразование:
$\vec{{v'}_i} = R_b R_a \vec{v_i}$.


$<!-- math>$inline$\alpha=20^\circ, \beta=10^\circ$inline$</math -->$


Обозначим $R_c = R_b R_a$, тогда $\vec{{v'}_i} = R_c \vec{v_i}$. И из двух операций мы получили одну. Так как поворот это линейное преобразование (описали ее при помощи одной матрицы), множество преобразований можно описать одной матрицей, что сильно упрощает над ними работу.


Масштабирование в двумерном пространстве.


Масштабировать объект достаточно просто, нужно только умножить координаты точек на коэффициент масштаба: $\vec{v_i'} = s \cdot \vec{v_i}$. Если мы хотим масштабировать объект на разную величину по разным осям, то формула принимает вид: $\vec{v_i'} = \begin{pmatrix} s_x \cdot {v_i}_x & s_y \cdot {v_i}_y \end{pmatrix}^T$. Для удобства переведем операцию в матричный вид: $S = \begin{pmatrix} s_x & 0 \\ 0 & s_y \end{pmatrix}, \vec{v_i'} = S \cdot \vec{v_i}$.


Теперь предположим, что нам нужно повернуть и масштабировать наш объект. Нужно отметить, что если сначала масштабировать, а затем повернуть, то результат будет отличаться, от того результата, где мы сначала повернули, а затем масштабировали:


Сначала поворот, а затем масштабирование по осям:
$<!-- math>$inline$\alpha=20^\circ, s_x=1.5, s_y=0.5$inline$</math -->$


Сначала масштабирование по осям, а затем поворот:
$<!-- math>$inline$\alpha=20^\circ, s_x=1.5, s_y=0.5$inline$</math -->$


Как мы видим порядок операций играет большое значение, и его нужно обязательно учитывать.
Также здесь мы также можем объединять матрицы преобразования в одну:
$\vec{{v'}_i} = S R \vec{v_i}, \space T_a = S R \space \Rightarrow \space \vec{{v'}_i} = T_a \vec{v_i}$
$\vec{{v'}_i} = R S \vec{v_i}, \space T_b = R S \space \Rightarrow \space \vec{{v'}_i} = T_b \vec{v_i}$
$T_a \neq T_b!$


Хотя в данном случае, если $s_x = s_y$, то $T_a = T_b$. Тем не менее, с порядком преобразований нужно быть очень аккуратным. Их нельзя просто так менять местами.


Векторное произведение векторов.


Перейдем в трехмерное пространство и рассмотрим определенное на нем векторное произведение.
Векторное произведение двух векторов в трёхмерном пространстве вектор, ортогональный к обоим исходным векторам, длина которого равна площади параллелограмма, образованного исходными векторами.


Для примера возьмем два трехмерных вектора $\vec a$, $\vec b$. И в результате векторного произведения получим $\vec c = \vec a \times \vec b = \begin{pmatrix}a_y \cdot b_z - a_z \cdot b_y & a_z \cdot b_x - a_x \cdot b_z & a_x \cdot b_y - a_y \cdot b_x \end{pmatrix}^T$


Визуализируем данную операцию:

Здесь наши вектора $\vec a$, $\vec b$ и $\vec c$. Вектора начинаются с начала координат, обозначенной точкой $O$. Конечная точка вектора $\vec a$ точка $A$. Конечная точка $\vec b$ точка $B$. Параллелограмм из определения формируются точками $O$, $A$, $B$, $D$. Координаты точки $D$ находим как $D = \vec a + \vec b$. В итоге имеем следующие соотношения:


  • $|\vec c| = S(OABD)$, где $S$ площадь,
  • $\vec{a}^T \vec c = 0$,
  • $\vec{b}^T \vec c = 0$.

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


Для запоминания этой формулы удобно использовать мнемонический определитель. Пусть $i = \begin{pmatrix} 1 & 0 & 0 \end{pmatrix}^T, \space j = \begin{pmatrix} 0 & 1 & 0 \end{pmatrix}^T, \space k = \begin{pmatrix} 0 & 0 & 1 \end{pmatrix}^T$, и мы раскладываем определить по строке как сумму определителей миноров исходной матрицы $i, j, k$:
$\vec c = \vec a \times \vec b = \begin{vmatrix} (i, j, k)^T & \vec a & \vec b \end{vmatrix} = \begin{vmatrix} i & a_x & b_x \\ j & a_y & b_y \\ k & a_z & b_z \end{vmatrix} = i \cdot \begin{vmatrix} a_y & b_y \\ a_z & b_z \end{vmatrix} - j \cdot \begin{vmatrix} a_x & b_x \\ a_z & b_z \end{vmatrix} + k \cdot \begin{vmatrix} a_x & b_x \\ a_y & b_y \end{vmatrix} \space \Rightarrow$
$\vec c = \begin{pmatrix}a_y \cdot b_z - a_z \cdot b_y & a_z \cdot b_x - a_x \cdot b_z & a_x \cdot b_y - a_y \cdot b_x \end{pmatrix}^T$


Некоторые удобные свойства данного произведения:


  • Если два вектора ортогональны и нормализованы, то вектор также будет иметь единичную длину. Параллелограмм, который образуется двумя исходными векторами, станет квадратом с длинной сторон равной единице. Т.е. площадь равна единице, отсюда длина выходного вектора единица.
  • $\vec a \times \vec b = - \vec b \times \vec a$

Матрица поворота трехмерного пространства.


С тем, как формировать матрицу в двумерном пространстве мы разобрались. В трехмерном она формируется уже не двумя, а тремя ортогональными векторами $R = \begin{pmatrix} \vec{aX} & \vec{aY} & \vec{aZ} \end{pmatrix}$. По свойствам, описанным выше, можно вывести следующие отношения между этими векторам:


  • $\vec{aZ} = \vec{aX} \times \vec{aY}$
  • $\vec{aX} = \vec{aY} \times \vec{aZ}$
  • $\vec{aY} = \vec{aZ} \times \vec{aX}$

Вычислить вектора этих осей сложнее, чем в матрице поворота двумерного пространства. Для примера получения этих векторов рассмотрим алгоритм, который в трехмерных движках называется lookAt. Для этого нам понадобятся вектор направления взгляда $\vec z$ и опорный вектор для оси $Y$ $\vec y$. Сам алгоритм:


  1. Обычно направление камеры совпадает с осью $Z$. Поэтому нормализуем $\vec z$ и получаем ось $Z$ $\vec aZ = \frac{\vec z}{|\vec z|}$.
  2. Получаем вектор оси $X$ $\vec{aX} = \frac{\vec{y} \times \vec{aZ}}{|\vec{y} \times \vec{aZ}|}$. В итоге у нас есть два нормализованных ортогональных вектора $\vec{aX}$ и $\vec{aZ}$, описывающих оси $X$ и $Z$, при этом ось $Z$ сонаправлена с входным вектором $\vec z$, а ось $X$ перпендикулярна к входному опорному вектору $\vec y$.
  3. Получаем вектор оси $Y$ из полученных $\vec{aX}$ и $\vec{aZ}$ $\vec{aY} = \vec{aZ} \times \vec{aX}$.
  4. В итоге $R = \begin{pmatrix} \vec{aX} & \vec{aY} & \vec{aZ} \end{pmatrix}$

В трехмерных редакторах и движках в интерфейсах часто используются углы Эйлера для задания поворота. Углы Эйлера более интуитивно понятны это три числа, обозначающие три последовательных поворота вокруг трех основных осей $X, Y, Z$. Однако, работать с ними не очень то просто. Если попробовать выразить итоговый вектор напрямую через эти повороты, то получим довольно объемную формулу, состоящую из синусов и косинусов наших углов. Есть еще пара проблем с этими углами. Первая проблема это то, что сами по себе углы не задают однозначного поворота, так как результат зависит от того, в какой последовательности происходили повороты $X \rightarrow Y \rightarrow Z$ или $Z \rightarrow X \rightarrow Y$ или как-то еще. Углы Эйлера это последовательность поворотов, а как мы помним, смена порядка трансформаций меняет итоговый результат. Вторая проблема это gimbal lock.


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


Существуют разные способы задания поворота в трехмерном пространстве, и каждый имеет свои плюсы и минусы:


  • Матрица поворота. С ней просто работать (т.к. это просто матрицы). Но есть логическая избыточность данных все элементы матрицы связаны определенными условиями, так как количество элементов больше степеней свободы (12 элементов против трех степеней). Т.е. мы не можем взять матрицу и наполнить ее случайными числами, так при несоблюдении условий матрица просто не будет являться матрицей поворота.
  • Углы Эйлера. Они интуитивно понятны, но работать с ними сложно.
  • Вектор оси вращения и угол порота вокруг нее. Любой возможный поворот можно описать таким образом. Поворота вектора вокруг заданной оси рассмотрим ниже.
  • Вектор поворота Родрига. Это трехмерный вектор, где нормализованный вектор представляет собой ось вращения, а длина вектора угол поворота. Этот способ задания поворота похож на предыдущий способ, но количество элементов здесь равно числу степеней свободы, и элементы не связаны между собой жесткими ограничениями. И мы можем взять трехмерный вектор с абсолютно случайными числами, и любой полученный вектор будет задавать какое-то возможное вращение.

Поворот вектора вокруг заданной оси.


Теперь рассмотрим операцию, позволяющую реализовать поворот вектора вокруг оси.
Возьмем вектор $\vec n$ описывающий ось, вокруг которой нужно повернуть вектор $\vec v$ на угол $\alpha$. Результирующий вектор обозначим как $\vec{v'} = rotate(\vec n, \alpha, \vec v)$. Иллюстрируем процесс:



Вектор $\vec n$ мы можем разложить сумму векторов: вектора, параллельный к вектору $\vec n$ $\vec{v_\parallel}$, и вектора, перпендикулярному к вектору к вектору $\vec n$ $\vec{v_{\perp}}$.
$\vec v = \vec{v_{\parallel}} + \vec{v_{\perp}}$.
Вектор $\vec{v_\parallel}$ это проекция вектора $\vec v$ на вектор $\vec n$. Т.к. $\vec n$ нормализованный вектор, то:
$\vec{v_\parallel} = \vec{n} (\vec{n}^T \vec{v})$
Та часть $\vec v$, которая принадлежит оси вращения ($\vec{v_{\parallel}}$) не измениться во время вращения. Повернуть нам нужно только $\vec{v_{\perp}}$ в плоскости перпендикулярной к $\vec n$ на угол $\alpha$, Обозначим этот вектор как $\vec{v_{\perp rot}}$. Тогда наш искомый вектор $\vec{v'} = \vec{v_\parallel} + \vec{v_{\perp rot}}$.
Вектор $\vec{v_{\perp}}$ можем найти следующим образом:
$\vec{v_{\perp}} = \vec v - \vec{v_\parallel}$
Для того, чтобы повернуть $\vec{v_{\perp}}$, выведем оси $X$ и $Y$ в плоскости, в которой будем выполнять поворот. Это должны быть два ортогональных нормализованных вектора, ортогональных к $\vec n$. Один ортогональный вектор у нас уже есть $\vec{v_{\perp}}$, нормализуем его и обозначим как ось $X$ $\vec{aX} = \frac{\vec{v_{\perp}}}{|\vec{v_{\perp}}|}$.
Теперь получим вектор оси $Y$. Это должен быть вектор, ортогональный к $\vec n$ и $\vec{aX}$ (т.е. и к $\vec{v_{\perp}}$). Получить его можно через векторное произведение: $\vec{d_y} = \vec n \times \vec{v_{\perp}}$. Значит $\vec{aY} = \frac{\vec{d_y}}{|\vec{d_y}|}$. По свойству векторного произведения $|\vec{d_y}|$ будет равно площади параллелограмма, образуемого двумя исходными векторами ($\vec n$ и $\vec{aX}$). Так как вектора ортогональны, то у нас будет не параллелограмм, а прямоугольник, а значит $|\vec{d_y}| = |\vec{n}| \cdot |\vec{v_{\perp}}|$. $|\vec{n}| = 1 \space \Rightarrow \space |\vec{d_y}| = |\vec{v_{\perp}}|$. Значит $\vec{aY} = \frac{\vec n \times \vec{v_{\perp}}}{|\vec{v_{\perp}}|}$.
Поворот двумерного вектора $\vec v = \begin{pmatrix} 1 & 0 \end{pmatrix}^T$ на угол $\alpha$ можно получить через синус и косинус $rotate2D(\vec v, \alpha) = \begin{pmatrix} \cos{\alpha} & \sin{\alpha} \end{pmatrix}^T$. Т.к. $\vec{v_{\perp}}$ в координатах полученной плоскости сонаправлен с осью $X$, то он будет равен $\begin{pmatrix} |\vec{v_{\perp}}| & 0 \end{pmatrix}^T = \begin{pmatrix} 1 & 0 \end{pmatrix}^T \cdot |\vec{v_{\perp}}|$. Этот вектор после поворота $rotate2D(\begin{pmatrix} 0 & 1 \end{pmatrix}^T, \alpha) \cdot |\vec{v_{\perp}}| = \begin{pmatrix} \cos{\alpha} & \sin{\alpha} \end{pmatrix}^T \cdot |\vec{v_{\perp}}|$. Отсюда можем вывести: $\vec{v_{\perp rot}} = (\vec{aX} \cdot \cos{\alpha} + \vec{aY} \cdot \sin{\alpha}) \cdot |\vec{v_{\perp}}|$$\space \Rightarrow \space$
$\vec{v_{\perp rot}} = (\frac{\vec{v_{\perp}}}{|\vec{v_{\perp}}|} \cdot \cos{\alpha} + \frac{\vec n \times \vec{v_{\perp}}}{|\vec{v_{\perp}}|} \cdot \sin{\alpha}) \cdot |\vec{v_{\perp}}|$$\space \Rightarrow \space$
$\vec{v_{\perp rot}} = \vec{v_{\perp}} \cdot \cos{\alpha} + (\vec n \times \vec{v_{\perp}}) \cdot \sin{\alpha}$
Теперь мы можем получить наш искомый вектор:
$\vec{v'} = \vec{v_{\parallel}} + \vec{v_{\perp rot}} = \vec{v_{\parallel}} + \vec{v_{\perp}} \cdot \cos{\alpha} + (\vec n \times \vec{v_{\perp}}) \cdot \sin{\alpha}$


Мы разобрались с тем, как поворачивать вектор вокруг заданной оси на заданный угол, значит теперь мы умеем использовать поворот, заданный таким образом.
Получить вектор оси вращения и угол из вектора Родрига не составляет большого труда, а значит мы теперь умеем работать и с ним тоже.
Напоминаю, что матрица поворота представляет собой три базисных вектора $R = \begin{pmatrix} \vec{aX} & \vec{aY} & \vec{aZ} \end{pmatrix}$, а углы Эйлера три последовательных поворота вокруг осей $X$, $Y$, $Z$. Значит мы можем взять единичную матрицу, как нулевой поворот $R_0 = I$, а затем последовательно поворачивать базисные вектора вокруг нужных нам осей. В результате получим матрицу поворота соответствующую углам Эйлера. Например:
$\vec{aX'} = rotate((0, 0, 1)^T, angle_z, rotate((0, 1, 0)^T, angle_y, rotate((1, 0, 0)^T, angle_x, \vec{aX})))$
$\vec{aY'} = rotate((0, 0, 1)^T, angle_z, rotate((0, 1, 0)^T, angle_y, rotate((1, 0, 0)^T, angle_x, \vec{aY})))$
$\vec{aZ'} = rotate((0, 0, 1)^T, angle_z, rotate((0, 1, 0)^T, angle_y, rotate((1, 0, 0)^T, angle_x, \vec{aZ})))$
$R = \begin{pmatrix} \vec{aX'} & \vec{aY'} & \vec{aZ'} \end{pmatrix}$
$rotateEuler(angle_x, angle_y, angle_z, v) = R \cdot \vec v$
Также можно отдельно вывести матрицы вращения по каждой из осей $X$, $Y$, $Z$ ($R_x$, $R_Y$, $R_z$ соответственно) и получить итоговую матрицу последовательным их умножением:
$R = R_x \cdot R_y \cdot R_z$


Таким же образом можно перевести вектор поворота Родрига в матрицу поворота: также поворачиваем оси матрицы поворота, полученные от единичной матрицы.


Итак, с вращением объекта разобрались. Переходим к остальным трансформациям.


Масштабирование в трехмерном пространстве.


Все тоже самое что и двумерном пространстве, только матрица масштабирования принимает вид: $S = \begin{pmatrix} s_x & 0 & 0 \\ 0 & s_y & 0 \\ 0 & 0 & s_z \end{pmatrix}$


Перемещение объекта.


До этого момента точка начала локальных координат не смещалась в мировом пространстве. Так как точка начала координат нашего объекта это его центр, то центр объект никуда не смещался. Реализовать это смещение просто: $\vec{v'_i} = \vec{v_i} + \vec t$, где $\vec t$ вектор, задающий смещение.
Теперь мы умеем масштабировать объект по осям, поворачивать его и перемещать.
Объединим все одной формулой: $\vec{v'_i} = R \cdot S \cdot \vec{v_i} + \vec t$:


s_x = 0.5, \space s_y = 0.5, \space $<!-- math>$inline$\alpha={30^{\circ}}, \space \vec t = \begin{pmatrix} 6 & 4 \end{pmatrix}^T$inline$</math -->$


Чтобы упростить формулу, мы можем, как уже делали ранее, объединить матрицы $T = R \cdot S \space \Rightarrow \space \vec{v'_i} = T \cdot \vec{v_i} + \vec t$. В итоге наше преобразование описывает матрица $T$ и вектор $\vec t$. Объединение вектора $\vec t$ с матрицей $T$ еще более бы упростило формулу, однако сделать в данном случае не получится, потому как сложение здесь это не линейная операция. Тем не менее сделать это возможно, и рассмотрим этот момент уже в следующей статье.


Заключение.


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

Подробнее..

Свой AR. Маркеры

23.03.2021 14:22:27 | Автор: admin


Привет, Хабр.
По мере написания библиотеки в этой статье я хочу продолжить объяснять математику, лежащей в основе работы дополненной реальности. Результатом будет пример на игровом движке Unity, распознающий маркер и накладывающий на него трехмерную модельку. Библиотека пишется на C++ под Android, но фокус статьи будет направлен на математику. Эта статья, в отличии от предыдущей, будет ближе к практике, но если необходимо разобраться с основами векторной математики, то можно начать с нее.


Однородные координаты.


В предыдущей статье мы рассматривали преобразования в евклидовом пространстве $\mathbb{R}^2$, а сейчас ведем понятие проективного пространства $\mathbb{P}^2$ (projective space).
Чтобы перевести координаты точки из двумерного евклидова пространства в проективное, нужно умножить вектор координат на любой ненулевой скаляр $w$, а затем добавить $w$ в качестве последней компоненты: $\vec v = \begin{pmatrix} x & y \end{pmatrix}^T \in \mathbb{R}^2 \space \Rightarrow \space \vec p = \begin{pmatrix} x \cdot w & y \cdot w & w \end{pmatrix}^T \in \mathbb{P}^2$. Получаем однородные координаты точки (homogeneous coordinates). Так как $w$ свободная переменная, то одной точке евклидова пространства принадлежит бесконечное множество точек проективного пространства. Перевод обратно выполняется делением на последнюю компоненту: $\vec p = \begin{pmatrix} x & y & w \end{pmatrix}^T \in \mathbb{P}^2 \space \Rightarrow \space \vec v = \begin{pmatrix} \frac{x}{w} & \frac{y}{w} \end{pmatrix}^T \in \mathbb{R}^2$. Удобно в качестве значения $w$ брать 1: $\vec v = \begin{pmatrix} x & y \end{pmatrix}^T \in \mathbb{R}^2 \space \Rightarrow \space \vec p = \begin{pmatrix} x & y & 1 \end{pmatrix}^T \in \mathbb{P}^2$. Перевод обратно в таком случае также упрощается: $\vec p = \begin{pmatrix} x & y & 1 \end{pmatrix}^T \in \mathbb{P}^2 \space \Rightarrow \space \vec v = \begin{pmatrix} x & y \end{pmatrix}^T \in \mathbb{R}^2$.
Можно заметить, что умножение однородных координат на скаляр не меняет координат соответствующей точки в евклидовом пространстве: $\vec{p_B} = \vec{p_A} \cdot s = \begin{pmatrix} x \cdot s & y \cdot s & w \cdot s \end{pmatrix}^T \in \mathbb{P}^2 \space \Rightarrow \space \vec v = \begin{pmatrix} \frac{x \cdot s}{w \cdot s} & \frac{y \cdot s}{w \cdot s} \end{pmatrix}^T = \begin{pmatrix} \frac{x}{w} & \frac{y}{w} \end{pmatrix}^T \in \mathbb{R}^2$.
Также, если последняя компонента равна 0, то такую точку мы не сможем перевести в евклидово пространство: $\vec p = \begin{pmatrix} x & y & 0 \end{pmatrix}^T \in \mathbb{P}^2$ такая точка называется точкой на бесконечности (point at infinity или ideal point).


Трансформации в однородных координатах.


Трансформации, которые мы делали в евклидовом пространстве, можно применять и для однородных координат.
Для примера возьмем поворот точек матрицей поворота: $\vec{v'} = R \vec{v} = \begin{pmatrix} R_{11} & R_{12} \\ R_{21} & R_{22} \end{pmatrix} \begin{pmatrix} v_x \\ v_y \end{pmatrix} = \begin{pmatrix} {v'}_x \\ {v'}_y \end{pmatrix}$.
В однородных координатах это принимает такую форму: $\vec{v'} = R \vec{v} = \begin{pmatrix} R_{11} & R_{12} & 0 \\ R_{21} & R_{22} & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} v_x \\ v_y \\ 1 \end{pmatrix} = \begin{pmatrix} {v'}_x \\ {v'}_y \\ 1 \end{pmatrix}$
А смещение выполнялось следующим образом: $\vec{v'} = \vec v + \vec t$. Мы не могли преобразовать смещение объекта в матричную операцию, так как она нелинейна в евклидовом пространстве. Но уже в проективном пространстве она становится линейной $T$: $\vec{v'} = \begin{pmatrix} 0 & 0 & t_x \\ 0 & 0 & t_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} v_x & v_y & 1 \end{pmatrix} = \begin{pmatrix} v_x + t_x \\ v_y + t_y \\ 1 \end{pmatrix}$.
Из предыдущей статьи мы помним, что матричные операции, можно объединять. Объединим поворот и смещение:
$\vec{v'} = T \cdot R \cdot \vec v = \begin{pmatrix} 0 & 0 & t_x \\ 0 & 0 & t_y \\ 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} R_{11} & R_{12} & 0 \\ R_{21} & R_{22} & 0 \\ 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} v_x \\ v_y \\ 1 \end{pmatrix}$


$\vec{v'} = \begin{pmatrix} R_{11} & R_{12} & t_x \\ R_{21} & R_{22} & t_y \\ 0 & 0 & 1 \end{pmatrix} \cdot \begin{pmatrix} v_x \\ v_y \\ 1 \end{pmatrix}$


Метод наименьших квадратов


Прежде чем двигаться дальше, вооружимся новым инструментом методом наименьших квадратов (МНК).
Возьмем для примера такую систему линейных уравнений:
$\begin{cases} A_{11} \cdot x_1 + A_{12} \cdot x_2 = b_1 \\ A_{21} \cdot x_1 + A_{22} \cdot x_2 = b_2 \\ A_{31} \cdot x_1 + A_{32} \cdot x_1 = b_3\end{cases}$
Эту систему можно представить в матричном виде:
$\begin{pmatrix} A_{11} & A_{12} \\ A_{21} & A_{22} \\ A_{31} & A_{32} \end{pmatrix} \cdot \begin{pmatrix} x_1 \\ x_2 \end{pmatrix} = \begin{pmatrix} b_1 \\ b_2 \\ b_3 \end{pmatrix} = A \cdot \vec{x} = \vec{b}$.
Неизвестных у нас два, количество уравнений три, значит это переопределенная система уравнений. А значит решения одних уравнений может противоречить другим, и система может не иметь точного решения. Ошибка получаемых решений это обычное дело для вычислительной математики, нужно только ее минимизировать. В качестве ошибки возьмем сумму квадратов разницы: пусть $\vec{b'} = A \cdot \vec{x}$, $\vec{r} = (\vec{b'} - \vec{b})$ вектор остатков, $e(\vec{x}) = \sum{{r_i}^2} = \sum{({b'}_i - b_i)^2}$ функция ошибки. $e(\vec{x}) \rightarrow min$.
В матричном виде задачу минимизации можно записать так: $(A \vec x - \vec b)^T (A \vec x - \vec b) \rightarrow min$.
Решение нашей системы:
$A \cdot \vec x = \vec b \space \Rightarrow \space A^T \cdot A \cdot \vec x = A^T \vec b \space \Rightarrow \space \vec x = (A^T \cdot A)^{-1} \cdot A^T \cdot \vec b$
$\vec x = (A^T A)^{-1} A^T \vec b$
Метод можно применять и для системы нелинейных уравнений. Мы определили функцию ошибки как сумму квадратов остатков. Дальше нам нужно найти минимум этой функции. Минимум функции нужно искать в ее экстремумах. Экстремумы находятся там, где производные функции равны нулю:
$\begin{cases}\frac{\partial e(\vec x)}{\partial x_0} = 0 \\ .. \\ \frac{\partial e(\vec x)}{\partial x_n} = 0 \end{cases}$
Получим систему уравнений, которая в отличии от предыдущей, будет точно не переопределена. Если система уравнений линейная, то решение будет только одно и получить его не составляет труда. Если решений несколько, то перебираем их и выбираем минимальное.


Немного практики


Перейдем наконец к практическим экспериментам. Для того, чтобы упростить себе работу, возьмем пока библиотеку OpenCV и используем ее для поиска маркеров. Найдем маркер и наложим на него изображение.
Пусть $w$ и $h$ ширина и высота накладываемого изображения. Тогда четыре угла будут иметь следующие локальные координаты:
$[\vec{v_1}, \vec{v_2}, \vec{v_3}, \vec{v_4}] = [\begin{pmatrix} 0 & 0 \end{pmatrix}^T, \begin{pmatrix} w & 0 \end{pmatrix}^T, \begin{pmatrix} w & h \end{pmatrix}^T, \begin{pmatrix} 0 & h \end{pmatrix}^T]$
От OpenCV мы получаем координаты 4х углов маркера в кадре: $[\vec{m_1}, \vec{m_2}, \vec{m_3}, \vec{m_4}]$
Для наложении изображения на маркер нам необходимо описать преобразование из локальных координат накладываемого изображения в координаты кадра с камеры. Для этого возьмем два вектора $\vec{aX}$ и $\vec{aY}$, описывающих базовые оси $X$, $Y$ и вектор смещения от начала координат $\vec{t}$:
$\begin{pmatrix} {{m'}_i}_x \\ {{m'}_i}_y \\ 1 \end{pmatrix} = \begin{pmatrix} aX_x & aY_x & t_x \\ aX_y & aY_y & t_y \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} {v_i}_x \\ {v_i}_y \\ 1 \end{pmatrix}$
Можем упростить формулу, вычеркнув последнюю строку:
$\begin{pmatrix} {{m'}_i}_x \\ {{m'}_i}_y \end{pmatrix} = \begin{pmatrix} aX_x & aY_x & t_x \\ aX_y & aY_y & t_y \end{pmatrix} \begin{pmatrix} {v_i}_x \\ {v_i}_y \end{pmatrix}$
$\vec{{m'}_i} = \begin{pmatrix} \vec{aX} & \vec{aY} & \vec t \end{pmatrix} \vec{v_i}$
Одна пара точек задает два линейных уравнений, при этом имеем 6 неизвестных. Значит нужно 3 пары точек, чтобы система была определена. Мы имеем 4, а значит она переопределена. Воспользуемся МНК для нахождения нашего преобразования:
Пусть искомый вектор $\vec x$ будет собран из наших неизвестных следующим образом $\vec x = \begin{pmatrix} aX_x & aY_x & t_x & aX_y & aY_y & t_y \end{pmatrix}^T$.
Исходя из такого вектора $\vec x$, матрица $A$, задающая нашу линейную систему уравнений будет иметь следующий вид:
$A = \begin{pmatrix} {v_1}_x & {v_1}_y & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & {v_1}_x & {v_1}_y & 1 \\ ... \\ {v_4}_x & {v_4}_y & 1 & 0 & 0 & 0 \\ 0 & 0 & 0 & {v_4}_x & {v_4}_y & 1 \end{pmatrix}$
А вектор $\vec b$ будет равен:
$\vec b = \begin{pmatrix} {m_1}_x \\ {m_1}_y \\ ... \\ {m_4}_x \\ {m_4}_y \end{pmatrix}$
Тогда, используя МНК, можем получить решение нашей системы: $\vec x = (A^T A)^{-1} A^T \vec b$. Отсюда получаем $\vec{aX}$, $\vec{aY}$ и $\vec{t}$.
Пробуем!
Affine
Красным рисуются координаты маркера, полученного от OpenCV. В целом работает, но если взять низкий угол по отношению к маркеру, то видно, что искажения работают неправильно. А так получилось, потому что для моделирования пространственных искажений маркера мы использовали аффинную матрицу. Важное свойство аффинной матрицы линии, полученные после преобразования, остаются параллельными. Однако обычно, смотря на параллельные линии на плоскости, мы видим такую картину:

Параллельные линии при проецировании сходятся в одной точке, т.е. становятся не параллельными. Значит аффинной матрицы нам недостаточно.


Direct linear transformation


Получить лучший результат нам поможет алгоритм, который называется Direct linear transformation.
А описать перспективные искажения поможет перспективная матрица размером 3x3: $H = \begin{pmatrix} h_{11} & h_{12} & h_{13} \\ h_{21} & h_{22} & h_{23} \\ h_{31} & h_{32} & h_{33} \end{pmatrix}$.
Перевод из евклидовых координат в однородные обозначим как $project$ и распишем полученное преобразование для наших $n$ точек ($i = 0...n$, а $n = 4$ в нашем случае):
$\vec{p_i} = project(H \cdot \begin{pmatrix} {v_i}_x \\ {v_i}_y \\ 1 \end{pmatrix}) = \begin{pmatrix} \frac{ H_{11} \cdot {v_i}_x + H_{12} \cdot {v_i}_y + H_{13}}{H_{31} \cdot {v_i}_x + H_{32} \cdot {v_i}_y + H_{33}} & \frac{ H_{21} \cdot {v_i}_x + H_{22} \cdot {v_i}_y + H_{23}}{H_{31} \cdot {v_i}_x + H_{32} \cdot {v_i}_y + H_{33}} \end{pmatrix}^T$
Представим наши уравнения в виде системы уравнений:
$\begin{cases} ... \\ {p_i}_x = \frac{ H_{11} \cdot {v_i}_x + H_{12} \cdot {v_i}_y + H_{13}}{H_{31} \cdot {v_i}_x + H_{32} \cdot {v_i}_y + H_{33}} \\ {p_i}_y = \frac{ H_{21} \cdot {v_i}_x + H_{22} \cdot {v_i}_y + H_{23}}{H_{31} \cdot {v_i}_x + H_{32} \cdot {v_i}_y + H_{33}} \\ .. \end{cases}$


$\begin{cases} ... \\ {p_i}_x \cdot (H_{31} \cdot {v_i}_x + H_{32} \cdot {v_i}_y + H_{33}) = H_{11} \cdot {v_i}_x + H_{12} \cdot {v_i}_y + H_{13} \\ {p_i}_y \cdot (H_{31} \cdot {v_i}_x + H_{32} \cdot {v_i}_y + H_{33}) = H_{21} \cdot {v_i}_x + H_{22} \cdot {v_i}_y + H_{23} \\ ... \end{cases}$


$\begin{cases} ... \\ H_{11} \cdot v_x + H_{12} \cdot v_y + H_{13} - H_{31} \cdot v_x \cdot {p_i}_x - H_{32} \cdot v_y \cdot {p_i}_x - H_{33} \cdot {p_i}_x = 0 \\ H_{21} \cdot v_x + H_{22} \cdot v_y + H_{23} - H_{31} \cdot v_x \cdot {p_i}_y - H_{32} \cdot v_y \cdot {p_i}_y - H_{33} \cdot {p_i}_y = 0 \\ ... \end{cases}$


Представим матрицу $H$ как вектор $\vec{h} = \begin{pmatrix} H_{11} & H_{12} & H_{13} & H_{21} & H_{22} & H_{23} & H_{31} & H_{32} & H_{33} \end{pmatrix}^T$.
Теперь систему уравнений можно перевести в матричный вид: $A = \begin{pmatrix} ... \\ v_x & v_y & 1 & 0 & 0 & 0 & - v_x \cdot {p_i}_x & - v_y \cdot {p_i}_x & - {p_i}_x \\ 0 & 0 & 0 & v_x & v_y & 1 & - v_x \cdot {p_i}_y & - v_y \cdot {p_i}_y & - {p_i}_y \\ ... \end{pmatrix}$
$A \cdot \vec{h} = \vec{0}$
Получили однородную систему уравнений в которой нам неизвестен вектор $\vec{h}$ (т.е. матрица $H$). Однородную систему уравнений мы не сможем решить при помощи метода наименьших квадратов. Однако одно решение найти несложно это нулевой вектор $\vec{h} = \vec{0}$. Но такое решение нас не интересует. Если же система имеет какое-то ненулевое решение, то мы получаем сразу бесконечное множество решений. Для примера пусть мы уже имеем ненулевое решение вектор $\vec{h}$: $A \cdot \vec{h} = \vec{0}$. Теперь умножим вектор $\vec{h}$ на любой ненулевой скаляр $s$, система уравнений все равно останется справедливой, а $\vec{h} \cdot s$ также будет еще одним решением системы: $A \cdot \vec{h} \cdot s = \vec{0}$. Так как мы работаем с однородными координатами, то умножение на скаляр ничего не меняет. Тем не менее, чтобы не работать сразу со множеством решений, будем искать только одно пусть длина вектора будет равна единицы $|\vec{h}| = 1$.


Сингулярное разложение и решение однородных систем уравнений


Решить однородную систему уравнений можно при помощи сингулярного разложения матрицы (singular value decomposition). Сингулярное разложение это разложение вида: $svd(M) = U \cdot W \cdot V^T$, где $U$ и $V$ ортонормальные матрицы, а $W$ диагональная, при этом диагональные элементы больше либо равны нулю и располагаются в порядке убывания (сверху вниз). Если воспринимать матрицу как операцию трансформации векторов, то это разложение будет декомпозицией этой трансформации на три последовательных: поворот, масштабирование по осям, второй поворот. Матрицы $U$ и $V$ это ортонормальные матрицы, а значит можно назвать их матрицами поворота. Только следует учитывать, что $|U| = \pm 1$ и $|V| = \pm 1$, а значит, например, если $M$ имеет размер 3x3, то тройка базисных векторов и этих матриц поворота могут быть левосторонними, а не правосторонними как обычно.
Не будем останавливаться на том, как вычислять это разложение. В более-менее полноценных математических фреймворках оно будет реализовано. Например Eigen.
Воспользуемся этим разложением для полученной выше матрицы $A$: $svd(A) = U \cdot W \cdot V^T$. Лучшее решение для нашей системы уравнений $A \cdot \vec{h} = \vec{0}$ это последняя строка матрицы $V$: $\vec{h} = V_{n}$. А так как матрица $V$ ортонормальная, то длина вектора, составленного из любого его столбца, будет равна как раз единице.


Доказательство

В процессе вычислений у нас всегда есть погрешность, а это значит после $A \cdot \vec{h}$ мы можем получить не нулевой вектор, хотя его компоненты должны быть близки к нулю. Нужно минимизировать получаемую погрешность, а для ее оценки воспользуемся обычной для таких вещей суммой квадратов: $\vec{e} = \sum{{e_i}^2} = \vec{e}^T \vec{e} \rightarrow min$.
$\vec{e} = H \cdot \vec{h} \Rightarrow \vec{e}^T \vec{e} = (H \cdot \vec{h})^T (H \cdot \vec{h}) = (U \cdot W \cdot V^T \cdot \vec{h})^T (U \cdot W \cdot V^T \cdot \vec{h}) \rightarrow min$
$E = \vec{e}^T \vec{e} = \vec{h}^T \cdot V \cdot W \cdot U^T \cdot U \cdot W \cdot V^T \cdot \vec{h}$, так как $U$ ортонормальная матрица, то $U^T \cdot U = I$. Так как $W$ диагональная матрица с ненулевыми элементами, расположенными по убыванию, то и $(W^T \cdot W)$ также будет диагональной матрицей с ненулевыми элементами, расположенными по убыванию это будет эквивалентно возведению в квадрат диагональных элементов матрицы. Обозначим $W^2 = W^T \cdot W$.
$E = \vec{e}^T \vec{e} = \vec{h}^T \cdot V \cdot W^2 \cdot V^T \cdot \vec{h} \rightarrow min$
Обозначим $\vec{c} = V^T \cdot \vec{h}$, заметим, что $V$ не сохраняет длину вектора $\vec{h}$, значит $|\vec{c}| = 1$:
$E = \vec{c}^T \cdot W^2 \cdot \vec{c} \rightarrow min$.
Представим диагональ матрицы $W$ как вектор $\vec{w}$. Тогда $E = \vec{c}^T \cdot W^2 \cdot \vec{c} = \sum{{c_i}^2 \cdot {w_i}^2} \rightarrow min$
Теперь подумаем чему должен быть равен $\vec{c}$, чтобы $E$ стало минимальным. Так как значения в $\vec{w}$. Судя по $\sum{{c_i}^2 \cdot {w_i}^2}$, наибольший вклад должен вносить последняя компонента вектора $\vec{w}$. Так как $|\vec{c}| = 1$, то выходит $\vec{c} = \begin{pmatrix} 0 & ... & 0 & 1 \end{pmatrix}^T$.
$\begin{pmatrix} 0 & ... & 0 & 1 \end{pmatrix}^T = V^T \cdot \vec{h} \Rightarrow \vec{h} = V \cdot \begin{pmatrix} 0 & ... & 0 & 1 \end{pmatrix}^T$.
Из описанного выше делаем вывод, что $\vec{h} = V_n$ это последний столбец матрицы $V$.


Возвращаемся к нашей системе уравнений $A \cdot \vec{h} = \vec{0}$. Решаем ее описанным выше способом, получаем вектор $\vec{h}$. Затем из этого уже получаем искомую матрицу $H$. Пробуем:


Homography


Как мы видим стало заметно лучше и искажения уже похожи на правду.
Соответствующий код для аффинных и перспективных искажений можно найти в тестах проекта sonar/tests/test_marker_transform


Pinhole camera model


Хорошо, мы получили какую-то матрицу для преобразования изображений, но в идеале хотелось бы получить координаты камеры в пространстве. Чтобы их найти, построим математическую модель, которая будет описывать как точки мирового пространства проецируются на изображение камеры.
В качестве модели формирования изображения возьмем центральную проекцию. Суть центральной проекции состоит в том, что все точки, которые формируют выходное изображение, формируют лучи, сходящиеся в одной точке центре проекции. Примерно так лучи себя и ведут в модели глаза или в цифровой камере.
Проецировать точки будем на плоскость, которая и будет формировать наше изображение. В качестве такой плоскости возьмем плоскость, заданную таким условием $z = 1$. В таком случае наша камера будет сонаправлена с осью $Z$:


Зададим параметрически формулу луча, формирующего точку на проекции: $\vec{r} = \vec{v} \cdot t$, где $\vec{r}$ координаты точки луча, $\vec{v}$ координаты проецируемой точки, а $t$ является свободным параметром. Если луч не лежит на нашей плоскости и не параллелен ей, то он будет пересекать ее только в одной точке. При этом мы знаем, что $r_z = 1$.
$r_z = v_z \cdot t \Rightarrow t = \frac{1}{v_z}$
$\vec{r} = \vec{v} \cdot t = \vec{v} \cdot \frac{1}{v_z} = \begin{pmatrix} \frac{v_x}{v_z} & \frac{v_y}{v_z} & 1\end{pmatrix}$
Получаем координаты спроецированной на плоскость точки: $\vec{p} = \begin{pmatrix} \frac{v_x}{v_z} & \frac{v_y}{v_z}\end{pmatrix}$. Ничего не напоминает? Это формула перевода из однородных координат в двумерные евклидовы. Получается, что трехмерные координаты можно воспринимать как однородные координаты, соответствущие двумерным евклидовым координатам на плоскости. А перевод из однородных координат в двумерные евклидовы координаты выполняет центральную проекцию. Можно сказать, что трехмерные евклидово пространство эквивалентно двумерному проекционному.
После проецирования точки на плоскость можно переводить ее в координаты изображения. Обычно координаты изображения определены следующим образом, где $width$ и $height$ высота и ширина изображения:

Пусть у нас для камеры задан угол обзора по горизонтали $angle_x$.
Масштабируем координату $x$ точки $p$ так, чтобы расстояние от крайней левой видимой точки камеры до крайней правой было равно ширине изображения. При проецировании имеем такую картину:
Image coordinates
Здесь $A, C$ левая и правые крайние точки, $B$ точка между ними, у которой координата $x = 0$, а $z = 1$. Угол $\angle{AOC} = angle_x$. При этом имеем треугольник $AOB$, у которого угол $\angle{ABO} = 90^{\circ}$, а угол $\angle{AOB} = \frac{angle_x}{2}$, так как $OB$ делит угол $\angle{AOC}$ пополам. Длина $OB$ равна 1. Отсюда через тангенс угла $\angle{AOB}$ найдем длину $AB$ $\tan{\angle{AOB}} = \tan{\frac{angle_x}{2}} = \frac{AB}{OB} = AB$. А уже отсюда $AC = 2 \cdot AB = 2 \cdot \tan{\frac{angle_x}{2}}$.
После проецирования сводим диапазон координаты $x$ $[- \tan{\frac{angle_x}{2}}, \tan{\frac{angle_x}{2}}]$ к диапазону $[- \frac{width}{2}, \frac{width}{2}]$ умножением на коэффициент:
$f_x = \frac{width}{2 \cdot \tan{\frac{angle_x}{2}}}, \space x' = x \cdot f_x$
Чтобы сохранить пропорции изображения, то координату $y$ мы должны масштабировать на ту же величину. Но на выходном изображении ось $Y$ направлена в обратную сторону (вниз). Чтобы отразить ось, умножим коэффициент масштаба по оси $Y$ на $-1$. Получаем такое преобразование:
$f_y = - f_x, \space , \space \space y' = y \cdot f_y$
$\vec{p'} = \begin{pmatrix} f_x \cdot p_x & f_y \cdot p_y \end{pmatrix}^T$
А координаты видимого изображения получили такой диапазон:
Image range
Получилось так, что центр изображения нулевая точка. Чтобы получить нужные на координаты на изображении, сместим крайнюю левую точку в центр:
$\vec{p'} = \begin{pmatrix} f_x \cdot p_x & f_y \cdot p_y \end{pmatrix}^T + \begin{pmatrix} \frac{width}{2} & \frac{height}{2} \end{pmatrix}^T$
Теперь центральная точка изображения будет иметь координаты $\begin{pmatrix} \frac{width}{2} & \frac{height}{2} \end{pmatrix}^T$, как ей и положено. Эта центральная называется оптическим центром, обозначим ее как $\vec{c} = \begin{pmatrix} \frac{width}{2} & \frac{height}{2} \end{pmatrix}^T$. И финальная формула преобразования в координаты изображения:
$\vec{p'} = \begin{pmatrix} f_x \cdot p_x & f_y \cdot p_y \end{pmatrix}^T + \vec{c}$, где $f_x = \frac{width}{2 \cdot \tan{\frac{angle_x}{2}}}, \space f_y = - f_x$, а $\vec{c} = \begin{pmatrix} \frac{width}{2} & \frac{height}{2} \end{pmatrix}^T$.
Также, как мы делали до этого, можно упростить преобразование, работая сразу с однородными координатами точки и трансформируя все выражения в матричную форму:
Пусть $K = \begin{pmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix}$, тогда $\vec{p'} = project(K \cdot \begin{pmatrix} p_x \\ p_y \\ 1\end{pmatrix})$.
Возвращаемся немного назад. Вспоминаем, что трехмерном пространстве это проективное пространство для плоскости, на которую мы проецируем. Т.е. трехмерные координаты это однородные координаты. Тогда формула перевода из трехмерного пространства в координаты изображения при центральной проекции принимает вид:
$\vec{p'} = project(K \cdot \begin{pmatrix} v_x \\ v_y \\ v_z \end{pmatrix}) = project(K \cdot \vec{v})$
Матрицу $K$ называют внутренними параметрами камеры (intrinsic camera parameters).
Эта марица может в себе иметь еще параметр $s_{skew}$:
$K = \begin{pmatrix} f_x & s_{skew} & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{pmatrix}$.
Эффект от его применения чем схож эффектом от rolling shutter. На практике обычно этот параметр не учитывается и остается равно нулю.
Следует учитывать, что формулы вычисления параметров $f_x, f_y, c_x, c_y$ справедливы, если мы хотим перевести именно в пиксельные координаты изображения. Но других случаях нам может быть нужно перевести в другую координатную систему, например, в текстурные координаты, где значения координат $x$ и $y$ меняются в диапазоне $[0, 1]$. Тогда эти параметрами будут уже другими.
Погрешности на производстве при сборки камер немного сказываются и на получаемых с них изображениях, оптический центр смещается немного от центра изображения, а каждая камера имеет слегка отличающиеся внутренние параметры. Поэтому каждая камера калибруется индивидуально. Реализацию калибровки можно найти в OpenCV.
В API Android OS и iOS можно найти методы получения внутренних параметров камеры, заданные производителем.
Сейчас же предлагаю просто считать оптическим центром центр изображения, а параметры $f_x, f_y$ подбирать "на глаз". Для начала хватит и такого варианта.


Перемещение камеры в пространстве


Все относительно и хотя наблюдатель перемещается в пространстве, а мир стоит на месте, мы также можем сказать, что движется мир, а наблюдатель остается на месте. Меняется только система координат, в которой происходит движение. Значит выберем ту, которая для нас удобнее. А удобнее нам оставить локальную систему координат на месте, и все остальное пусть движется вокруг нее. Движение у нас определяется поворотом и смещением матрицей поворота $R$ и вектором смещения $\vec{t}$. Также считаем, что у нас есть внутренние параметры камеры, заданные матрицей $K$. Таким образом мы можем разбить процесс вычисления координат на изображении из мировых координат на два этапа:


  1. Перевод мировых координат $\vec{v}$ в локальные координаты камеры $\vec{v'}$ при помощи $R$ и $\vec{t}$: $\vec{v'} = R \cdot \vec{v} + \vec{t}$
  2. Перевод из локальных координат камеры в пиксельные координаты изображения при помощи матрицы $K$: $\vec{p} = project(K \cdot \vec{v'})$

Как мы уже знаем, матрицу $R$ и вектор $\vec{t}$ можно объединить в одну матрицу, только для того, чтобы ее применить придется перевести $\vec{v}$ в однородные координаты:
$\begin{pmatrix} {v'}_x \\ {v'}_y \\ {v'}_z \\ 1 \end{pmatrix} = \begin{pmatrix} R_{11} & R_{12} & R_{13} & t_x \\ R_{21} & R_{22} & R_{23} & t_y \\ R_{31} & R_{32} & R_{33} & t_z \\ 0 & 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} v_x \\ v_y \\ v_z \\ 1 \end{pmatrix}$
Мы знаем, что ${v'}_w = 1$ и нам необязательно ее вычислять, поэтому можем чуть сократить формулу:
$\begin{pmatrix} {v'}_x \\ {v'}_y \\ {v'}_z \end{pmatrix} = \begin{pmatrix} R_{11} & R_{12} & R_{13} & t_x \\ R_{21} & R_{22} & R_{23} & t_y \\ R_{31} & R_{32} & R_{33} & t_z\end{pmatrix} \begin{pmatrix} v_x \\ v_y \\ v_z \\ 1 \end{pmatrix}$
Более короткая версия этой же формулы:
$\vec{v'} = [R | \vec{t}] \begin{pmatrix} \vec{v} \\ 1 \end{pmatrix}$
Теперь мы можем объединить два этапа в одну формулу:
$\vec{p} = project(K \cdot [R | \vec{t}] \begin{pmatrix} \vec{v} \\ 1 \end{pmatrix})$
К этому моменту можно нас поздравить мы построили математическую модель проецирования изображения камеры. Опираясь на нее далее мы сможем понять, что происходит в видеопотоке. А точнее нашей основной задачей станет поиск параметров $R$ и $\vec{t}$. Эти параметры называют внешними параметрами камеры (extrinsic camera parameters). Так как мы предположили, что камера остается на месте, а двигается окружающий мир, то $R$ это не матрица поворота самой камеры, а вектор $\vec{t}$ не координаты позиции камеры. Матрица $R$ это поворот из мировых координат в локальные координаты камеры, а когда говорят о повороте объекта, то имеют ввиду поворот из локальных координат в мировые. Поэтому поворот камеры это $R_{camera} = R^{-1}$. Вектор $\vec{t}$ вектор смещения камеры. Позицию камеры в мировых координатах можем найти следуя такой логике: при переводе в локальные координаты позиция камеры должна стать нулевым вектором $\vec{0} = R \cdot \vec{pos_{camera}} + \vec{t} \space \Rightarrow \space (\vec{0} - \vec{t}) = R \cdot \vec{pos_{camera}} \space \Rightarrow \space \vec{pos_{camera}} = - R^{-1} \cdot \vec{t}$.


Получаем координаты камеры от маркера


Возвращаемся к предыдущему примеру. В нем мы нашли перспективную матрицу $H$, описывающую преобразования наших точек:
$\vec{p_i} = project(H \cdot \begin{pmatrix} {v_i}_x \\ {v_i}_y \\ 1 \end{pmatrix})$
Попробуем разобраться как эта формула соотноситься с нашей моделью:
$\vec{p} = project(K \cdot [R | \vec{t}] \begin{pmatrix} \vec{v} \\ 1 \end{pmatrix}) = project(K \cdot \begin{pmatrix} R_{11} & R_{12} & R_{13} & t_x \\ R_{21} & R_{22} & R_{23} & t_y \\ R_{31} & R_{32} & R_{33} & t_z \end{pmatrix} \begin{pmatrix} v_x \\ v_y \\ v_z \\ 1 \end{pmatrix})$
Точки маркера в нашем случае задаются двумерными координатами, так как они все лежат на плоскости, т.е. $v_z = 0$. А так как $v_z = 0$, то столбец $\begin{pmatrix} R_{13} \\ R_{23} \\ R_{33} \end{pmatrix}$ не вносит вклада в результат, а значит его можно вычеркнуть, сократив формулу:
$\vec{p} = project(K \cdot \begin{pmatrix} R_{11} & R_{12} & t_x \\ R_{21} & R_{22} & t_y \\ R_{31} & R_{32} & t_z \end{pmatrix} \begin{pmatrix} v_x \\ v_y \\ 1 \end{pmatrix})$
Пусть $H' = K \cdot \begin{pmatrix} R_{11} & R_{12} & t_x \\ R_{21} & R_{22} & t_y \\ R_{31} & R_{32} & t_z \end{pmatrix}$, тогда получаем:
$\vec{p_i} = project(H' \cdot \begin{pmatrix} {v_i}_x \\ {v_i}_y \\ 1 \end{pmatrix})$
Получили идентичную формулу. Но сделать вывод, что $H' = H$ нельзя. При вычислении матрицы $H$ мы получили целое множество решений и выбрали из этого множества удобное для нас. При работе с однородными координатами умножение на скаляр не играет роли, но в нашей модели мы уже оперируем трехмерными евклидовыми координатами. Поэтому $s \cdot H' = H$. Отсюда:
$H = s \cdot K [R | \vec{t}] = K \cdot \begin{pmatrix} s \cdot R_{11} & s \cdot R_{12} & s \cdot t_x \\ s \cdot R_{21} & s \cdot R_{22} & s \cdot t_y \\ s \cdot R_{31} & s \cdot R_{32} & s \cdot t_z \end{pmatrix}$.
Пусть $T = K^{-1} \cdot H = \begin{pmatrix} s \cdot R_{11} & s \cdot R_{12} & s \cdot t_x \\ s \cdot R_{21} & s \cdot R_{22} & s \cdot t_y \\ s \cdot R_{31} & s \cdot R_{32} & s \cdot t_z \end{pmatrix} = K^{-1} \cdot H$
Первые два столбца полученной матрицы составляют два базисных вектора матрицы поворота. Длины этих векторов должны быть равны единице. Отсюда мы можем найти параметр $s = |\begin{pmatrix} T_{11} & T_{21} & T_{31} \end{pmatrix}^T| = |\begin{pmatrix} T_{12} & T_{22} & T_{32} \end{pmatrix}^T|$. Из-за погрешностей вычислений первый и второй вариант вычислений будут давать немного разные варианты, поэтому возьмем среднее между ними: $s = \frac{|\begin{pmatrix} T_{11} & T_{21} & T_{31} \end{pmatrix}^T| + |\begin{pmatrix} T_{12} & T_{22} & T_{32} \end{pmatrix}^T|}{2}$.
Теперь вычислим два базисных вектора матрицы поворота:
$\vec{r_1} = \frac{\begin{pmatrix} T_{11} & T_{21} & T_{31} \end{pmatrix}^T}{|\begin{pmatrix} T_{11} & T_{21} & T_{31} \end{pmatrix}^T|}$
$\vec{r_2} = \frac{\begin{pmatrix} T_{12} & T_{22} & T_{32} \end{pmatrix}^T}{|\begin{pmatrix} T_{12} & T_{22} & T_{32} \end{pmatrix}^T|}$
$R = \begin{pmatrix} \vec{r_1} & \vec{r_2} & \vec{r_1} \times \vec{r_2} \end{pmatrix}$
$\vec{t} = \frac{\begin{pmatrix} T_{13} & T_{23} & T_{33} \end{pmatrix}^T}{s}$
$R_{camera} = R^{-1}, \space \vec{pos_{camera}} = - R^{-1} \cdot \vec{t}$
Итак, мы получили координаты камеры в пространстве. Теперь можем передать эти координаты трехмерному движку, чтобы он вывел трехмерные модели поверх реального изображения. Что и было реализовано в плагине для Unity. Видео, записанное с android-сматфона:



Точки маркера, на которых мы основываем нашу мировую систему координат в наших вычислениях и которая одновременно с этим является нашим полом, находятся в плоскости $XY$. У Unity же пол является плоскостью $XZ$. Чтобы повернуть пол в нужные нам координаты, я воспользовался встроенными в Unity средствами создал пустой объект, назначил его "родителем" камеры, и повернул так, как мне нужно. Таким образом, мне самому не пришлось делать дополнительных вычислений. Также важно сопоставить характеристики виртуальной камеры и реальной. Пример этого можно увидеть в коде плагина.


Нужно еще отметить, что описать преобразование точек при помощи перспективной матрицы размером 3x3 можно только в случае, когда идет отображение точек с одной плоскости на другую. Такая матрица называется матрицей гомографии (homography matrix). В нашем случае шло отображение с плоскости маркера на плоскость проекции. Но при работе трехмерными координатами алгоритм direct linear transformation задействовать уже не получится и нужно будет искать другие способы.


Заключение


Код, реализующий все примеры выше можно найти в проекте на гитхаб в ветке article2.
Точность пока оставляет желать лучшего. Более того, маркеры являются не самом удобным способ взаимодействия с дополненной реальностью, поэтому далее будем пытаться отойти от их использования и улучшать точность работы.

Подробнее..

Подборка статей о машинном обучении кейсы, гайды и исследования за октябрь 2020

02.11.2020 20:06:40 | Автор: admin


В октябре традиционно в центре внимания вновь GPT-3. С моделью от OpenAI связано сразу несколько новостей хорошая и не очень.

Сделка OpenAI и Microsoft


Начать придется с менее приятной компания Майкрософт завладела эксклюзивными правами на GPT-3. Сделка предсказуемо вызвала негодование Элон Маск, основатель OpenAI, а ныне бывший член совета директоров компании, заявил, что Майкрософт по сути захватили OpenAI.

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

Майкрософт в свое оправдание утверждают, что не собираются ограничивать доступ к API модели. Таким образом, по факту ничего не изменилось до этого OpenAI тоже не публиковала код, но если раньше даже компаниям-партнерам позволяли работать с GPT-3 только через API, то сейчас эксклюзивные права на использование появились у Microsoft.

ruGPT3 от Сбера


Теперь к более приятной новости исследователи из Сбера выложили в открытый доступ модель, которая повторяет архитектуру GPT-3 и основана на коде GPT-2 и, самое главное, обучена на русскоязычном корпусе.

В качестве датасета для обучения использовалась коллекция русской литературы, данные Википедии, снапшоты новостных и вопросно-ответных сайтов, материалы порталов Pikabu, 22century.ru banki.ru, Omnia Russica. Разработчики также включили данные с GitHub и StackOverflow, чтобы научить генерировать и программный код. Общий объем очищенных данных более 600 Гб.

Новость однозначно хорошая, но есть пара оговорок. Эта модель похожа на GPT-3, но не является ей. Сами авторы признают, что она в 230 раз меньше самой большой версии GPT-3, у которой 175 млрд весов, а значит, результаты бенчмарков повторить точно не сможет. То есть, не рассчитывайте, что эта модель будет писать неотличимые от журналистских тексты.

Также стоит учитывать, что описанная архитектура GPT-3 может отличаться от реальной реализации. Сказать точно можно только ознакомившись с тренировочными параметрами, и если раньше веса публиковали с задержкой, то в свете последних событий их можно не ждать.

Дело в том, что от количества тренировочных параметров зависит бюджет проекта, и по оценкам экспертов, обучение GPT-3 обошлось не менее 10 млн. долларов. Таким образом, воспроизвести работу OpenAI могут только крупные компании c сильными ML-специалистами и мощными вычислительными ресурсами.

Отчет State of AI 2020


Все вышесказанное подтверждает выводы третьего ежегодного отчета о текущем состоянии дел в области машинного обучения. Натан Бенайх и Ян Хогарт, инвесторы которые специализируются на ИИ-стартапах, опубликовали подробную презентацию, которая охватывает вопросы технологий, кадров, применения в промышленности и тонкости правового поля.

Из любопытного целых 85% исследований публикуются без исходного кода. Если коммерческие организации можно оправдать тем, что код часто вплетен в инфраструктуру проектов, то что говорить про исследовательские институты и некоммерческие компании вроде DeepMind и OpenAI?

Также сказано, что увеличение датасетов и моделей приводит к увеличению бюджетов, и с учетом того, что область машинного обучения стагнирует, каждый новый прорыв требует несоразмерно больших бюджетов (сравните размер GPT-2 и GPT-3), а значит, позволить это себе смогут только крупные корпорации.

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

Не станем и дальше сгущать краски, все-таки встречаются и хорошие истории, иначе бы этой подборки не было.

Открытые мультиязычные модели от Google и Facebook


mT5


Google опубликовали исходный код и датасет семейства мультиязычных моделей T5. Из-за шумихи, связанной с OpenAI, эта новость прошла практически незамеченной, несмотря на внушительных масштаб самая крупная модель насчитывает 13 млрд параметров.

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

M2M-100


Facebook тоже не отстают и выложили мультиязычную модель, которая по их заявлениям позволяет напрямую, без промежуточного языка, переводить 100x100 языковых пар.

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

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

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



Достижения в области видеоконференций


В октябре появилось сразу несколько интересных новостей от Nvidia.

StyleGAN2


Во-первых, опубликовали обновления для StyleGAN2. Низкоресурсная архитектура модели теперь дает улучшенные показатели на датасетах с менее чем 30 тысячами изображений. В новой версии появилась поддержка смешанной точности: обучение ускорилось в ~1.6x раз, инференс в ~1.3x раз, потребление GPU снизилось в ~1.5x раза. Также добавили автоматический выбор гиперпараметров модели: готовые решения для датасетов разного разрешения и разного количества доступных графических процессоров.

NeMo


Neural Modules открытый набор инструментов, который помогает быстро создавать, обучать, и файнтюнить разговорные модели. NeMo состоит из ядра, которое обеспечивает единый look and feel для всех моделей и коллекций, состоящих из сгруппированных по области применения модулей.

Maxine


Другой анонсированный продукт, скорее всего внутри использует обе вышеназванные технологии. Платформа для видеозвонков Maxine объединяет в себе целый зоопарк ML-алгоритмов. Сюда входит уже привычные улучшение разрешения, устранение шумов, удаление фона, но также коррекция взгляда и теней, восстановление картинки по ключевым чертам лица (то есть дипфейки), генерация субтитров и перевод речи на другие языки в режиме реального времени. То есть почти все, что ранее встречалось по отдельности, Nvidia объединила в один цифровой продукт. Сейчас можно подать заявку на ранний доступ.

Новые разработки Google


Из-за карантина в этому году идет настоящая гонка за лидерство в области видеоконференций. Google Meet поделились кейсом создания своего алгоритма для качественного удаления фона на основе фреймворка от Mediapipe (который умеет отслеживание движение глаз, головы и рук).

Google также запустил новую функцию для сервиса YouTube Stories на iOS, который позволяет улучшать качество речи. Это интересный кейс, потому что для видео доступно в разы больше энхесеров, чем для аудио. Данный алгоритм отслеживает и фиксирует корреляции между речью и визуальными маркерами, вроде мимики лица, движения губ, которые затем использует, чтобы отделить речь от фоновых звуков, в том числе голосов от остальных говорящих.

Еще компания представила новую попытку в сфере распознования языка жестов.

Говоря о ПО для видеоконференций, стоит также упомянуть о новых дипфейк-алгоритмах.

MakeItTalk


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



BeyondBelief


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



Hi-Fi 3D Face


Нейросеть генерирует высококачественную 3D-модель лица человека по фотографиям. На вход модель принимает короткое видео с обычной RGB-D камеры, а на выходе отдает сгенерированную 3D-модель лица. Код проекта и 3DMM-модель находятся в открытом доступе.



SkyAR


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

Пайплайн модели поэтапно решает ряд задач: сетка матирует небо, отслеживает движущиеся объекты, оборачивает и перекрашивает изображение под цветовую гамму скайбокса.



Sea-thru


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

Модель от MIT для диагностики Covid-19


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

Модель обучена на десятках тысяч аудиозаписей образцов кашля. Как заявляют в MIT, алгоритм идентифицирует людей, у которых было подтверждено наличие Covid-19 с точностью 98,5%.

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

На этом все, спасибо за внимание!
Подробнее..

Развитие ARKit в этом году и новая возможность в ARKit 4 Location Anchors

28.06.2020 16:16:57 | Автор: admin

В последние годы я очень активно работаю с сфере разработки нативных игр под платформу Apple и интересуюсь возможной интеграцией игровых процессов в AR. Поэтому стараюсь следить за всеми обновлениями которые ежегодно анонсируются на WWDC. Хотя за последние годы не было никаких обновлений для SpriteKit, SceneKit и GameplayKit, но Apple продолжает активно обновлять и продвигать ARKit и RealityKit которые можно интегрировать с этими игровыми инструментами.

Хотя Apple мало уделила внимания дополненной реальности во время презентации на WWDC, но выпущенная на этой неделе новая версия комплекта программного обеспечения для разработчиков (SDK), действительно может оказаться весьма полезной и интересной для всех, кто занимается созданием AR-приложений. В ARKit 4 представлены новые возможности для разработчиков, которые доступны на всех iOS/iPadOS устройствах с процессором A12 Bionic и выше.

Как можно видеть, за последние годы, инвестиционные вложения Apple в развитие AR-технологии оказались вполне оправданными, поскольку, используя компьютерную визуализацию, машинное обучение и функцию определения движения теперь можно создавать более сложный мир интерактивной компьютерной графики, с помощью стационарной камеры. Развитие данной технологии оказалась даже более успешным и результативным, чем попытки конкурентов создать систему виртуальной реальности на базе смартфона.

Инструмент также добавляет новые важные возможности обнаружения глубины, доступные на устройствах, оснащенных Apple LiDAR Scanner (в настоящее время доступно только в последних iPad Pro). Но, пожалуй, самое важное, что имеется в ARKit 4 это привязка к местоположению, которая позволяет разработчикам размещать виртуальный объект в определенном месте в реальном мире.

LiDAR: усовершенствованная система дистанционного отслеживания


Apple представила API Scene Geometry в ARKit 3.5 после выпуска линейки iPad Pro со сканерами LiDAR. Я ожидаю, что Apple добавит сканеры LiDAR в свои iPhone следующего поколении, которые планирует выпустить к концу этого года, так что именно эта функция, скорее всего, будет самой обсуждаемой во время следующего запуска.

Новый API Scene Geometry позволяет собирать информацию с помощью LiDAR-сканера и на базе полученных данных создавать топологическую карту окружающего мира. Эта информация может использоваться для идентификации определенных физических объектов, размещения их на сцене и создания игровой симуляции взаимодействия между объектами реального и виртуального мира.

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

В iOS 14 Apple расширяет возможности iOS устройств при поддержке сканера LiDAR, чтобы лучше определять расстояние между ними и объектами в виртуальной среде. Машинное обучение позволяет объединять цветное RGB-изображение, полученное с широкоугольной камеры устройства, с показателями глубины со сканера LiDAR для создания плотной глубокой картины. Эти данные глубины обновляются с частотой 60hz, что позволяет iOS не просто отобразить объекты на сцене, а обеспечить их размещение в реальном времени в виртуальной среде.

LiDAR также позволяет усовершенствовать функцию, называемую Ray Casting, которая представляет собой метод рендеринга, использующий вычислительную геометрию для создания трехмерного пространства на двухмерной плоскости. К тому же, Apple предоставила возможности отслеживания объектов еще в предыдущей версии ARKit, но их применение было доступно только для устройств с фронтальной камерой True-Depth. ARKit 4 существенно расширяет эти возможности, сделав доступной функцию отслеживания лица для всех устройств, оснащенных процессором A12 Bionic или более поздней версии, включая недавно выпущенный iPhone SE нового поколения. Отслеживание лиц позволяет разработчикам создавать приложения, которые помещают изображение человека поверх виртуального контента, и наблюдать за его выражением в режиме реального времени.


Location Anchors


Безусловно, возможности, предоставляемые сканером LiDAR весьма впечатляюще, на фоне всех новых функций, анонсированных Apple. Новая технология Location Anchors в ARKit 4 теперь выводит AR-контент более высокого качества на улицу, позволяя разработчикам задавать долготу и широту для размещения виртуальных объектов. Затем ARKit 4 использует эти координаты и данные из Apple Maps для размещения AR объекта в определенном месте, на определенной высоте в реальном мире.

Процесс управления AR-интерфейсом следующего поколения получил название Location Anchors. Он позволяет точно зафиксировать ваше устройство по отношению к окружающей среде и, по утверждениям Apple, это можно выполнять значительно точнее, чем с помощью GPS. Весь этот процесс управляется на основе передовых методов машинного обучения локально на вашем устройстве.

В результате, когда разработчик помещает виртуальный объект в реальный мир, например, виртуальную скульптуру на оживленной площади, данный объект будет сохраняться и отображаться в этом месте таким образом, чтобы каждый, кто просматривает его с помощью AR-устройства Apple, мог его увидеть в данной локации. Location Anchors вначале появится в крупных городах, таких как Лос-Анджелес, Сан-Франциско, Чикаго, Майами и Нью-Йорк, а затем, уже в конце этого лета, станет доступно еще несколько городов.
Пример работы Location Anchor из WWDC сессии


Важность Location Anchors могут оценить многие разработчики и это демонстрирует далеко идущие планы Apple в развитии устройств и технологий, связанных с AR. Сегодня многие стартапы, ориентированные на технологии дополненной реальности, пытаются занять инновационный сегмент рынка, чтобы развивать ее функциональные возможности, а Apple спокойно запустила множество новых функций в ARKit 4 на этой неделе, причем, без всякой помпезности.

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

Как работает Location Anchors


С ARKit 4 теперь без проблем можно привязать AR-контент к определенному месту в реальном мире, просто задав координаты. Приложения на основе AR, которые ранее базировались на распознавании изображений или сканировании кода для запуска действий в определенном месте, теперь имеют возможность обновляться в реальном времени и использовать преимущества привязки к местоположению.

В рамках преобразования базы данных Apple Maps, компания длительное время собирала данные с камер и 3D LiDAR на городских улицах в разных уголках мира. Для привязки к местоположению ARKit загружает виртуальную карту, окружающую ваше устройство из облака и сопоставляет ее с данными камеры. Используя GPS, ARKit может быстро и точно определить ваше местоположение в реальном мире. Вся обработка информации происходит при помощи технологии машинного обучения прямо на вашем устройстве.

Доступность


Как я уже отмечал, функция Location Anchors или, другими словами Geo-Tracking, поддерживается на всех устройствах с GPS и чипом A12 и более новых моделях. Поскольку функция требует, чтобы эта область уже была ранее нанесена на карту Apple, она доступна только в определенных городах США. По состоянию на июнь 2020 года, в зоне ее поддержки оказалось только пять городов, но я очень надеюсь, что далее Apple будет расширять зону поддержки.

Geo-Tracking базируется на новой ARConfiguration, получившей название ARGeoTrackingConfiguration, которая позволяет легко проверять наличие совместимых устройств и их доступность.

Вначале следует проверить поддерживает ли ваше устройство данную фичу:
guard ARGeoTrackingConfiguration.isSupported else { return }

Теперь вы можете проверить, находится ли устройство в поддерживаемом городе. Если это так, запустите конфигурацию геотрекинга в ARView. Если вы используете RealityKit, вы не можете применить автоматическую настройку, поэтому придется запустить ее вручную.
ARGeoTrackingConfiguration.checkAvailability { available, error in    guard available else { return }    arView.session.run(ARGeoTrackingConfiguration())}

Важное примечание. Функция checkAvailability требует наличия сетевого подключения для загрузки AR ресурсов. Available будет false, если устройство не подключено к интернету.

Построение Location Anchors


Как же происходит функционирование Location Anchors? Ведь известно, что ARKit пользуется собственной системой координат для определения относительного положения устройства, в то время как в реальном мире местоположение описывается с широтой и долготой. В геотрекинге эта проблема решена созданием единой системы координат. Оси ARKit автоматически совпадают с компасом, где ось X указывает направление на восток, а ось Z на юг.

Все, что вам нужно знать для создания ARGeoAnchor это отдельные GPS-координаты. Вот как можно создать привязку, например, для определения местоположения моста Golden Gate Bridge. Для большей надежности используем систему координат с точностью до десятичных знаков.
let coordinate = CLLocationCoordinate2D(latitude: 37.8185, longitude: -122.4738)let geoAnchor = ARGeoAnchor(name: "Golden Gate Bridge", coordinate: coordinate)

При желании можно указать высоту в метрах, которая, по умолчанию, принята заданием параметров над уровнем моря.
let geoAnchor = ARGeoAnchor(name: "Golden Gate Bridge", coordinate: coordinate, altitude: 67)

Теперь можно добавить анкор к главной сцене. В RealityKit это работает на основе инструмента AnchorEntity из ARGeoAnchor.
arView.session.add(anchor: geoAnchor)let geoAnchorEntity = AnchorEntity(anchor: geoAnchor)arView.scene.addAnchor(geoAnchorEntity)

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

Преобразования между пространственными координатами


Если вы хотите получить координаты GPS для определенной точки в сцене вашего приложения, ARKit позволит легко сделать это с помощью ARGeoAnchor и системы координат XYZ ARKit. Достаточно одного касания на экране и привязка к местоположению готова!
let point = SIMD3<Float>([0, 1, -2])arView.session.getGeoLocation(forPoint: point) { coordinate, altitude, error inlet geoAnchor = ARGeoAnchor(coordinate: coordinate, altitude: altitude)}

Вот так все просто и доступно.

Прогресс AR-технологи неизбежен


Многие, кто пристально следит за развитием AR-технологий, периодически сетуют на медленный темп продвижения данного сектора технологий. Безусловно, многие из нас не отказались бы иметь, например, AR-очки от Apple уже сегодня и сейчас. В действительности, это достаточно сложная технология, и здесь более важна не скорость, а правильное ее внедрение. В дополнение к реальным проблемам по созданию таких устройств, которые связаны с оптикой, временем автономной работы, беспроводным подключением и многими другими аспектами, требуется еще и хороший AR контент с глубоким пониманием и отражением нашего реального, постоянно меняющегося мира. Лишь немногие компании имеют ресурсы, чтобы осилить данную проблему самостоятельно, среди них, кроме Apple, в числе более успешных, можно выделить Microsoft и Niantic, недавно приобретшей стартап 6D.AI.

Еще одну проблему по-прежнему создает недостаток аппаратных и программных платформ, на которых сможет работать AR-контент. С помощью ARKit 4 и iOS 14 Apple может существенно укрепить свои позиции в качестве крупнейшей в мире AR-платформы на рынке современных технологий, предоставив разработчикам новые инструменты для создания AR-приложений, которые давно ждут пользователи.

WWDC сессия посвященная новинкам в ARKit 4:
developer.apple.com/videos/play/wwdc2020/10611
Пример использования Location Anchors c исходным кодом:
developer.apple.com/documentation/arkit/tracking_geographic_locations_in_ar
Подробнее..

Как AR-технологии могут повлиять на продажи товаров на маркетплейсах и как бренды используют их в России? И надо ли это?

18.05.2021 16:06:28 | Автор: admin

У кого в руках технологии - тот владеем миром. Как минимум, может им управлять. Но нам нужно еще меньше - найти путь к покупателям и с каждым днем продавать все больше товаров. Тут есть два варианта: либо рынок развивается так, что технологии становятся его неотъемлемой частью, либо продавцы и производители сами стимулируют использование технологий для повышения продаж. При последнем сценарии, рынок подтянется сам.

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

Мы нашли существующие исследования рынка AR, отыскали кейсы отечественных разработчиков и собрали примеры использования дополненной реальности производителями и продавцами, чтобы понять насколько широко технология шагает по стране и миру. А поскольку наша основная сфера интересов - маркетплейсы, мы попытались понять как AR может быть использован там и используется ли вообще. Рассказываем и показываем.

Дополненный рынок

Рынок AR стремительно растет. Это логично, поскольку смартфоны и гаджеты, которые поддерживают данную технологию или могли бы с ней работать сегодня есть практически у всех. AR, в какой-то степени проще дышится среди потребителей. Технология нетребовательна к оборудованию - пройтись по дополненной реальности, в той или иной степени, может каждый. Мы нашли данные зарубежных исследований под авторством Engine creative в которых прогнозируется, что уже в этом году количество мобильных пользователей AR вырастет до 811 миллионов человек. И если на время отвлечься от продаж и пристально посмотреть в сторону самой технологии, то можно узнать, что доход от AR c каждым годом растет и в 2021 году может достигнуть 3,1 млрд долларов, а к 2024 - 3,78 млрд долларов.

Данные исследований агенства Engine creativeДанные исследований агенства Engine creativeДанные исследований агенства Engine creativeДанные исследований агенства Engine creative

Поскольку нас интересуют именно продажи, мы захотели взглянуть в сторону потребительного поведения и отношения покупателей к технологии дополненной реальности. Итог - покупатели ждут, когда бренды и производители предоставят им новые форматы взаимодействия с продуктом. Вот такие цифры приводит в своем исследовании уже упомянутое выше агенство:

- 69% покупателей ждут, что бренды дадут им возможность взаимодействовать с товаром посредством AR и выпустят мобильные приложения;

- 76% уверяют, что делали бы больше покупок при условии, что смогли бы если бы заранее осматривать товары с помощью дополненной реальности;

- 42% покупателей считают, что использование дополненной реальности помогает принять решение о последующей покупке.

Данные исследования агенства Engine creativeДанные исследования агенства Engine creative

Эксперты также уверены, что использование AR может не просто повысить продажи, но и с большей вероятностью довести определенные группы товаров до конечного клиента. Об этом в своем исследовании заявили ученые Городского университета Гонконга и Сингапурского университета управления. Они пришли к выводу, что AR перспективнее всего применять там, где высока неопределенность, связанная с товарами. То есть в тех случаях, когда покупатель просто не может оценить продукт (размеры, детализацию, актуальность товара для его стиля или интерьера) находясь на расстоянии от витринной полки. Исходя из этого ученые прижил к выводу, что дополненную реальность лучше всего использовать в нескольких случаях:

- при продаже продвижении малоизвестных товаров и брендов;

- для увеличения продаж дорогостоящих товаров;

- для стимуляции перехода офлайн-клиентов в онлайн-каналы продаж (например, с рекламного баннера со ссылкой на приложение или сайт).

Согласитесь, что такие выводы звучат очень логично. Если покупатель маркетплейса заказывает упаковку стирального порошка или корм для домашних животных - он имеет хотя бы примерные представления о том как будет выглядеть физический продукт и его упаковка. Когда речь идет о необычной детской игрушке, новом гаджете или дизайнерском кресле - представить, например, их габариты и внешний вид крайне сложно. Да, все подробности о товарах можно прочитать в их описаниях и характеристиках. Но покупатели - занятые, а иногда и ленивые люди, которые редко взаимодействуют с текстом и принимают решения на основе изображений товаров.

Как в таком случае быть покупателям, которые не могут оценить товар просто по фотографиям в карточке маркетплейса. С каждым днем количество товаров на таких площадках растет, а отличать предложения честных продавцов от мошенников становится все сложнее. У покупателя есть два варианта - отказаться от заказа непонятно, неизвестного товара или заказать и вернуть, в случае, если он не оправдает их ожиданий. Как в таком случае быть продавцам? Они постоянно рискуют тем, что их товары будут путешествовать по стране от склада до склада, потому что покупатели продолжать оформлять возвраты. Либо получат сотни недовольных отзывов от тех, чьи ожидания не оправдались. Кажется, пора находить какие-то решения.

Точки отсчета

Точки отсчета
Как можно использовать дополненную реальность в реальности? Недавно компания-разработчик PHYGITALISM опубликовала в сети большой кейс-исследование в котором собрала всю актуальную информацию об AR и рассказала о возможных механиках ее использования. Получилось внушительный список из следующих пунктов:

Данные исследования компании PHYGITALISMДанные исследования компании PHYGITALISM

Понятно, что такие механики очень логично ложаться на активности в event-сфере - презентации и выставки. Например, во время автомобильной выставки можно помочь зрителям взглянуть пот обшивку машины и рассмотреть ее устройство до мелочей. Но как эти же технологии и механики можно использовать в торговле. И отдельный вопрос - как они могут помочь в онлайн-торговле.

С офлайн-ритейлом все просто. Примеры использования AR уже существуют. Идеальный вариант для этой сферы торговли - применение дополненной реальности в навигации по реальным магазинам. В идеале, такую навигацию хотелось бы выстроить и на отечественных маркептплейсах.

Есть примеры использования дополненной реальности для конкретных брендов и товаров. Тут уже не важно, где именно они продаются - в офлайне или онлайне, поскольку особенности самого товара требуют знакомства с ним вне торговой зоны, например дома или в офисе. В первую очередь, такой подход идеально ложиться на мебель и крупную бытовую технику. Два примера ниже отлично демонстрируют как покупатель может познакомиться с товаром, даже если никогда не видел его лично. Здесь технология не просто помогает покупателю рассмотреть товар, но и решить важный вопрос - "поместится ли?".

Но что делать напрямую с онлайн-торговлей? Может ли AR помочь продавцам интернет-магазинов и маркетплейсов стать ближе к пользователям и подарить им новый опыт от взаимодействия с товарами? Примеры тоже есть. В 2019 году Lamoda запустила виртуальную примерочную для покупателей кроссовок, доступную владельцам устройство под iOS, в 2020 расшарила эту же возможность для пользователей Android. Примерить с помощью дополненной реальности можно не все, а лишь 100 оцинкованных моделей кроссовок. Но на самом деле, чтобы найти доступ к самой виртуальной примерочной нужно поломать, если не ноги, то голову. Поэтому сама история с запуском такой примерочной выглядит скорее как маркетинговый ход, нежели желание помочь покупателем с выбором товара.

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

Есть дополнения?

Очевидно, что силами маркетплейсов оцифровать весь ассортимент товаров невозможно. С другой стороны, они могут стимулировать продавцов к использованию технологий. Также как они предлагают селлерам дополнять товарные карточки панорамными фотографиями и запускать живые стримы с презентациями товаров. Например, условный Wildberries может давать продавцам возможность добавления объемных моделей в карточку товара, а покупателям сообщать, что они могут просмотреть определенные позиции в дополненной реальности не выходя из приложения или не покидая сайт маркетплейса. Ozon в этом плане уже продвинулся гораздо дальше. Например, совместно с LG запускал тестирование дополненной реальности прямо в карточке товара.

Тестовая карточка товара маркетплейса OzonТестовая карточка товара маркетплейса Ozon

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

Но тут стоит отметить, фактически такое использование дополненной реальности подразумевает, что технология - функциональная особенность продукта. Получить к ней доступ, вроде как, можно уже после покупки товара. То есть здесь работает обратный принцип - AR может стимулировать продажи, потому что добавлена к товару, а не потому что помогаем познакомиться с ним до покупки. С другой стороны, в первом примере вся демонстрация товара сводится к добавлению в карточки фото собранной картинки, во втором - AR точно пригодилась бы для того, чтобы показать покупателю модель детской игрушки в сборке. В том числе для того, чтобы оценить ее размеры.

Карточка товара с дополненной реальностью бренда Mr. Puzz на маркетплейсе WildberriesКарточка товара с дополненной реальностью бренда Mr. Puzz на маркетплейсе Wildberries

Заметьте, что первый производитель использует для погружения потребителя в AR свой аккаунт в Instagram - оживить собранные пазл он предлагает с помощью масок в социальной сети. Это, с одной стороны, удобно - пользователю не нужно скачивать и устанавливать дополнительные предложения. С другой стороны, именно в этом примере мы рассматриваем детские товары. Насколько верно и позволительно предлагать покупателям передавать детям для игры свой смартфон с открытым аккаунтом в Instagram?

Второй производитель выбрал другой путь и разработал для собственного бренда отдельное приложение, поддерживающее технологию дополненной реальности. Оно, правда, предназначено для коллекционирования деревянных моделей, сборки и раскрашивания виртуальных игрушек. Дополненная реальность в нем используется скорее для сканирования новых моделей коллекции. Но если взглянуть на приложение иначе и попробовать использовать его для просмотра моделей конструкторов в объеме как мы попробовали это сделать в ролике выше? Кажется, получается очень показательно.

Выпадает из реальности

Вроде как использование AR, правда, может повысить конверсию, привлекательность товара и лояльность аудитории. Но пока технологией (по сути, любой) интересуется лишь пара производителей и она не используется массово - донести ее до конечного потребителя сложно. И тут вопрос - кто первым рискнет взяться за технологию на полную. Маркетплейсы, которые решат бороться с конкурирующими площадками за счет новых возможностей или продавцы, которым рано или поздно придется искать новые пути демонстрации товаров, которые сегодня все больше становятся похожими друг на друга как две капли воды?

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

Подробнее..

Дайджест Университета ИТМО системы ИИ, нейросети, анализ данных и МО обсуждаем личный опыт

06.09.2020 12:06:19 | Автор: admin
Это подборка текстовых материалов и тематических подкастов с участием представителей Университета ИТМО студентов, аспирантов, научных сотрудников и преподавателей. Мы делимся личным опытом разработки проектов различного уровня и возможностями для развития.


Скриншот демо-уровня Shadow Samurai TAU Tracker Demo (CES 2019)

Что ждет начинающих ученых в сфере машинного обучения. Андрей Фильченков, к.ф.-м.н., доцент факультета Информационных технологий и программирования и руководитель группы машинного обучения международной научной лаборатории Компьютерные технологии рассказывает, что он с коллегами делал для канала ТВЦ и соц.сети Vk, делится инсайтами о подготовке публикаций и анализе работ коллег по цеху, а еще базовых пререквизитах для старта в сфере машинного обучения. Интервью мы опубликовали в формате подкаста и текстового транскрипта на Хабре.

Мы не стали ждать инвестиций, а начали обеспечивать себя сами. Так поступила компания Statanly Technologies, специализирующихся на решениях в области МО и системах ИИ. Коллектив проекта включает сразу нескольких представителей университета. Редакция ITMO.NEWS взяла интервью у Сергея Федорова, ген.директора фирмы. Он рассказал, чем занимается команда и какие задачи перед собой ставит. Эксперты Statanly Technologies поучаствовали сразу в нескольких программах акселерации, и в этом интервью Сергей поделился промежуточными результатами.

Как определиться со стажировкой. Наши студенты рассказывают, как они подошли к работе в одной из крупнейших IT-компаний сотрудничеству с Huawei, которая помогает развивать технологические стартапы и постепенно расширяет научную кооперацию с университетом. Личным опытом делятся два студента факультета ИТ и программирования, плюс студентка магистратуры Art&Science.


Ошибки, которые будут совершены нами, отразятся на наших детях и внуках. Алексей Сидоренко, руководительТеплицы социальных технологий, рассуждает о разработках с длительным жизненным циклом вроде систем искусственного интеллекта в их самом широком и глобальном понимании. В материале он затрагивает подходы, меняющие ход развития таких технологий, и перечисляет наиболее актуальные проблемы (эмпатии, этики, ложных корреляций и черного ящика), которые еще предстоит разрешить экспертному сообществу в области систем ИИ и других сферах.

VK Hackathon: бить по мячу, как легенды футбола. Наши студенты взяли гран-при этого мероприятия в прошлом году, а еще получили денежный приз и познакомились с потенциальными партнерами. Приложение победителей помогает сравнивать видеозаписи собственных тренировок с тем, как подходят к работе с мячом профессиональные футболисты. Две нейросети анализируют пользовательские видео и соотносят их с эталонным роликом по положению тела (12 точек), вектору движения и траектории полета мяча. В рамках хакатона ребята показали работоспособный прототип, пообщались с коллегами из Sports.ru и наметили планы по дальнейшему развитию проекта.

Как ITMO.STARS помогает с неклассическим поступлением. В этом материале комментарии 15 участников конкурса уникальных достижений, представляющих Москву, Петербург, Челябинск и другие города нашей страны. Они рассказывают о возможностях, которые открывает для них эта программа и Университет ИТМО. Это развитие в таких областях как робототехника, нейротехнологии и программирование, сетевые технологии, инфокоммуникационные системы, управление технологическими инновациями, информационная безопасность и биоинженерия.


Моделирование процессов реального мира и мультидисциплинарный геймдев. Андрей Карсаков, к.т.н., старший научный сотрудник Национального центра когнитивных разработок, доцент Факультета цифровых трансформаций делится опытом разработки решений для AR-сопровождения массовых мероприятий, визуализации данных, агентного моделирования и организации учебной программы для разработчиков игр. Интервью мы разбили на две части вот транскрипт второй.

Возможности агентного поведенческого моделирования на практике проекты Университета ИТМО. Андрей Карсаков, к.т.н., старший научный сотрудник Национального центра когнитивных разработок, доцент Факультета цифровых трансформаций, рассказал об агентном моделировании на примере проекта реконструкции Конюшенного двора в Петербурге и вокзала Олимпийский парк в Адлере. Помимо этой пары кейсов он поделился комментариями относительно исторической реконструкции процесса развития и застройки Кронштадта в XVIII или XIX веках.

Игра Shadow Samurai: от симулятора бога до перспектив в медицине и автопроме. Андрей Карсаков рассказывает о продуктах TAU Tracker для отслеживания объектов реального мира и захвата движений. Он делится и подробностями о самой игре механике взаимодействия с виртуальным сеттингом, промежуточных достижениях и сложностях, с которыми сталкивалась команда.


В играх невозможно быть просто программистом. Андрей Симонов и Александр Гутриц первые выпускники магистерской программы Технологии и разработки компьютерных игр, о которой Андрей Карсаков рассказывал в нашем подкасте, поделились личным опытом и своими впечатлениями от учебного процесса и старта практической деятельности в гейм-индустрии.



Что еще у нас есть на Хабре:



Подробнее..

Что делают 3D-сенсоры в смартфонах? РАЗБОР

25.09.2020 22:13:02 | Автор: admin
Все чаще мы видим в смартфонах так называемые 3D-сенсоры, или сенсоры глубины. Большинство из них также называют ToF-сенсорами аналогично одноименной технологии. По слухам, такой сенсор будет установлен и в новом iPhone (там он называется LiDAR, подробнее мы об этом рассказывали в другом материале). Эти сенсоры довольно дорого стоят, но зачем они нужны понятно не всем. Производители уверяют, что сенсоры позволяют делать лучше фото и портреты или добавляют фишки в дополненную реальность. Но так ли это на самом деле?



Сегодня обсудим, зачем нужны 3D-сенсоры в смартфонах, как это работает, ну и конечно, проведем несколько тестов и проверим заявления производителей.

Что такое 3D сенсор (сенсор глубины)


Для начала, давайте разберемся, а что такое 3D-сенсор? Фотокамеры захватывают проекцию окружающего мира на плоскость. По одной лишь фотографии не понять реальный размер объекта размером ли он с бутылку или с Пизанскую башню. И расстояние до него тоже не понять.



Для того, чтобы понимать реальные размеры объектов на фото, масштабы съемки, отличать, что ближе к камере, а что дальше, и нужны 3D-сенсоры.Они уже давно и активно применяются в робототехнике, автономном транспорте, играх, медицине и много где еще. Более того, наши глаза это тоже 3D сенсор. При этом, в отличие от LiDARа и ToF-сенсоров в смартфонах, глаза пассивный 3D-сенсор. То есть не излучающий никакого света, а работающий только на основе поступающего света. Только благодаря этому мы можем хоть как-то перемещаться в пространстве и взаимодействовать с окружающими объектами. Теперь 3D-сенсоры появились и в смартфонах.

Как работает ToF?


LiDAR в iPadе, а также все 3D-сенсоры в Android-смартфонах это time-of-flight или сокращенно ToF-сенсоры. Они определяют расстояния до объектов вокруг, напрямую измеряя сколько времени понадобится свету, чтобы долететь от камеры до объекта и вернуться обратно. Это очень похоже на эхо в пещере, оно тоже после отражения от стенок возвращается к нам с запаздыванием. Чтобы пролететь 1 метр свету нужно 3 наносекунды, для 1 см 30 пикосекунд. Вроде бы все понятно. Но есть проблема.

Это очень маленькие промежутки времени. Как камера может такое замерить? Не будет же она делать миллиард кадров в секунду, а потом их сравнивать? Есть 2 основных подхода для решения этой проблемы: dToF (direct ToF) и iToF (indirect ToF). И чтобы вас заинтриговать еще сильнее: абсолютное большинство Android-смартфонов используют как раз iToF сенсоры, тогда как LiDAR в Apple iPad и скорее всего в грядущих iPhone это редкий представитель семейства dToF сенсоров. Так чем же они отличаются?

iToF indirect ToF




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

dToF direct ToF




dToF работает немного иначе. В таких сенсорах напрямую измеряется разница во времени между отправкой света и детектированием его отражения на сенсоре. Для этого используются так называемые SPAD: single photon avalanche diodes. Они могут детектировать крайне маленькие импульсы света, фактически даже ловить единичные фотоны. Такие SPAD расположены в каждом пикселе сенсора. А в качестве излучателя в таких сенсорах используются как правило так называемые VCSEL Vertical Cavity, Surface Emitting Laser. Это лазерный излучатель, подобный тем, что используются в лазерных мышках и много где еще. dToF сенсор в LiDAR разработан совместно с Sony и является первым массовым коммерческим dToF сенсором.

Можно лишь гадать, почему в iPad используется dToF сенсор, но давайте отметим преимущества такого сенсора. Во-первых, в отличие от iToF сенсора излучатель испускает не сплошную стену света, а лишь светит в отдельных направлениях, что позволяет экономить батарейку. Во-вторых, dToF сенсор меньше подвержен ошибкам в измерении глубины из-за так называемой multipath interference. Это типичная проблема iToF сенсоров. Она возникает из-за переотражения света между объектами перед попаданием обратно в сенсор и искажает измерения сенсора.

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

Зачем это нужно в смартфонах



1. Безопасность




Первым массовым внедрением 3D-сенсоров в смартфонах мы обязаны Apple и технологии Face ID. Распознавание лиц при использованиитрёхмерных данных намного точнее и надежнее классического распознавания лиц по фото. Для Face ID Apple использует технологию структурированной подсветки, на ней мы остановимся подробнее как-нибудь в следующий раз.

2. AR




Большинство производителей заявляют, что именно более качественный и точный режим дополненной реальности является главной задачей 3D-сенсоров. Более того, это также поддерживается непосредственно компанией Google. Буквально недавно они представили грядущее обновление своей библиотеки дополненной реальности ARCore, позволяющее более реалистично размещать виртуальные объекты в реальности ивзаимодействовать с реальными объектами.

Для этой же задачи Apple встроили LiDAR в iPad Pro. Такое можно делать и без 3D-сенсора, но с ним все работает точнее и надежнее, плюс задача становится вычислительно сильно проще и разгружает процессор. 3D-сенсор выводит AR на другой уровень.

3. Улучшение фотографий




Ряд производителей, например, Samsung и HUAWEI заявляют, что 3D-сенсор используется в первую очередь для более качественного размытия фона и более точного автофокуса при съемке видео. Другими словами, он позволяет увеличить качество обычных фото и видео.

4. Прочее




Доступ к данным сенсоров у некоторых смартфонов открыт, поэтому появляется все больше приложений, предлагающих новые применения. Так, например, с помощью внешних приложений 3D-сенсор можно использовать для измерения объектов, трехмерного сканирования и motion tracking'а. Есть даже приложение, позволяющее сделать из своего смартфона прибор ночного видения.

Тесты


С тем как это работает в теории разобрались, давайте теперь посмотрим, как это работает на практике, и есть ли какой-то толк от этих дорогущих 3D-сенсоров в флагманах. Для тестов мы взялиRedmi Note 9S, у него есть ToF-сенсор и мы сделали несколько снимков в портретном режиме, но во втором случае просто закрыли 3D-камеру пальцем. И вот что получилось.



Всё просто размытие действительно больше и лучше, если ToF работает.



И для частоты эксперимента мы взяли Samsung Galaxy S20 Ultra, который также получил ToF-камеру.



И найдите хотя бы одно отличие?



Что получается? Дело в том, что в зависимости от производителя ToF-камера используется по-разному и в разной степени.

Можно сказать, что часть производителей смартфонов располагает ToF-датчики в своих смартфонов не для маркетинга, чтобы добавить ещё одну камеру, а скорее на всякий случай. А дальше уже алгоритмы решают использовать эту камеру или нет?



При этом на сегодняшний момент необходимости в LiDAR или ToF-камерах прямо нет. Так что это видимо чуть больше маркетинг.
Подробнее..

Что не так с VR-технологиями в музеях и что с этим делать

30.12.2020 14:14:51 | Автор: admin

Технологии виртуальной реальности (VR) предлагают музеям новые возможности и альтернативные способы взаимодействия с посетителями. За время локдауна многие уже привыкли к стандартным виртуальным прогулкам по музеям.

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

10 важных недостатков VR

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

1. Изоляция в VR

Обычно VR-продукты предназначены для одного пользователя. Они отрезают посетителя от остальной среды и не допускают никакого взаимодействия между людьми. Поскольку большинство людей приходят в музей в составе пары или группы, желание поделиться ощущениями и пообщаться является важным элементом посещения. Этому желанию препятствуют VR-гарнитуры. Это особенно актуально для музеев, ориентированных на семьи и группы.

2. Вопросы обучения

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

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

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

3. Музей и финансы

Часто конечная стоимость VR-проекта становится недоступной музеям. Она складывается из следующего минимума: оборудование, дополнительный персонал, расходы на ремонт и техническое обслуживание. Особенно большой проблемой во многих случаях становятся кадровые потребности. Поэтому VR скорее используется для временных выставок, поскольку затраты на поддержание VR-проекта на постоянной основе непомерно высоки.

4. VR и люди с особенностями

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

5. VR и дети

В большинстве случаев производители VR-устройств не рекомендуют пользоваться оборудованием детям младше 12 лет. В некоторых случаях ограничения могут быть еще строже. Объяснить детям, что не так с VR, довольно сложно. Это вызывает разочарование у семей с детьми, а значит, существенное сокращение аудитории музея или VR-проекта.

6. Медицинские ограничения

С момента начала пандемии остро встал вопрос гигиены. Все необходимое оборудование требует регулярной чистки.

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

7. Технические ограничения

Возможности применения ограничиваются сроком службы батареи, перегревом портативных устройств, дальностью проводного или беспроводного соединения. При использовании нескольких VR-гарнитур для группового сеанса возникнут трудности с помехами и настройкой Bluetooth и Wi-Fi.

8. Эстетика в VR

Для виртуальной реальности в музеях, в отличие от развлекательных аттракционов, крайне важна эстетика и качество графики. Уровень реалистичности графики влияет на степень виртуального присутствия и ощущений пользователя.

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

9. Вопросы организации впечатлений

Большая популярность VR-проекта в музее может стать проблемой, если возникают очереди из посетителей. Ее можно решить с помощью системы бронирования. Но при выходе техники из строя работа музея приходит к коллапсу. Это особенно чувствительно, если VR является центральным звеном выставки или всего музея.

10. VR ради VR

Наконец, посетители могут слишком сильно отвлекаться на VR-технологии, в результате чего инновации сами по себе могут затмевать музейные объекты и повествования.

Альтернатива VR

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

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

Что такое AR?

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

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

J & K 1965

Подобную инсталляцию решила организовать компания Live in Theatre в Нью Йорке. Одно из направлений ее работы реконструкция давно минувших событий. Работа Live in Theatre интерактивна и вдохновлена реальными событиями из прошлого Нью-Йорка.

Это очень социальный проект с глубокой эмоциональной частью. Чтобы не потерять эти две важные составляющие, было принято решение использовать именно AR-технологию. Мы разработали одноименное приложение дополненной реальности J & K 1965. С ним пользователи гуляют по парку Манхэттена и рассматривают виртуальные экспонаты и фотографии прямо в тех местах Нью Йорка, где реально происходили действия более полувека назад.

Инсталляция основана на уникальном фоторепортаже легендарного американского журналиста Билла Эпприджа, который несколько месяцев фотографировал двух наркоманов из Нью-Йорка, Джона и Карен, в печально известном Игольном парке.

Необходимо было органично вписать оригинальные фотографии в структуру повествования и при этом вовлечь зрителя в сюжет, разворачивающийся на расстоянии вытянутой руки. Несмотря на все сложности разработки, нам это удалось. Аудитории пока недостаточно понятна AR, в отличие от VR. Однако продажи билетов на J & K 1965 оказались на 25 % выше, чем на другие проекты компании Live in Theatre.

Таким образом, во время просмотра виртуальных объектов в AR-приложении посетитель не теряет связи с реальным миром и легко делится эмоциями со своей семьей и друзьями. Он может показать объекты экскурсоводу и уточнить некоторые вопросы. При этом сотруднику не надо глубоко разбираться в сложных устройствах используется только приложение на смартфоне посетителя и сама выставка с повествованием.

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

О том, каких правил стоит придерживаться, чтобы сделать экспозицию в музее успешной, какие преимущества имеет AR перед VR в организации экспозиции, а также о способах и идеях применения AR читайте в следующих статьях.

Подробнее..

Онлайн-хакатон Tele2 Solutions Days

12.08.2020 16:20:14 | Автор: admin
Привет, Хабр!

21-23 сентября, мы совместно с Tele2 и Лигой Цифровой Экономики проводим хакатон, с целью поиска современных неожиданных технологических решений.

image

К участию приглашаются разработчики (frontend и backend), дизайнеры, UI/UX-дизайнеры, Product Owner/Product Manager, а также все заинтересованные в современных технологиях.

Участников ждут специальные номинации:

AR для розницы/программы лояльности;
Разработка альтернативной версии маркета Tele2;
Редизайн тариф-конструктора;
Виджеты iOS 14 и приложения для часов;
Идеи и прототипы многопользовательской игры.

Для прохождения отборочного тура нужно заполнить анкету участника. Общий призовой фонд составит 500 000 рублей, но главное возможность быстро, ярко и эффектно заявить о себе в профессиональном сообществе.

До встречи!
Подробнее..

Обучение, удалённая экспертиза и другие сферы применения ARVR в металлургической промышленности

27.01.2021 18:04:51 | Автор: admin

Привет, меня зовут Денис Колупаев, я возглавляю команду AR/VR-разработчиков в компании Северсталь. В нашей компании технологии виртуальной и дополненной реальности начали внедрять по инициативе экспертов управления по развитию новых технологий нашего центра R&D в IT. Было непросто объяснить начальству, зачем это здесь, на металлургическом производстве, нужно Сначала наши эксперименты с геймерскими девайсами и игровыми движками воспринимали с определённым скептицизмом, но после первых пилотов сомнения в профпригодности AR/VR развеялись. Хочу поделиться опытом внедрения этих технологий, рассказать о наших кейсах и сделанных выводах. Если вам интересно, зачем сотрудникам Северстали AR-очки и VR-тренажёры, добро пожаловать под кат.


image


Как всё начиналось


Промышленность не первый год осваивает AR/VR. В качестве примера можно вспомнить производственный центр компании Ford, где VR-технологии уже давно помогают обучать сотрудников, выявлять потенциально опасные операции и оптимизировать рабочие процессы ещё до запуска новых конвейеров. Россия не отстаёт: по данным прошлогоднего исследования, охватившего 100 крупнейших отечественных предприятий, AR/VR-технологии использует 21 % компаний. 40 % из них в IT-секторе, 33 % в металлургии, по 25 % в телекоммуникационной и нефтегазовой сферах.


Это неудивительно: технология достаточно зрелая. Но если первые виртуальные шлемы, очки, контроллеры и ПО к ним разрабатывались в основном для игровой индустрии, то сейчас создатели VR-решений всё чаще ориентируются на корпоративный сегмент.


Поначалу я был единственным сотрудником Северсталь-инфокома, занимавшимся AR/VR. Постепенно команда разрасталась, и в апреле 2019-го нас отделили от R&D, сформировав отдельное направление. Сейчас в команде более 10 человек: разработчики, 3D-дизайнеры и другие специалисты по AR/VR.


Первый пилот стартовал в январе 2018 года, это были интерактивные инструкции по разборке и дефектовке насосного оборудования. Идея основывалась на использовании дополненной реальности и не требовала применения каких-либо дополнительных девайсов, кроме смартфона: с помощью мобильного приложения сотрудник считывает QR-код на оборудовании, после чего у него на экране отображается 3D-модель соответствующего насоса. Её можно поэтапно разбирать и собирать, используя экран телефона как инструкцию по реальной сборке-разборке.


Позже мы пробовали реализовать аналогичный проект с использованием технологий VR, но отказались от этой идеи. К этому моменту мы уже начали заниматься VR-тренажёрами, на примере которых убедились: для обучения виртуальная реальность подходит гораздо лучше.


image


Понять процесс и создать эффект погружения


Один из первых VR-тренажёров создавался для Череповецкого металлургического комбината. Это был курс для подручного сталеплава: надевая виртуальный шлем или очки, обучающийся попадает в VR-цех, в котором можно брать пробы жидкого металла, проверять его температуру и прочие параметры.


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


Кроме того, в виртуальном пространстве появляется отличная возможность имитировать какие-то нештатные происшествия: пожар, аварийную остановку оборудования. Один из наших тренажёров на сегодняшний день их 13 предназначен для шахтных рабочих, в нём обыгрываются ситуации с обвалами, задымлением. Мы можем посмотреть, как поведёт себя человек в случае ЧП, отработать технику безопасности, не подвергая его риску.


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


Главное из преимуществ обучения на VR-тренажёре погружение в процесс. Если мы слушаем лекцию или смотрим обучающие ролики, велик соблазн отвлечься на телефон, какие-то параллельные занятия. Наши тренажёры такой возможности не дают: мы максимально сконцентрированы на материале, находясь в виртуальном пространстве. Поэтому обучение идёт быстрее, и вся необходимая информация запоминается гораздо лучше. Но для этого нужно всё делать правдоподобно, реалистично.


Если какая-то операция выполняется с помощником создаём виртуальных персонажей, которые выглядят и двигаются естественно. Добавляем качественную графику и достоверную механику и добиваемся максимального погружения. Мы убеждены, что механика тренажёра должна повторять некий жизненный опыт, чтобы можно было не просто нажать на инструмент и применить его, а, например, открутить что-то гаечным ключом и т. п. Некоторые считают такое внимание к деталям неоправданным, но у нас другая позиция: такой подход как минимум тренирует мышечную память у обучающегося.


image


Пандемия внесла коррективы: 3D-режим и AR-проекты


В этом году в связи с пандемией мы начали добавлять в наши тренажёры дополнительный режим возможность пройти курс в 3D. Всё выглядит как обычная компьютерная игра: для обучения не требуется VR-шлем или другое специальное оборудование, только обычный компьютер с мышью, клавиатурой и монитором. Конечно, в этом случае теряется эффект погружения. Но для тех, кто может обучаться только дистанционно, такой вариант всё равно лучше чтения теории или просмотра видео. Тем более что можно сначала изучить курс дома на 3D-тренажёре, а затем перепройти виртуальную версию и закрепить материал в наших специальных VR-кабинетах для обучения.


Главная проблема при создании этих домашних версий заставить 3D-тренажёр работать на обычных пользовательских устройствах вроде портативных ПК без дискретной видеокарты, на встроенной графике. Нам это удалось: недавно мы выпустили второй тренажёр, в котором есть и VR, и 3D.


Удалённый помощник ещё один проект, связанный с карантинной ситуацией этого года. Сценарий такой: сотрудник в смарт-очках звонит со своего рабочего места на производстве эксперту, который может находиться где угодно, главное, чтобы у него был интернет. Изображение с очков транслируется в смартфон или компьютер эксперта. Тот, в свою очередь, может указать на проблемные места прямо на картинке и сотрудник увидит указку в дополненной реальности очков. У сотрудника на производстве, помимо прочего, при таком решении остаются свободными руки. Мы попробовали несколько вариантов и пока остановились смартфонах и смарт-очках RealWear с Microsoft Teams: такое решение оптимально по стоимости и соответствует нашей политике безопасности.


Другой интересный проект, который находится в стадии разработки, дополненная реальность для навигации на складе. Суть в том, что человек идёт по заранее просчитанному оптимальному маршруту, комплектует заказ, а затем подтверждает его в смартфоне или в очках. Пока получилось создать трёхмерную карту склада и приложение, которое просчитывает маршруты. А с трекингом проблема. Попробовали Spatial Mapping, облако точек не подошло. Экспериментировали с Bluetooth-маячками слишком большая погрешность, разброс метров до пяти. Продолжаем искать: изучаем опыт коллег, общаемся с ребятами из других компаний, которые занимаются подобными вещами.


Примерно 80 % из того, что мы внедряем, это VR. Дополненную реальность в основном исследуем.



Из чего делается другая реальность: оборудование и ПО


Оборудование у нас, по сути, такое же, как и в игровой индустрии. Мы используем преимущественно шлемы HTC Vive Pro и HTC Cosmos, но недавно начали экспериментировать с мобильными шлемами Oculus Quest, которые уже не привязаны к ПК. Кроме того, нам понравилась новая система трекинга, которая не использует контроллеры: движения рук захватывают камеры, расположенные на шлеме. Такой подход имеет свои минусы, например нельзя ставить руку ребром к камере в таком положении она не распознаётся. И, разумеется, руки нужно держать в поле обзора.


Бесконтроллерная технология идеально подходит для случаев вроде тренажёра машиниста коксовых машин, когда обучающийся постоянно сидит в кресле и держит руки перед собой на виртуальной панели управления. Пока для этой цели мы пользуемся контроллером Leap Motion, который захватывает движения рук и переносит их в виртуальную реальность. Пробовали несколько вариантов перчаток, но тут есть некоторые ограничения по масштабируемости: перчатки могут стоить не меньше, а то и больше иного шлема.


В качестве первого движка использовали Unity в основном из-за более низкого порога вхождения. То же комьюнити Unity-разработчиков существенно больше, чем Unreal. Тем не менее через год всё-таки решили переходить на Unreal Engine 4. На наш взгляд, он более привлекательный в графическом плане, у него лучше картинка из коробки, а многие инструменты, которые в Unity нужно докупать или писать самостоятельно, прилагаются по дефолту.


На Unity всё ещё работаем, делаем приложения для AR. Они получаются легче, к тому же необходимое там оборудование, такое как очки от Microsoft HoloLens, охотнее дружит с C# языком Unity. А для приложений на Unreal Engine 4 можно вообще не пользоваться кодом: Blueprints внутренний нодовый редактор, полностью графический, позволяет сделать всё с помощью мышки. Но мы пользуемся им только для прототипирования, финальные проекты пишем на C++.


Процесс программирования, который затрагивает механику взаимодействия с виртуальным миром, поведение объектов во время взрывов и других нештатных ситуаций это достаточно сложно. Но и трёхмерное моделирование сложный процесс: сначала создаём геометрию, затем развёртки, текстурирование, анимацию и пр. Для моделирования мы используем 3ds Max, Blender, а также пакеты для текстурирования Substance Painter и Substance Designer, которые позволяют рисовать сразу по мешу. Для создания и персонализации персонажей-ботов, захвата движений, анимации iClone и Character Creator 3.


image


Что дальше: платформа, мультиплеер и VR под заказ


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


Лаунчер наподобие игровых, как Steam, ставится на компьютер сотрудника. После входа под логином и паролем открываются доступные для прохождения курсы. Платформа позволяет сразу запустить и пройти 3D-версию, а для виртуальной версии нужно зарегистрироваться на свободное время для посещения VR-класса. Здесь можно будет найти справочную информацию, описание элементов управления, помощь по прохождению.


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


В планах на следующий год реализовать мультиплеерный режим. Для чего он нужен? Например, в нашу компанию входит предприятие Северсталь-Метиз, фабрики которого находятся в Волгограде и Череповце. На каждой из фабрик есть волочильный стан оборудование для изготовления проволоки. Мы сделали такой VR-тренажёр, Волочильщик проволоки, и было бы интересно, чтобы коллеги из разных локаций могли соревноваться между собой или совместно проходить обучение в режиме мультиплеера.


Мультиплеерный режим можно использовать, чтобы вместо бота в тренажёр заходил ещё один сотрудник, это поможет в отработке совместных операций. Ещё одна возможность, которую откроет мультиплеер, создание админ-панели, с помощью которой специалист по обучению мог бы наблюдать за проходящими обучение и при необходимости вмешиваться в процесс.
Сейчас все наши тренажёры предназначены исключительно для внутреннего использования, они сделаны под конкретное оборудование, конкретную планировку цехов это соответствует нашей концепции эффекта погружения. С 2021 года мы попробуем выйти на внешний рынок с услугой разработка VR-тренажёров для производственных целей.


Как стать AR/VR-разработчиком и каковы перспективы этой технологии


Все члены нашей команды молодые ребята, обучавшиеся с нуля, со стажёрских позиций. Во-первых, так уж повелось в нашей команде: кадры мы привыкли растить сами. Во-вторых, готовых AR/VR-специалистов найти сегодня достаточно сложно или дорого: разработка под игровые движки узкая специализация. В процессе ковки кадров мы смотрим, кому какое направление ближе: 3D-моделирование, программирование базовых сервисов или работа с движками. И предлагаем углубиться в ту область, которая больше нравится.


Проблема в том, что наши вузы практически не выпускают VR-программистов или геймдевов. Зато есть огромное количество различных обучающих платформ, таких как Skillbox или Яндекс, которые помогут на базовом уровне освоить Unity, Unreal Engine или 3D-моделирование. Можно пойти на любой из этих курсов или обучаться самостоятельно. Тот же YouTube поможет освоить какие-то базовые вещи.


Как я уже говорил, у Unity немного ниже порог вхождения: комьюнити большое, информации много. Но зато специалистов по Unreal Engine сложнее найти, поэтому они больше ценятся.
Стационарное оборудование всё ещё достаточно дорогое, громоздкое и требует мощного компьютера, а мобильные VR-устройства пока проигрывают в качестве картинки. При этом перспективы AR/VR-технологий сомнений не вызывают: рынок будет расти по мере решения указанных проблем. Когда устройства типа смарт-очков начнут повсеместно использоваться вместо смартфонов, вокруг нас станет гораздо больше виртуальной и дополненной реальности.


Мы к этому уже готовы, за последние пару лет AR/VR-технологии вошли в жизнь нашей компании довольно плотно. В виртуальной реальности сотрудники не только обучаются, но и соревнуются: кто быстрее выполнит задание, выйдет из шахты и т. д. А цеха нашего предприятия круглосуточно открыты для виртуальных экскурсий: любой желающий может совершить тур по Череповецкому металлургическому комбинату, начиная с центральной проходной.


На этом пока всё. Буду рад ответить на ваши вопросы в комментариях. Спасибо за внимание!

Подробнее..

Earth2 виртуальная реальность, новая криптовалюта, или мир NFTs?

20.03.2021 00:14:27 | Автор: admin

Вот уже несколько месяцев умы геймеров и криптоинвесторов будоражит новое явление под названием Earth 2. Вдохновлённая футуристическими вселенными Ready Player One и Snow Crash, игра была запущена в декабре 2020, и с этого момента успела привлечь более 300.000 игроков, продать сотни миллионов частиц будущего мира, создать дорогостоящие NFT, и получить освещение в прессе и на телевидении.

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

Идея и философия игры

Вселенная Earth 2 представляет собой оцифрованную копию Земли (aka Earth 1). Вся планета представлена с помощью карт Mapbox и разбита на маленькие ячейки (tiles), размерами не менее 10 на 10 метров, всего примерно 5.1 триллионов ячеек. Игроки могут покупать эти ячейки за игровую валюту (а ее, в свою очередь, за реальные деньги), продавать друг другу, или выкладывать на торги.

Согласно блогу Mapbox, их команда работала совместно с создателями Earth 2 по реализации этого грандиозного проекта и разработке нового функционала (такого, например, как Heatmap, показывающего распределение наиболее популярных зон на планете).

Сейчас вселенная находится на самой начальной стадии (об этом чуть ниже), но попутно идет разработка самого 3D-мира этой параллельной реальности. Этот мир разработчики создают на основе Unity, что по идее говорит о возможности как игры на PC, так и реализации различного VR функционала.

Первое превью ландшафта нового мира разработчики недавно выкладывали в 4K и обсуждали со своими фанатами:

https://www.youtube.com/watch?v=pmx161RADWw

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

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

Открытым остается вопрос, что именно игроки смогут делать в этом мире, какие будут правила, и будет ли мир созидательным или враждебным. Пока разработчики не имеют однозначного ответа на этот вопрос, но допускают возможность существования одного и того же мира в нескольких ипостасях когда можно будет жить и наслаждаться миром по типу San Junipero, и в то же время использовать тот же самый мир для шутеров с монстрами a-la Resident Evil и т.п.

Команда создателей

С самого начала команда Earth2 выбрала путь максимальной прозрачности, насколько это возможно (еще бы, учитывая, какие деньги люди вкладывают в их вселенную). Разработчики периодически появляются в дискорде, твиттере, а также устраивают онлайн трансляции.

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

  • Shane Isaac основатель компании с более чем 20 годами опыта в разработке и менеджменте, главный автор идеи Earth2.

  • Dillon Seo со-основатель Oculus VR, которую в итоге приобрел Facebook за $2 миллиарда. В Earth 2 выступает в качестве советника.

  • Steve Bennett гуру MapBox, специализирующийся на генерации векторных тайлов со сложными наборами данных. Отвечает за построение глобальной сети ячеек на карте Earth 2.

  • Wolfgang Walk эксперт гейм дизайна с более чем 25-летним опытом, участвовавший в создании десятков разнообразных игр. Отвечает за геймплей и игровой дизайн мира Earth 2.

  • Ralf C Adam гейм продюсер, с большим опытом и авторитетом в игровой индустрии.

Полный список можно найти здесь.

Фазы развития

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

Первая фаза Распределение земель

На этой стадии игроки могут найти точку на карте, где они хотят купить землю. За один раз можно купить одну или сразу несколько ячеек (обычно не больше 750). Если ячейка никем не занята, ты просто покупаешь ее и ее уникальный номер добавляется в твой портфолио. Если ячейка уже была занята другим игроком, то ты можешь попробовать ее выкупить.

Обычно важно, что именно находится на ячейке, которую ты хочешь купить. Это может быть или кусок земли, или какая-то известная точка на карте, или какой-то памятник или здание. Создатели игры говорят, что новая вселенная не будет повторять те же самые рукотворные строения, что есть в реальном мире. Однако, если какая-то точка является очень популярной на нашей планете (например, Эйфелева башня, Статуя Свободы, пирамиды, Московский кремль, дворец Путина, и т.п.), то велика вероятность, что это тоже будет местом притяжения в новом мире.

Цена за ячейку в любой стране начинается с $0.10, а затем постепенно увеличивается в зависимости от количества проданных ячеек. Ячеек по изначальной цене уже не осталось ни в одной стране (кроме нескольких недоступных, см Дубай ниже), однако до сих пор есть много стран, где можно купить ячейку по цене меньше доллара.

Также все ячейки каждой страны распределены на классы: Class 1, Class 2, Class 3 и так далее. В зависимости от класса ячейки, на них периодически начисляется LIT (Land Income Tax), который собирается с покупок новых ячеек в этой стране и их часть распределяется между всеми текущими владельцами. Подробнее про функционал новой фазы можно почитать здесь: https://earth2.io/about.

Hint: если будете покупать ячейки, не забудьте использовать код на 5% кэшбэк 9R3E6WFFY6

Вторая фаза Появление ресурсов

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

Также неясно, будут ли эти ресурсы появляться в зависимости от реального расположения на Земле или нет. Так, например, многие игроки покупают реальные нефтяные вышки или алмазные шахты, из-за чего они очень выросли в цене хотя вовсе не факт, что именно там в будущем появятся ресурсы Earth 2.

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

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

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

Третья фаза Появление ландшафта

В третьей фазе Earth 2 начнет приобретать трехмерные очертания. На земле появится ландшафт, который станет основой будущего виртуального мира. Вот текущий скриншот их игрового мира, которым поделились разработчики:

Пока про эту стадию известно не очень много, но ясно одно все творения человеческих рук будут стерты и природа предстанет в своей первозданной красоте. Хотя, как все что же будет, например, с каналами, или например, дамбами? Непонятно. Да и в принципе, глобальное потепление - это тоже творение человеческих рук, ну или чего там еще. В общем, поживем увидим.

Уникальные явления

За то немногое время, что существует игра, она уже успела породить несколько уникальных явлений. Их важно принимать во внимание, если вы хотите выстраивать свою стратегию. Вот некоторые из них.

Ватикан

Как известно, самое маленькое государство на планете. Так как количество ячеек на Earth 2 в Ватикане безумно мало, то его раскупили в первые же несколько дней. Теперь землю в Ватикане почти невозможно купить и ее цена доходит до заоблачных высот. Некоторые игроки продают землю под видом Ватикана, но на поверку оказывается Рим. Смотрите, не перепутайте!

NFTs

Так как Earth2 это изначально повторение карты обычной Земли, то конечно же культовые места на Земле сразу стали невзаимозаменямыми токенами в этом мире. Пирамиды, Статуя Свободы, Эйфелева башня, Московский кремль, Эверест и т.д. и т.п. Пока не очень ясно, будет ли возможность в этих местах повторить сооружения Земли или создать что-то своё, уникальное ясно одно: ячейки вокруг этих мест стоят безумно дорого и их почти не купить.

Другой тип NFTs, рождение которых мы сейчас наблюдаем это уникальные рисунки (или надписи) на карте.

Mega cities

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

Полное описание всех мега-городов можно найти в соответствующем Discord-канале.

Dubai

Ну и конечно, Дубай. С самого начала игры некоторые страны были закрыты для продажи (то ли по юридическим, то ли по религиозным соображениям). И одна из самых популярных стран, где игроки до сих пор не могли купить ячейки, это ОАЭ (в простонародье, "Дубай"). "Почему нельзя купить Дубай?" и "Когда можно купить Дубай" этими вопросами раздражает каждый второй новичок. Зачем он вообще им нужен? Вроде как просто много красивых зданий, плюс потенциально нефть и подобные ресурсы, которые могут пригодиться на следующих фазах игры. Ну и начальная цена 10 центов за ячейку такой в мире Earth 2 уже нет и больше не будет.

Апдейт от разработчиков: Дубай наконец-то будет доступен для продажи! Уже завтра 20 марта, в ночь с субботы на воскресенье, игроки всего мира будут настраивать своих ботов лихорадочно жать "купить" и растащут всю землю ОАЭ на кусочки. Если вы хотите поучаствовать в этом безобразии желаю удачи, но сразу оговорюсь надежды мало. Интерес будет колоссальный.

Стратегии заработка

Вложив реальные деньги, игроки хотят (зачастую быстрой) отдачи и вывода своих средств. Пока самым успешным способом заработка является перепродажа так, купив большие участки земли за несколько долларов в популярном месте, некоторые умудряются продавать позднее за несколько сотен, а то и тысяч. Также каждый участок сейчас периодически приносит LIT (Land Income Tax), но пока это совсем небольшие средства.

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

Но основная идея гораздо глобальнее это попробовать в будущем создать что-то свое, настолько крутое, чтобы туда могли захотеть приходить люди из реального мира. Что это может быть? Огромный парк развлечений? Копию реального места на земле? Мега-города? Экспо-город для виртуальных конференций?

Идей много, но всё зависит от того, насколько сами создатели Earth 2 способны это всё поднять и сделать мир пригодным для созидания другими игроками. Пока серьезно об этом мечтать довольно рано.

Вердикт

Игра безусловно имеет потенциал, в основном из-за большой виральности. Основные причины этой виральности: привязка к реальной земле и ее реальным объектам (каждый хочет купить что-то крутое) и замес сразу нескольких популярных трендов крипто-эйфории и VR/AR-технологий.

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

Некоторые люди предпочитают купить немного ячеек на всякий случай например, известные места в своём родном городе, чтобы сделать там порталы и в будущем удобно перемещаться по новому виртуальному миру (если будет реализована привязка к геопозиции, как в Pokemon Go и подобным концептам). Еще можно подарить кому-то на день рождения кусочек новой виртуальной земли гораздо лучше, чем фиктивный сертификат на Луне. Если кто-то всё-таки захочет купить несколько ячеек Earth2, вот вам код для 5% скидки: 9R3E6WFFY6

Делитесь своим мнением, стратегией и прочими советами в комментариях! Пока совершенно непонятно, во что игра превратится в будущем предлагаю просто оставить этот пост, чтобы вернуться к нему снова через полгода-год и посмотреть, где мы были правы, а где ошиблись.

Подробнее..

Обзор технологий трекинга AR маркеры

20.06.2021 10:05:00 | Автор: admin

Всем привет. Меня зовут Дядиченко Григорий, я СТО Foxsys, и я всё ещё люблю трекинг. Продолжим серию статей после долгого перерыва и поговорим про AR маркеры. Какие технологии есть, чем они отличаются, в чём плюсы и минусы каждой на данной момент. Если интересуетесь AR технологиями - доброе пожаловать под кат!

Что чаще всего подразумевают под AR маркером?

AR маркер это плоская картинка, по которой мы можем определить позицию устройства в пространстве относительно этой картинки. Задачи бывают самые разные, и о них мы поговорим. Просто в общем случае понятие маркера или метки не обязано быть просто плоской картинкой. Но как-то так повелось в AR - что под маркером имеется в виду именно плоская метка, а остальные виды меток уточняются, как цилиндрическая метка и так далее.

По сути, в качестве метки можно использовать любое изображение, которое отвечает требованиям технологии. Чем лучше картинка подходит под технологию, тем точнее будет трекинг, реже будет теряться и в целом с ним будет меньше проблем. Относительно требования к этим картинкам, чтобы трекинг хорошо работал - всё зависит от технологии. Тот же самый инстаграм сильно отличается от того, что считается хорошим маркером в той же вуфории. Базовые правила почти для любой хорошей метки, чтобы определять их на глаз. Больше контрастов, меньше градиентов, отсутствие симметрий (чтобы случайно не получить эффект балерины), так как если скажем картинка центрсимметрична, то невозможно однозначно определить её ориентацию в пространстве.

Применение AR меток и общие рекомендации

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

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

Во-первых, правильно делать сам маркер в соответствии с гайдлайнами конкретной технологии. Во-вторых, печатать сами маркеры на матовой бумаге и стараться не размещать их за стеклом, особенно если стекло не музейное и создаёт большое количество бликов и отражений. И третье, стараться размещать контент, как можно ближе к центру маркера. Так как есть такое понятие, как угловая ошибка.

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

Ну и конечно же, последнее - тестировать. Причём в идеале на целевых устройствах, на целевом расстоянии, с целевым размером маркера и в месте, где он будет эксплуатироваться. В последнем, по сути, важную роль играет только освещение в пространстве, так как проблемы трекингом могут создавать два критерия. Освещённость ниже 100 люкс и люминесцентное освещение. Со вторым проблема заключается в частоте мерцания лампы, так как не все технологии корректно обрабатывают данный эффект. С целевым же размером и расстоянием важную роль играет разрешающая способность камеры и воздушная перспектива. Она может влиять на чёткость границ маркера, которые используются для трекинга и из-за это маркер просто не будет распознаваться.

Целевые устройства важны, так как у многих различаются камеры и датчики, что так же влияет на трекинг. Для теста того же ARFoundarion (ARCore) или для сборки B2B проекта на аркоре, чтобы не было никаких вопросов с лицензией, по соотношению цена-качество я выделил для себя Redmi Note серию, нужно только внимательно смотреть, на каком устройстве есть поддержка аркор. Самый недорогой с достаточно качественной работой ARCore это восьмой ноут. Он сравнительно недорогой, но при этом проверять на нём качество трекинга данной технологии самое то. А так всё зависит от множества факторов. Бюджет, требования к системе, ограничения в плане покупке лицензий, какими устройствами обладает целевое устройства или бюджет на устройства для обустройства конкретной локации, и так далее.

Что-то мы глубоко ушли в нюансы работы с технологиями. Поговорим теперь про применение.

В рекламе

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

В благотворительности

По сути, очень похоже на рекламу, так как средства примерно такие же, только с целью осветить какую-то проблему.

В музеях и выставках

С помощью технологии меток можно оживить выставку и добавить интересного интерактива. Но, помимо этого, интересно к этому подошли в приложении Artefact. Навигация по точкам интереса обращая внимание на какие-то детали в картинах и рассказ истории об этой точке. Удобно и очень интересно.

В целом применений технологии очень много, и их полное перечисление само по себе растянется на несколько статей. Если даже отойти от телефонов метки используют в навигации дронов в пространстве, как систему рекалибровки и релокализации, в робототехнике, в инженерных задачах. К любой технологии трекинга можно придумать множество применений, так как определение позиции объекта в пространстве позволяет сделать много очень интересных взаимодействий. Когда-то даже был очень интересный концепт оживления настольных игр на Playstaition с помощью Eye Toy. Но перейдём же к самим технологиям. Да в основном я буду разбирать те технологии, с которыми я работал и запускал коммерческие проекты. Итак, приступим!

ARUCo (OpenCV)

Цена: Бесплатное

Поддерживаемые платформы: Android/IOS/WebGL/Win/Mac/Linux/Hololens

Совместимость с Unity: есть

Поддержка устройств: Широкая

https://docs.opencv.org/4.5.2/d5/dae/tutorial_aruco_detection.html

Если вы когда-то видели такие странные квадраты - это Аруко. Это технология для хардкорщиков. Из коробки для AR работает она откровенно плохо. Очень много шума. Но всегда можно реализовать обвязку которая решит эти проблемы. Допустим хорошо тречится так называемый аруко борд. Плюс если реализовать фильтр Маджевика, то тогда и jitter (тряска) будет не так сильно мешать. Основные плюсы: бесплатное (правда на допил уйдёт вероятно больше бюджета), умеет одновременно отслеживать очень большое число маркеров. Минусы: нельзя использовать изображения, кроме квадратов, что подходит далеко не для всех применений.

Vuforia

Цена: зависит от применения

Поддерживаемые платформы: IOS/Android/Win/Hololens

Совместимость с Unity: есть

Поддержка устройств: широкая

https://www.ptc.com/en/products/vuforia

Какой разговор про AR метки без Вуфории. Можно перейти правда сразу к главному недостатку технологии. Правильно купить её из РФ довольно сложно, и стоит это очень дорого. В остальном отличная технология. Имеет определение качества в вебе (правда ему стоит доверять с оговорками, так как он не определяет те же самые симметрии нормально). Работает очень хорошо, имеет интересную технологию вумарок. Недостатком с точки зрения долго развиваемого продукта является только тот факт, что у команды вуфории нет привычки к обратной совместимости. То есть каждая большая (а иногда и не очень) новая версия сдк ломает проект чуть ли не целиком, и требует переписать большую часть модулей. Что означает, что в долгосрочной перспективе решение требует поддержки, и поддержка будет дороже других технологий.

EasyAR

Цена: $1400 на приложение /$39 в месяц на приложение

Поддерживаемые платформы: IOS/Android/Win/Mac

Совместимость с Unity: есть

Поддержка устройств: широкая

https://www.easyar.com/

Отличная замена Vuforia. До третьей версии требовала небольшого допила в плане фильтрации данных и ряда мелочей, но версии постарше уже работают хорошо и без этого. Хотя на всякий случай со всеми технологиями лоупасс простой не помешает. Довольно просто купить ключ, одна из немногих технологий не по подписке. Работает с точки зрения маркерного трекинга отлично. В целом для широко рынка пока одно из лучших решений по соотношению цена/качество на мой взгляд.

XZIMG

Цена: бесплатно/2100 для использования в html5

Поддерживаемые платформы: IOS/Android/Win/Mac/Html5

Совместимость с Unity: есть

Поддержка устройств: широкая

https://www.xzimg.com/Products?nav=product-XAV

Одно из преимуществ технологии, одна из немногих коробочных технологий, работающих с WebGL и вебом в целом https://www.xzimg.com/Demo/AV. Работает неплохо в целом, но меньше спектр подходящих маркеров по сравнению с конкурентами. Бесплатное для коммерческого использования везде, кроме веба.

ARFoundation (aka ARCore/ARkit)

Цена: Бесплатно

Поддерживаемые платформы: IOS/Android

Совместимость с Unity: есть

Поддержка устройств: на Android порядка 20% устройств из общего числа моделей, IOS устройства с процессором A9+

Отличная технология для мобильных устройств. Бесплатная, хорошо работает и за счёт аппаратной поддержки тратит не так много ресурсов телефона. А недостатки, как всегда всё те же. Ограниченная поддержка на устройствах у пользователей. Соотношение постепенно растёт и в пределах нескольких лет возможно устройства будут у большего числа людей. Но пока по оценке данного ресурса (которая по методологии вызывает недоверие в плане точности) https://www.aronplatform.com/mobile-ar-penetration-2020/ AR supported устройства есть у 41.6% держателей смартфонов. Если посчитать точнее, думаю это число будет меньше. Но терять 60% аудитории в рамках акции или некоей платформы из-за технологии AR это должно быть весьма обоснованным решением.

SparkAR

Цена: Бесплатно

Поддерживаемые платформы: Android/IOS

Совместимость с Unity: нет, но можно сделать ссылку в приложении

Поддержка устройств: широкая

https://sparkar.facebook.com/ar-studio/

В спарке также есть возможность пользоваться AR метками. И если целевой аудиторией компании являются пользователи инстаграма и основной таргет шейринг это отличное решение. Основные минусы: политики фейсбука и инстаграма + ограниченность инструментов для отрисовки графики. К плюсам можно отнести бесплатность, быстрый доступ к аудитории. Важный нюанс, который надо иметь в виду разработчикам, то, что маркеры для той же вуфории отличаются от маркеров для спарка. У фейсбука своя технология и свой гайдлайн, который имеет ряд отличий в том, какой маркер будет хорошо работать.

Достойные упоминания

Это были не все технологии маркерного трекинга, так же на рынке присутствует Wikitude, ARmedia, MAXST - но с данными технологиями мне не довелось поработать, поэтому ничего не могу сказать про их качество работы, и какие-то тонкие моменты.

Спасибо за внимание! Если вам была интересна тема, то, когда у меня в следующий раз появится время постараюсь написать обзор на тему Hand Tracking или чего-нибудь её.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru