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

Разработка под ar и vr

Интервью с Яной Артищевой обучение в НИУ ВШЭ ВШБИ и страсть к VR-играм

21.02.2021 22:15:46 | Автор: admin

Яна Артищева закончилапрограмму НИУ ВШЭ ВШБИ Менеджмент игровых проектов(МИП). Теперь делает игры для виртуальной реальности. Поговорил с ней насчёт любимых игр детства, перспектив и проблем VR и фишек обучения геймдеву в НИУ ВШЭ ВШБИ. Интервью выходит при поддержке МИП.

1. Почему решили прийти в игровую индустрию? Сложно было перейти?

Сцена из древней игры Gabriel Knight: Sins of the Fathers компании Sierra On-LineСцена из древней игры Gabriel Knight: Sins of the Fathers компании Sierra On-Line

Любимыми компьютерными играми моего детства были игры компании Konami (спасибо, Кодзима!), в которые я играла на школьных компьютерах Yamaha MSX. Просто играть было мало, сразу же захотелось сделать сделать собственную игру. И я окунулась в изучение программирования - Basic, ассемблер и машинные коды, затем Pascal, C, Java С тех пор я постоянно пробовала писать игры. Но профессией это стало только в начале 2000х, когда появились мобильные телефоны с играми на Java. Мобильные игры возродили жанр старых "8-битных" казуалок и пиксел-арта. Если для создания качественной игры для PC требовалась Команда, Деньги и Месяцы (а нередко и Годы), то сделать игру для мобильного телефона можно было вдвоём с подругой-художницей за 1-2 месяца. И в 2003 году мы с друзьями создали небольшую компанию. Идея проекта была в том, чтобы игры были бесплатны, а деньги зарабатывались показами рекламы между уровнями. В общем, в 2003 мы изобрели то, что много лет спустя назовут free2play ;) К 2005 году мы выпустили дюжину небольших казуальных игр, сделали баннерную сеть с таргетингом, статистикой и прочими фишками. Нашли первых клиентов - Евросеть, издательство CD-Land (они предоставляли призы для наших еженедельных турниров), реселлера BeeLine. Мы быстро подняли аудиторию до 80,000 уникальных пользователей - больше, чем аудитория журнала "Мобильный портал", где мы давали рекламу. Но как мы ни старались, нам не удалось найти рекламодателей, готовых заплатить реальными деньгами, а не компакт-дисками и прочими призами. В 2007 году мы свернули проект, а игры сдали в аренду Samsung Fun-Club'у. В минусе не остались, но и особо не разбогатели. А через год или два встроенная реклама появилась в играх на андроидах и айфонах. Но уже без нас. Так я получила первый урок, что недостаточно сделать хороший и востребованный продукт. Кроме разработчиков продукту жизненно необходим продажник!

2. Как вам помогла образовательная программа НИУ ВШЭ "Менеджмент игровых проектов"? Что вы почерпнули? Какие, по-вашему, плюсы и минусы этого курса?

Выпуск курса МИП-7 ВШБИ, 2018 годВыпуск курса МИП-7 ВШБИ, 2018 год

Когда я услышала от своего коллеги по Azur Games, чтопрограмма Менеджмент игровых проектов просто огонь, мне показалось, что он несколько переигрывает с восторженностью. Теперь я и сама могу сказать, что курс МИП-7 одна из самых ярких страниц моей жизни. Серьёзно! Нет ничего более захватывающего, чем учиться тому, что даёт тебе самый дикий драйв в жизни. Когда среди учебных предметов нет ни одного скучного, неинтересного или ненужного. Когда тебя окружают единомышленники. Это куда круче, чем обычный ВУЗ. Мне удалось увидеть разработку игры с точки зрения других участников процесса продюсера, маркетолога, аналитика, коммьюнити-менеджера, пиарщика. Ретеншн нулевого дня, выгорание и прочие MAU-DAU для меня больше не птичий язык. Были бы у меня эти знания лет 15 назад кто знает, как бы сложилась судьба моих канувших в Лету проектов telegames.ru и AR-Go. Что же касается минусов Очень жаль, что этот курс так быстро закончился. И огромный минус для нынешних студентов то, что эпидемия коронавируса перенесла большую часть курса в онлайн. Нетворкинг, сотрудничество между студентами, живая помощь преподавателей, ставших твоими друзьями это сложно переоценить. Не знаю, удалось ли в онлайне сохранить этот драйв, этот крутейший team spirit.

3. Почему именно VR?

VR-игра Wolfenstein: Cyberpilot компании Arkane Studios/Machine GamesVR-игра Wolfenstein: Cyberpilot компании Arkane Studios/Machine Games

Создавать собственные миры непередаваемое чувство. Ты придумываешь мир, его логику (или алогичность), настроение, как он будет выглядеть. А потом Потом случается чудо. Ты не просто видишь этот мир в проекции на маленький прямоугольничек 40-дюймового дисплея. Тыоказываешьсявнутри придуманного и созданного тобой мира. Религия говорит, что Бог создал человека по своему образу и подобию? Думаю, нашему создателю доставляет радость видеть, как его дети становятся как и он Творцами. Кто-то творит миры на страницах своих книг. Кто-то дарит жизнь мирам Пандоры и мира Льда и Пламени. А кто-то, подобно Рене Корда из "Нейромансера" Роджера Желязны, создаёт почти реальные, почти осязаемые миры. VR позволяет почувствовать себя творцом, создателем, волшебником, создающим живой мир, в начале которого было Слово (и слово было гейм-дизайн документ).

4. Какие VR-игры вам нравятся?

Год назад мне посчастливилось принять участие в совместном проекте Эрмитажа и компании КРОК по воссозданию виртуальной копии нескольких залов музея ЭрмитажГод назад мне посчастливилось принять участие в совместном проекте Эрмитажа и компании КРОК по воссозданию виртуальной копии нескольких залов музея Эрмитаж

Когда-то я запоем играла в квесты тогда этим словом назывались не задания в рамках игры, а отдельный класс игр, где основу геймплея составлял нарратив, история, которую тебе нужно разгадать и пройти. Space Quest, Gabriel Knight: Sins of Fathers, Leisure Suit Larry, Secret of Monkey Island, Loom, Torin's Passage, Kyrandia, Neverhood это неполный список игр-приключений, которые сформировали мои геймерские пристрастия. Нарратив, история, в которую ты погружаешься для меня это основное удовольствие от игры. Квесты, перенесённые в VR это уже не просто приключение, которое ты помогаешь пройти персонажу на экране компьютера или мобильника. Это ещё одна жизнь, которую ты проживаешь. Это Storytelling, превратившийся в Storyliving. Из VR-игр для меня стала настоящим открытием Hellblade: Senua's Sacrifice. У игры есть множество недостатков. Это и кошмарный UI, абсолютно несовместимый с VR, и чисто программерские баги, и многое другое. Но замечательная история, прекрасный визуал, абсолютно естественные, реалистичные движения и мимика заставляют забыть обо всех минусах, запоем пройти игру в 3 дня за 27 часов. И ты бежишь в магазин за геймпадом, когда твои пальцы атрофировались от попыток вслепую (VR же) бегать по клавиатуре Буду банальной, но сейчас для меня лучшей VR-игрой стала Half-Life: Alyx. Это очень чисто и качественно сделанный продукт. Alyx определённо подняла планку для VR-игр и в плане графики, и в плане геймплея. Игра не позволяет тебе скучать, надолго застряв на каком-то этапе. Это настоящий шедевр. Неожиданно понравилась игра Wolfenstein: Cyberpilot. Да, у неё размытая графика, она проходится за одно утро. Но увлекательная история, качественное русское озвучание, французский шарм все эти моменты определённо меня покорили. Ещё у меня в фаворитах The Walking Dead: Saints & Sinners и Westworld: Awakening. Но пока они который месяц ждут, когда закончится мой роман с Alyx. Немного разочаровала игра Obduction. Я несколько лет ждала этот тайтл от создателей легендарного M.Y.S.T. (в который я в своё время так и не сыграла). Но слишком пустынный и статичный мир, которому плевать, что ты третью неделю не можешь продвинуться А тебе есть, куда уйти и я ушла в Alyx и Westworld. Когда-нибудь я непременно вернусь в Obduction. Непременно. Когда-нибудь. Наверное

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

Но не нарративом единым. Весьма неплоха оказалась VR-версия Angry Birds. А Beat Saber, этот хит всех времён и народов я долгое время презирала за примитивность. Хотя тут скорее всего взыграла ревность, что не я придумала такую простую и популярную игру. В итоге приняла и полюбила. Beat Saber стал первой покупкой для моего Oculus Quest.

5. Как оцениваете нынешнее состояние и будущее VR?

Виртуальная выставка картин художника Александра Верстова в старинном замке VR-игры "Owling Crowling Bowling". Иллюстрация предоставлена Яной АртищевойВиртуальная выставка картин художника Александра Верстова в старинном замке VR-игры "Owling Crowling Bowling". Иллюстрация предоставлена Яной Артищевой

Что касается B2B VR он уверенно занял своё место под солнцем, и в его будущем особых сомнений ни у кого нет. А вот домашний VR много лет постоянно пытаются хоронить. В том, что у бытового, домашнего VR есть будущее, я не сомневаюсь. Есть игроки, для которых важен нарратив. Есть любители крутого визуала. VRжевыявил ещё одну категорию игроков: иммерсионисты те, кому важно погружение в игру. Начав в 2015 активно играть в VR-игры на лучшей на тот момент мобильной VR-платформе Gear VR, я через пару лет обнаружила, что больше не могу в плоскоэкранные игры. Я честно пыталась заставить себя играть в Far Cry 5, в Метро 2033 и бросала, не отыграв и пары дней. Вместо удовольствия от игры на плоском экране я чувствовала недоумение что я делаю? зачем? Даже Armikrog, сиквел любимейшего много лет назад Neverhood, не удержал меня и недели Последний год армиягеймеровдомашнего VR пополнилась владельцами шлемов Oculus Quest. И последние полгода я постоянно встречаю в фейсбучных группах, посвящённых Квесту, изумлённые посты: Я больше не получаю удовольствия от обычных игр! А вы? Да, рынок пока невелик по объёму в сравнении с мобильным или PC-рынком. Но он уверенно растёт. Нет недостатка в качественных VR-играх. Многие американские семьи покупают по 2-3 шлема Oculus Quest и делают полноценные домашние VR-зоны, о которых владельцы отечественных малогабариток и мечтать не могут Полагаю, в ближайшие 2-3 года рост VR-аудитории ускорится, а лет через 5 она будет вполне сравнима с аудиторией игровых консолей.

6. Какие жанры, по-вашему, больше подходят для VR?

Lost Horizon музыкальный фестиваль в VRLost Horizon музыкальный фестиваль в VR

Однозначно спортивные и фитнесс-игры. Никакая мобильная или PC-игра не заставит вас потерять столько калорий и пропотеть так, как это сделает Beat Saber или Knockout League. Раньше на этом поле пытались играть Nintendo Wii и Kinect. Теперь их место занял домашний VR.

Социальные VR-приложения только в этом году в VR прошло множество конференций, выставок, концертов, фестивалей: Last Horizon,Laval Virtual 2020, goEast А какие бесплатные концерты в формате 360 проводит МТС! Это же потрясающе находясь на самоизоляции, надеть VR-шлем и два часа зажигать на живом концерте любимой группы!

Даже наш инди-проект Owling? Crowling? Bowling! не оказался в стороне в начале июня в интерьере виртуального готического замка нашей игры прошла выставка картин художника Александра Верстова. Осенью в нашей игре запланирована выставка известного фото-художника.

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

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

7. Какие сложности возникли при разработке для VR?

Процесс игры на VR-аренеПроцесс игры на VR-арене

Сложностей, увы, пока немало.

  • Прежде всего отсутствие отработанных приёмов UX/UI. Пока это сплошной R&D с более или менее удачными находками.

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

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

  • VR-игрок как правило не сидит за компьютером, а активно двигается на игровой площадке. Если для домашнего пользователя можно ограничиться площадкой 2x2 метра, то площадки для VR-арен могут доходить до нескольких сотен квадратных метров. Дома или в офисном опенспейсе игру для VR-арены не разработать, нужна большая площадка для тестирования хотя бы 10x10 метров.

  • У PC VR другие требования к технике нужны довольно мощные компьютеры, а для VR-арен и специализированные устройства. Стоимость оборудования для VR-арены (камеры Optitrack, компьютеры-ранцы, шлемы и др.) может достигать многих миллионов долларов.

8. Чем отличается разработка для VR от обычного геймдева? Другие специалисты, методология?

В VR необходимо уделять особенное внимание тем моментам, которые не особенно критичны для десктопной или мобильной игры. В обычной игре, делая кат-сцену, достаточно создать только тот участок игрового мира, который видит камера. В виртуальной реальности игрок может крутить головой во все стороны, поэтому для кат-сцены приходится создавать всё окружение вокруг игрока, а это в разы больше работы. Также необходимо принимать во внимание, что игрок видит сцену не в виде плоской проекции, а в стерео. При портировании десктопных игр в VR необходимо это учитывать. В своё время мне очень хвалили Skyrim, и я с нетерпением ждала выхода VR-версии этой игры. Но в самом начале игры всё впечатление от неё мне испортил спрыгивающий с телеги пленник.Вместо того, чтобы стоять на полу телеги, он висел сантиметрах в 15 над ним. Понятно, что в PC-версии это было незаметно ступни пленника отрисовывались поверх днища телеги, и у зрителя, наблюдающего эту сцену на экране монитора, было впечатление, что персонаж надёжно стоит досках. Но в VR я отчётливо видела эту непреднамеренную левитацию , что он не стоит, а висит. Моё "погружение" в игровой мир было полностью разрушено. Поиграв ещё минут 10, я выключила игру и больше к ней не возвращалась.

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

Dragonsnake VRDragonsnake VR

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

Не каждый игрок способен провести в виртуальной реальности дольше 15 минут (хотя я легко могу проводить в VR по 8-9 часов непрерывно). Это тоже приходится учитывать при планировании игровой сессии.

Визуальное программирование в Unreal Engine с помощью blueprintsВизуальное программирование в Unreal Engine с помощью blueprints

Лично мне очень не хватает возможности работать с VR-контентом непосредственно в виртуальной реальности. Сейчас наконец стали появляться подобные инструменты. Unreal Engine позволяет работать со сценой, одев VR-шлем. Из средств 3D-моделлинга стоит обратить внимание на Gravity Sketch. Но, к сожалению, пока не появилось решений для полноценной разработки логики приложения в VR. Есть попытки перенести в VR редактирование исходных текстов, но это определённо не самая удачная идея. Более интересны эксперименты с визуальным программированием в VR соединяя между собой визуальные блоки (blueprints), разработчик задаёт логику виртуального мира. Увы, простое копирование способа разработки с "плоского экрана" в виртуальную реальность обречено на неудачу. Для разработки программной логики непосредственно в виртуальной реальности нужны новые идеи и решения, "заточенные" именно под VR.

Интересно, что с недавнего времени мы перенесли наши еженедельные брифинги по игре из Skype в саму игру. Запустив её, мы в облике студентов магической академии собираемся в старинном замке, где разворачивается история Owling Crowling Bowling. Кто-то надев VR-шлем, кто-то сидя перед экраном своего компьютера. Теперь во время совещаний мы можем подойти к конкретной точке игровой локации, обсудить, что не так с текстурой или освещением буквально показать пальцем, что требуется доработать. До карантина мы собирались в кафе, чтобы протестировать физику нашей игры. Теперь мы тестируем её непосредственно в VR. Ну и, конечно, непередаваемое ощущение, когда ты не просто делаешь игру, а создаёшь мир, внутри которого можешь оказатьсявнутри, а не смотреть на его плоскую проекцию через окошечко дисплея!

9. Как оцениваете состояние образования по геймдеву вообще и по VR в частности?

За последние годы появилось множество курсов, помогающих "войти" в геймдев XYZ School, Нетология и множество других. Я давно работаю в игровой индустрии, и тем не менее, несколько лет назад прошла курс "Менеджмент игровых проектов" в Высшей Школе Экономики. Мне захотелось взглянуть на процесс разработки и продвижения игр не только с программерской позиции, но и с точки зрения маркетолога, геймдизайнера, биздева и др. Курс оставил самые яркие впечатления! Теперь мне гораздо проще находить общий язык с коллегами по проекту. Появились новые профессиональные знакомства. Что касается обучения VR-разработке, возможно и есть хорошие очные курсы, но я о таких не знаю. Зато есть немало обучающих онлайн-ресурсов. У Вышки был отличный крус VR-разработки на Unreal Engine, но он был закрыт из-за недавней смерти Станислава Маеренко, одного из преподавателей курся. Стоит изучить уроки и туториалы на ресурсах Unity 3D и Unreal Engine. Весьма неплохой цикл лекций от лондонского университета (University of London) по созданию VR-персонажей я нашла на Coursera. Ну и на YouTube огромнейшее количество разнообразных мануалов и туториалов самого разного качества. Хотя по моему глубокому убеждению, и создание контента виртуальной реальности, и обучение VR-разработке со временем переместятся в виртуальную реальность ведь это наиболее естественная среда для работы с виртуальной реальностью.

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

Подробнее..

3D Говорящие Головы. Третий проект центра разработки Intel в России

23.07.2020 10:06:27 | Автор: admin

Согласно известной шутке все мемуары в книжных магазинах должны располагаться в разделе Фантастика. Но в моём случае это и правда так! Давным-давно в далёкой-далёкой галактике в российском центре разработки Intel мне довелось участвовать в реально фантастическом проекте. Проекте настолько удивительном, что я хочу воспользоваться своим служебным положением редактора блога Intel в личных целях, и в рамках цикла 20 лет 20 проектов рассказать про эту работу.
3D Talking Heads (Трехмерные Говорящие Головы) это показывающий язык и подмигивающий бронзовый бюст Макса Планка; обезьянка, в реальном времени копирующая вашу мимику; это 3D модель вполне узнаваемой головы вице-президента Intel, созданная полностью автоматически по видео с его участием, и еще много всего Но обо всём по порядку.

Синтетическое видео: MPEG-4 совместимые 3D Говорящие Головы полное название проекта, осуществленного в Нижегородском Центре Исследований и Разработки Intel в 2000-2003 годах. Разработка представляла собой набор трёх основных технологий, которые можно использовать как совместно, так и по отдельности во многих приложениях, связанных с созданием и анимацией синтетических трехмерных говорящих персонажей.

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

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

А связующим звеном между этими тремя с половиной пунктами, а также привязкой к Intel служат четыре буквы и одна цифра: MPEG-4.

MPEG-4


Немногие знают, что появившийся в 1998 году стандарт MPEG-4 помимо кодирования обычных, реальных видео и аудио потоков предусматривает кодирование информации о синтетических объектах и их анимации так называемое синтетическое видео. Одним из таких объектов и является человеческое лицо, точнее голова, заданная в виде триангулированной поверхности сетки в 3D пространстве. MPEG-4 определяет на лице человека 84 особые точки Feature Points (FP): уголки и середины губ, глаз, бровей, кончик носа и т.д.

К этим особым точкам (или ко всей модели в целом в случае поворотов и наклонов) и применяются анимационные параметры Facial Animation Parameters (FAP), описывающие изменение положения и выражения лица по сравнению с нейтральным состоянием.


Иллюстрация из спецификации MPEG-4. Особые точки модели. Как видите, модель может шмыгать носом и шевелить ушами.

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

Какую модель? В MPEG-4 есть два варианта. Либо модель создается энкодером и передается декодеру один раз в начале последовательности, либо у декодера есть своя, проприетарная модель, которая и используется в анимации.

При этом, единственные требования MPEG-4 к модели: хранение в VRML-формате и наличие особых точек. То есть, моделью может служить как фотореалистичная копия человека, чьи FAP используются для анимации, так и модель любого другого человека, и даже говорящий чайник главное, чтобы у него, помимо носика, были рот и глаза.


Одна из наших MPEG-4 совместимых моделей самая улыбчивая

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


Модель, модель, а почему у тебя такие большие глаза и зубы? Чтобы лучше себя анимировать!

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

До чего дошел прогресс? До невиданных чудес!


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

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

Именно это и было реализовано в нижегородском Intel. Идея возникла сперва как часть реализации библиотеки MPEG Processing Library, разрабатываемой в свое время в Intel, а потом выросла не просто в полноценный spin-off, а в настоящий фантастический блокбастер.


Синтетический Валерий Федорович Курякин, продюсер, режиссер-постановщик, автор сценария, а местами и каскадёр проекта в то время руководитель группы разработчиков Intel.

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


Конвейер проекта по производству синтетических клонов образца 2003 года

Во-вторых, фантастическим было сочетание существовавшего в то время железа и реализованных в проекте технологических решений, а также планов по их использованию. Так, на момент начала проекта в моем кармане лежала Нокия 3310, на рабочем столе стоял Pentium III-500MHz, а особо критичные к производительности алгоритмы для работы в реальном времени тестировались на сервере Pentium 4-1.7GHz со 128 Mb оперативной памяти.

При этом мы рассчитывали на то, что в скором времени наши модели будут работать в мобильных устройствах, а качество будет не хуже, чем у героев вышедшего на экраны в то время (2001 год) фотореалистичного компьютерного анимационного фильма "Последняя Фантазия"


$137 миллионов составили затраты на фильм, созданный на рендер-ферме из ~1000 компьютеров Pentium III. Постер с сайта www.thefinalfantasy.com

Но давайте посмотрим, что же получилось у нас.

Распознавание и отслеживание лица, получение FAP.


Эта технология была представлена в двух вариантах:

  • режим реального времени (25 кадров в секунду на уже упомянутом процессоре Pentium 4-1.7GHz), когда отслеживается человек, непосредственно стоящий перед видеокамерой, соединенной с компьютером;
  • оффлайн режим (со скоростью 1 кадр в секунду на том же компьютере), когда распознавание и трекинг происходят по предварительно записанному видеофрагменту.

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

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

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


Качество распознавания и отслеживания FP образца 2003 года

Конечно, технология была несовершенна. Распознавание и отслеживание сбоили, если у человека в кадре были усы, очки или глубокие морщины. Но за три года работы качество значительно повысилось. Если в первых версиях для распознавания движения моделям при съемках видео приходилось наклеивать на соответствующие FP точки лица особые метки белые бумажные кружки, полученные при помощи офисного дырокола, то в финале проекта ничего подобного, конечно же не требовалось. Более того, нам удалось достаточно устойчиво отслеживать положение зубов и направление взгляда и это на разрешении видео с вебкамер того времени, где такие детали были едва различимы!


Это не ветрянка, а кадры из детства технологии распознавания. Intel Principle Engineer, а в то время начинающий сотрудник Intel Александр Бовырин учит синтетическую модель читать стихи

Анимация


Как уже было неоднократно сказано, анимация модели в MPEG-4 полностью определяется FAP. И всё было бы просто, если бы не пара проблем.
Во-первых, тот факт, что FAP из видео последовательности извлекаются в 2D, а модель трёхмерная, и требуется как-то достраивать третью координату. То есть, радушная улыбка в профиль (а у пользователей должна быть возможность этот профиль увидеть, иначе смысла в 3D немного) не должна превращаться в зловещую ухмылку.
Во-вторых, как тоже было сказано, FAP описывают движение особых точек, которых в модели около восьмидесяти, в то время как хоть сколько-нибудь реалистичная модель в целом состоит из нескольких тысяч вершин (в нашем случае от четырех до восьми тысяч), и нужны алгоритмы, вычисляющие смещение всех остальных точек модели на основе смещений FP.

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

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


Улыбка непростое дело для 3D модели и её создателей

Создание 3D модели конкретного человека.


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

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


Наш сферический человек в вакууме модель для персонализации

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

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


Это не кадр из фильмов ужасов, а текстура 3D-модели Pat Gelsinger, созданной с его разрешения при демонстрации проекта на Intel Developer Forum в 2003 году

Первоначальная версия технологий персонализации модели по двум фото была реализована самими участниками проекта в Intel. Но по достижении определённого уровня качества и осознании ограниченности своих возможностей, было решено передать эту часть работы исследовательской группе Московского Государственного Университета, имевшей опыт в данной области. Результатом работы исследователей из МГУ под руководством Дениса Иванова стало приложение Head Calibration Environment, выполнявшее все вышеописанные операции по созданию персонализированной модели человека по его фото в анфас и профиль.

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

Также была реализована полностью автоматическая версия реконструкции модели по видео последовательности, на которой человек поворачивает голову от одного плеча к другому. Но, как нетрудно догадаться, качество текстуры, извлеченной из видео было значительно хуже, чем у текстуры, созданной с фотографий цифровых камер того времени с разрешением ~4K (3-5 мегапикселей), а значит, менее привлекательно выглядела и полученная модель. Поэтому существовал и промежуточный вариант с использованием нескольких фото разного угла поворота головы.


Верхний ряд виртуальные люди, нижний реальные.

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

Визуализация.


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



Хотя плеер и был написан для Windows, но с учетом возможного портирования в будущем на другие OS, в том числе мобильные. Поэтому в качестве 3D библиотеки была выбрана классическая OpenGL 1.1 безо всяких расширений.

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

Конечно, сейчас такие методы уже неактуальны, но вспомнить их достаточно интересно. Так, для синтеза мимических морщин, то есть, небольших изгибов рельефа кожи на лице, видимых во время сокращения лицевых мышц, относительно крупные размеры треугольников сетки модели не позволяли создать настоящие складки. Поэтому была применена разновидность технологии наложения рельефа (bump mapping) normal mapping. Вместо изменений геометрии модели происходило изменение направления нормалей к поверхности в нужных местах, а зависимость диффузной компоненты освещенности в каждой точке от нормали создавала нужный эффект.


Такой он, синтетический реализм.

Но плеером дело не ограничилось. Для удобства использования технологий и передачи их во внешний мир была создана объектная библиотека Intel Facial Animation Library, содержащая функции для анимации (3D трансформации) и визуализации модели, так что любой желающий (и имеющий источник FAP) вызовами нескольких функций СоздатьСцену, СоздатьАктера, Анимировать мог оживить и показать свою модель в своем приложении.

Итоги


Что дало участие в этом проекте лично мне? Конечно же, возможность совместной работы с замечательными людьми над интересными технологиями. В проект меня взяли за знание методов и библиотек рендеринга 3D моделей и оптимизации производительности под х86. Но, естественно, ограничиться 3D не удалось, пришлось пойти в другие измерения. Для написания плеера понадобилось разобраться с парсингом VRML (готовых библиотек для этой цели не имелось), освоить нативную работу с потоками в Windows, обеспечив совместную работу нескольких тредов с синхронизацией 25 раз в секунду, не забыв про взаимодействие с пользователем, и даже продумать и реализовать интерфейс. Позже к этому списку добавилось участие в улучшении алгоритмов отслеживания лица. А необходимость постоянно интегрировать и просто сочетать с плеером написанные другими членами команды компоненты, а также представлять проект во внешнем мире значительно прокачала мои навыки коммуникации и координации.

Что дало участие в этом проекте Intel? В результате нашей командой был создан продукт, способный служить хорошим тестом и демонстрацией возможностей платформ и продуктов Intel. Причем, как железа CPU и GPU, так и программного обеспечения наши головы (и реальные и синтетические) внесли свой вклад в улучшение библиотеки OpenCV.

Кроме этого, можно смело утверждать, что проект оставил видимый след в истории по итогам работы его участниками были написаны статьи и представлены доклады на профильные конференции по компьютерному зрению и компьютерной графике, российские (GraphiCon), и международные.
А демонстрационные приложения 3D Talking Heads показаны Intel на десятках выставок, форумов и конгрессов по всему мирy.

За прошедшее время технологии, конечно, сильно продвинулись, соответственно, упростив автоматическое создание и анимацию синтетических персонажей. Появились Intel Real Sense камеры с определением глубины, а нейронные сети на основе больших данных научились генерировать реалистичные изображения даже несуществующих людей.
Но, всё же, размещенные в публичном доступе наработки проекта 3D Talking Heads продолжают просматривать до сих пор.
Посмотрите на нашего юного, почти двадцатилетнего, синтетического говорящего MPEG-4 героя и вы:

Подробнее..

Проводим 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.

Подробнее..

Заходят как-то в бар Мандалорец, Генлок и СКМ

24.11.2020 12:18:29 | Автор: admin
Это был обычный летний будний день между первой и второй волнами коронавируса, а это значит, что мы (СКМ Трекинг) могли позволить себе такую роскошь как работа в офисе с полигоном для тестирования нашей гибридной радио-инерциальной системы захвата движений под боком. Тут нам поступил звонок:
узнали про вашу систему трекинга и хотим посмотреть ее в действии, прямо сейчас, так как вечером мы возвращаемся в Питер!
Хоть мы и были в офисе, но профилактические меры не позволяли пропускать кого-либо в здание кроме сотрудников, поэтому мы продолжили телефонный разговор и выработали план действий с учетом карантинных мер.
Заказчиками на том конце провода оказались ребята из Black Anchor Productions Ltd. и Parallax Digital. Они еще раз описали задачу, которую предполагалось решить с помощью нашей системы трекинга (захвата движений), указали желаемые характеристики системы, и мы согласовали первую серию онлайн тестов.
Без онлайна в этом году никуда, и поэтому, прежде чем проводить тесты на их площадке в Питере, заказчику важно было понять способности системы в целом и определить возможность ее интеграции в свои процессы. Поэтому совместно мы определили условия, в которых необходимо протестировать систему и способы визуализации и представления результатов тестирования.

Домашние тесты


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

image

image

image

Направили все результаты теперь как говорится мячик на их стороне. Спустя несколько недель обратной связи и уточнения с нашей стороны требуемых характеристик и условий работы, а с их стороны текущих и потенциальных возможностей и режимов работы нашей системы (без уточняющих тестов с приходом новой информации не обошлось конечно), нам поступило приглашение приехать на офлайн тесты в культурную столицу нашей Родины Санкт-Петербург, он же Питер, он же СПБ, а олды скажут Ленинград. Нам тогда позвонил их генеральный директор Кирилл Андреевич и сказал:
приезжайте завтра в Питер к нам на площадку на неделю, с проживанием поможем
От такого хорошего предложения трудно отказаться, поэтому мы собрали систему, взяли билеты на ночной поезд и рванули в Питер! Я как любитель путешествий вдвойне была рада уехать куда-то дальше 100 км от Москвы после больше чем полугода карантина и изоляции, да еще и в такой красивый город!

Разведка боем


Прибыли на Московский вокзал, где нас встретила и заселила в апартаменты недалеко от площадки заказчика очаровательная Анна Карелкина операционный управляющий компании Black Anchor Productions & Parallax Digital.

image

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

image

image

Огромный павильон 17 * 30 метров с высокими потолками 10 м, которых нам так не хватает на нашем полигоне. Я думаю многие задумывались при просмотре фильмов и телепередач А как же это все снимают? Как всё происходит?. И вот мы попали в теле закулисье и своими глазами увидели, как осуществляется теле- и кино-магия. Поэтому если вы меня спросите о каких-то деталях переговоров в тот первый день я навряд ли смогу что-либо вспомнить, так как с любопытством наблюдала за съемочным процессом.

image

image

Кстати о съемочном процессе. Он был не совсем обычный ведь мы были на площадке не просто у магов, а магов первого уровня! (ну или какая у них там градация). Это новая прорывная технология в области кинопроизводства которая позволяет сократить не только сроки производства, но и его бюджет.

image

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

image

Качественное преимущество новой на нашем рынке технологии, которую сейчас развивает команда Black Anchor Productions & Parallax Digital заключается в эффекте Parallaх изменении видимого положения объекта относительно удалённого фона в зависимости от положения наблюдателя. На применении физических и оптических свойств этого космического эффекта в прямом смысле ведь данный термин пришел к нам из астрономии, где он применяется для измерения расстояния до удалённых объектов (в частности в парсеках) сделали ставку Джон Фавро и компания Disney + и создали с ее помощью сериал Звёздные войны: Мандалорец, который стал настоящим прорывом в киноиндустрии. Как признались руководители это стало одной из вещей, которая вдохновила их начать работу в этом направлении. Именно тогда стало ясно применение прорывных и новейших технологий это настоящее кредо команды Black Anchor, да и как может быть иначе ведь для этого у них есть все необходимые специалисты, штат которых постоянно расширяется, и работает не только на съемочной площадке, но и в других городах России и за рубежом.

image

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

В процессе наблюдения за съемочным процессом сразу стали ясны преимущества такого вида производства контента:
  • Система трекинга камер позволяет отслеживать положение камеры в любой точке зоны покрытия, виртуальная сцена, разработанная на базе игрового движка компании Epic Games Unreal Engine, меняет ракурс, в зависимости от положения оператора, сохраняя естественную глубину и перспективу заднего фона. Вывод изображения с realtime рендерингом осуществляется на LED экраны высокого разрешения, с достаточной частотой светодиодов и интенсивностью свечения до 4000 lm, для того чтобы получать кинореалистичное изображение в качестве до 16K.

  • Весь набор предпродакшн инструментов находится в руках талантливых vfx художников, которые могут создать любую виртуальную сцену и на программном уровне интегрировать посредством osc и dmx протоколов различные AR и CGI объекты, в зависимости от сценария и задач.


image

image

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


image

image

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


image

image

Трекинг камеры


Для того чтобы виртуальная сцена на экране меняла ракурс, вслед за изменением положения объектива в зоне трекинга, необходим так называемый Genlock это метод, при котором видеовыход одного источника (или определенный сигнал) используется для синхронизации других источников изображения вместе. Это помогает обеспечить совпадение сигналов во времени в точке объединения или переключения. Для этого необходимо знать данные о перемещении камеры и направлять их в режиме реального времени на сервер для синхронизации с виртуальной сценой. Тут главными героями становятся системы трекинга. Про особенности условий работы оптических и инерциальных систем я упоминала в своей прошлой статье Замокапить в экстремальных условиях или как мы принимали участие в шоу ДОЗОР, однако здесь стоит немного другая задача нежели чем разовый мокап актеров система должна отслеживать перемещения камеры на всем съемочном процессе и практически при любых условиях съемки. Идеальная трекинговая система для такого случая универсальная, надежная, точная и пуленепробиваемая!
Специалисты из Black Anchor prod. протестировали все доступные на рынке решения по трекингу, однако универсальной и полностью подходящий под наибольшее число сценариев и условий не нашли, поэтому в данный момент используют разные системы, выбирая нужную исходя из условий, в которых она должна работать не только стабильно, но и с субмиллиметровой точностью. А это значит, что открывается большая возможность быть первыми кто сделает решение наиболее универсальное и подходящее для задач трекинга камеры в кинопроизводстве!
С большей долей вероятности такая задача посильна гибридной системе трекинга (объединяющей 2 или более систем), так как в таком случае можно подчеркнуть все достоинства и свести к минимуму все недостатки, которыми обладают системы в отдельности.
Именно такое гибридное решение и разрабатывает наша команда СКМ Трекинг! С помощью нашего софта мы улучшаем и объединяем данные, которые присылают радио-инерциальные модули. Таким образом наш софт борется с систематической ошибкой инерциальной системы и наличием шумовой составляющей сверхширокополосных радио модулей (СШП). Для этого в нашем арсенале имеются нелинейный алгоритмы комплексной фильтрации на базе собственных моделей движения. Радиосистема реализует алгоритм Time Difference of Arrival (TDoA). Его суть заключается в следующем. Часть модулей, называемые здесь якорями, располагается неподвижно по периметру зоны с известными координатами, синхронизируются между собой и излучают периодический сигнал. На людей, их части тела или другие предметы, положение и ориентацию которых необходимо отслеживать, крепятся модули, называемые маркерами, которые работают исключительно на прием данных сигналов. Т.к. моменты излучения сигналов тегу неизвестные, он измеряет разности моментов времени их приемов. Такой подход позволяет обеспечить неограниченное число тегов, а большая дальность их работы большую рабочую зону.

Теория, конечно, хорошо, но что же на практике?

Итак, вернемся на площадку!


Мы познакомились с основными членами команды Black Anchor prod. и определили план тестов на первый день с учетом съемочного процесса. Нам выделили место на площадке где мы можем расположить себя, наши ПК и систему полноценное рабочее место!

image

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

image

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

image

Питались модули от обычных внешних аккумуляторов 2300 мАч, чего хватало на полный рабочий день. Маркер крепили либо на камеру, либо на штатив, когда камера была в работе.

image

image

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

И это только начало! А дальше


Команда разработчиков посветила нас в свои дальнейшие планы: в дальнейшем приоритет будет смещаться в сторону создания собственного аппаратного и программного комплексов, который позволит произвести развертывание системы на любой площадке, и комплекс будет полностью мобилен, и позволит работать без потери качества и точности трекинговых систем. Анна, провожая нас, сказала, что в более широком смысле, дальнейший вектор развития компании будет определяться в зависимости от потребностей рынка и киноиндустрии в целом и намекнула, что свои продвижения в этом направлении они намеренны показать в том числе и на примере собственного короткометражного фильма работы над его производством уже закончены остался самый крайний этап постпродакш но как мы уже поняли это не займет много времени технология позволяет видеть почти финальную картинку уже в процессе ее съемки, что пожалуй еще одна важная приятная и крутая особенность.
Отдельное спасибо команде Black Anchor prod. за действительно теплый прием (в том числе и культурную программу), возможность увидеть боли клиента и понять какие параметры и характеристики системы необходимо доработать для кейса трекинга камеры для задач виртуального кинопроизводства.

image

В итоге мы определили наши следующие шаги: дорабатываем определенные параметры и возвращаемся на Питерскую площадку для ее покорения!

To be continued

P. S.

Случайности не случайны? Сейчас как раз дочитываю книгу Виктора Пелевина (кстати, тоже закончил НИУ МЭИ, как и наша команда) S.N.U.F.F., так вот там в пост апокалиптическом обществе описываются технологии, с помощью которых в небольшом помещении можно с помощью 3D экранов и других технологий воссоздать длинную аллею, с набережной и бризом, так что это сложно отличить от реальности. И вот перед нами технологии Black Anchor prod., которые демонстрируют нам что подобное будущее (его хорошие стороны) совсем близко!
Подробнее..

Представляем новую платформу 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 доступна вблоге.

Подробнее..

Для чего военные используют технологии ARVR

04.05.2021 10:05:07 | Автор: admin
Армия как институт часто вносит решающий вклад в появление и развитие новых технологий. Появление устройств виртуальной и дополненной реальности и систем, которые работают на их основе, тоже одна из заслуг военно-промышленного комплекса. Более того, сегодня армия становится для многих производителей AR/VR-устройств крупнейшим заказчиком. Контракт Microsoft и Министерства обороны США на поставку 100 тысяч шлемов виртуальной реальности HoloLens стал беспрецедентным для всего рынка: его стоимость составляет $480 млн.

В этой статье мы проанализируем, для каких целей военные используют виртуальную и дополненную реальность.

Источник

Чему учат солдат в виртуальной и дополненной реальности


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

  • тренировка навыков управления техникой, например, авиационные тренажеры;
  • отработка навыков обслуживания техники;
  • отработка первичных боевых навыков у новобранцев;
  • обучение действиям в боевых условиях;
  • тренировка медиков в стрессовых ситуациях и удаленная медицинская поддержка.

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

Тренировка навыков управления техникой


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

Источник. Тренажёр вертолета Ка-27

Источник. Летчик первого класса ВВС США Шейн Стюарт, студент курса подготовки пилотов, тренируется на симуляторе полета в виртуальной реальности в Резервном центре вооруженных сил в Остине, штат Техас.

Отработка навыков обслуживания техники


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

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

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

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

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

Отработка первичных боевых навыков у новобранцев


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

  • виртуальные тиры стационарные стрелковые тренажеры для отработки базовых навыков стрельбы из различных типов оружия;

Источник. Американские военные отрабатывают стрельбу из гранатомета, используя высокотехнологичный симулятор артиллерийской стрельбы (UGTI) на базе ВВС в Майноте, Северная Дакота.

  • тренажеры для отработки прыжков с парашюта;


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

Обучение действиям в боевых условиях


Симуляторы боевых действий


Наиболее сложными и специфичными, а также малоприменимыми вне армии, являются симуляторы боевых действий (англ. Battlefield Simulators). Они бывают двух видов: тактические и полноценные, которые, в свою очередь, делятся на симуляторы группового взаимодействия и симуляторы полноценных боевых действий, так называемые Virtual WAR.

Тактические симуляторы


Не так давно на вооружение армии США поступили так называемые Marine Tactical Decision Kit, их основная целевая аудитория морские пехотинцы. Это набор оборудования для командного центра в зоне боевых действий, который по сути заменяет собой реальную карту боевых действий. Используется при:

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

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



Marine Tactical Decision Kit разрабатывался как инструмент оттачивания навыков принятия тактических решений. Дополненная реальность не должна была заменить тренировки в полях, но повысить эффективность обучения солдат в казармах. Возможно, использование спорных, на наш взгляд, решений (например, тактических карт в дополненной реальности), не принесли проекту популярности. Разработку анонсировали еще в 2017 году, и с тех пор о развитии проекта в армии США ничего не известно.

Симуляторы группового взаимодействия


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

Источник. Солдаты армии США отрабатывают взаимодействие

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

Полномасштабные симуляторы (Virtual WAR)


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

Источник. Российский симулятор командного взаимодействия

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

Тренировка медиков в стрессовых ситуациях и удаленная медицинская поддержка


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

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

Источник. Подготовка медиков в Вооруженных силах Великобритании

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

Например, наша компания ЛАНИТ-Интеграция в начале пандемии 2020 года разработала систему удалённой координации действий медиков, в основе которой эргономичные умные очки (можно почитать об этом здесь). Она позволила сократить количество непосредственных контактов медицинского персонала с пациентами и снизить риск заражения врачей. Врачи получили возможность собирать консилиумы в дистанционном режиме, быстро проводить обучение персонала. COVID-19 дает много осложнений и на печень, и на сердечно-сосудистую систему, и на другие органы, поэтому без консультаций узких специалистов не обойтись. Решение позволяет позвать в красную зону узких специалистов, которые могут проконсультировать по вопросам сопутствующих заболеваний, но так, чтобы не подвергать медиков опасности нахождения рядом с больным. Если подумать, потенциал у этого решения гораздо шире: его можно использовать в хирургии, медицине катастроф и работы скорой помощи, в научной работе и лабораторной медицине.

В следующей статье мы расскажем про конкретные AR/VR-решения для военных. Продолжение следует.

Материал подготовлен в соавторстве с mklochkova.

Подробнее..

Свой 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.
Точность пока оставляет желать лучшего. Более того, маркеры являются не самом удобным способ взаимодействия с дополненной реальностью, поэтому далее будем пытаться отойти от их использования и улучшать точность работы.

Подробнее..

7 идей, как использовать AR-технологии в музее

04.03.2021 16:23:55 | Автор: admin

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

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

1. Дополните коллекцию известными произведениями искусства

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

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

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

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

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

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

2. Дайте посетителям возможность самостоятельно познакомиться с коллекцией

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

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

3. Повышайте качество экскурсий с помощью AR-технологии

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

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

4. Сделайте ваш музей лучшим в своем роде

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

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

5. Создайте виртуальный AR-портал к музею

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

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

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

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

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

6. Используйте AR-зеркала

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

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

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

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

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

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

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

Подробнее..

Развитие 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, правда, может повысить конверсию, привлекательность товара и лояльность аудитории. Но пока технологией (по сути, любой) интересуется лишь пара производителей и она не используется массово - донести ее до конечного потребителя сложно. И тут вопрос - кто первым рискнет взяться за технологию на полную. Маркетплейсы, которые решат бороться с конкурирующими площадками за счет новых возможностей или продавцы, которым рано или поздно придется искать новые пути демонстрации товаров, которые сегодня все больше становятся похожими друг на друга как две капли воды?

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

Подробнее..

Чипирование в ЭКО, VR в медицине и нейросети в УЗИ

29.12.2020 08:14:25 | Автор: admin

Технологии приобретают смысл, когда несут пользу людям. Особенно это касается медицины. В новом интервью поговорим про технологии в медицине и репродукции, причем тут Яндекс и как с помощью BigData "нагнуть" фармкомпании.

Гость Дмитрий Фомин. Дмитрий основатель сети клиник женского здоровья Клиника Фомина и генетической лаборатории Medical Genomics. Он адепт искусственного интеллекта и технологий, активно внедряет их в своей клинике, чем нас и привлек. Сейчас активно занимается созданием рекомендательной системы для врачей на базе ИИ и BigData, которая не только несет пользу для пациентов, но и имеет научную ценность.

Чипирование в ЭКО

Фаря:

- Прежде всего очень интересно, что такое чипирование биоматериала при ЭКО? Что там в эмбрионе можно чипировать?

Дмитрий:

- Судя по формулировке, это, наверно, выглядит, будто человека чипируют еще до рождения?

- Ага, анти-5G-шники нас сейчас заклеймят.

- На самом деле, чипируют, конечно, не сам эмбрион. Но сначала расскажу историю.

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

В результате оказалось, что один ребёнок был биологическим ребёнком только отца, а другой предполагаемый ребёнок не был биологическим ребенком ни отца, ни матери, то есть просто чужой.

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

- Это стресс.

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

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

процесс ЭКО: врач берет эмбриона, смотрит в микроскоп, где лазером отрезает от него кусочек для анализа.процесс ЭКО: врач берет эмбриона, смотрит в микроскоп, где лазером отрезает от него кусочек для анализа.

- Это на экране зародыш человека? А что вы от него отрезаете?

- Это самый частый вопрос: а что вы забрали - ручку или ножку? Не волнуйтесь, на самом деле мы берем нужные клетки из плаценты.

Искусственный интеллект в УЗИ

- Какие уникальные технологии вы разрабатываете?

- Например, искусственный интеллект в ультразвуке. Когда вы приходите к врачу на УЗИ, вы не знаете, качественно он его провел или нет. Его вывод субъективен.

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

Во-первых, врач должен сделать несколько срезов: справа, слева, сверху, снизу и так далее. ИИ за этим следит. А также за тем, зафиксировал ли врач срезы в нужной последовательности.

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

Все это напрямую влияет на дальнейшее принятие решений.

- Есть ли вероятность, что со временем во многих задачах врач не будет нужен?

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

- Я видела такое приложение украинских разработчиков, которое позволяет поставить первичный диагноз по фото. А Google выпустил приложение, которое по фотографии определяет вероятность рака.

- Сегодня этих предсказателей на основе алгоритмов очень много. Самый крупный это система IBM Watson. Но пока нет законодательства, которое позволяет искусственному интеллекту ставить диагноз и нести за него ответственность.

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

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

- Я думаю, что первично технологии созданы не для удешевления, а для качества.

Хотя еще двадцать лет назад ЭКО стоило 20 тысяч долларов, как квартира. Сегодня - 3000 долларов. И всё это будет дешеветь, дешеветь и дешеветь. Но и количество потребления из-за этого тоже будет расти.

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

Мы в самой современной операционной, где проводят операции в VR

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

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

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

- Наша система это, по сути, огромный банк знаний. В ней хранится вся наша медицинская Big Data. Эти данные можно анализировать, находить корреляции, искать инсайты.

- А оценивать эффективность лечения можно?

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

Например, лекарства. Мы назначаем препараты только на основании доказательной медицины. Но все равно возникает вопрос: а помогает ли тот или иной препарат в нашей популяции с нашим геномом?

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

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

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

Подробнее..

Мой топ полезных инструментов для Unity разработчика

09.01.2021 14:22:36 | Автор: admin

Всем привет! Меня зовут Григорий Дядиченко, и я всё ещё разрабатываю проекты на юнити под ключ. Сегодня хочется поговорить про полезный инструментарий для Unity разработчика. У меня давно на эту тему есть свой топ ассетов или софта, которые используются почти в каждом проекте, плюс несколько своих утилит. Не будем касаться слишком широких и банальных инструментов типа adb, а составим некоторый набор того, что можно использовать почти в каждом проекте.

В разработке я около 7 лет, большую из которых провёл в инди или аутсорс/фрилансе. Поэтому речь пойдёт про инструменты для себя, а не про CI&CD пайплайн, или что неплохо было бы знать и докер с кубером. Это действительно крутые и полезные инструменты (хотя не основная экспертиза юнити разработчика от слова совсем), но речь по инструменты для ускорения/удобства домашней разработки коммерческих проектов. Чтож начнём.

Graphy

Как и написано в описании. Ультимативный FPS каунтер. Очень удобен для дебага на устройствах и тестирования перфоманса. Простой в интеграции - просто закинуть префаб, но при этом отображает всё и даже больше. Фпс, память, график производительности, а также информацию об устройстве вроде OS, объеме оперативной памяти, поддерживаемом графическом апи, уровне шейдеров и т.п. Это, пожалуй тот ассет, который используется практически в каждом проекте.

https://github.com/Tayx94/graphy

Lunar Unity Mobile Console

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

https://github.com/SpaceMadness/lunar-unity-console

Desmos Calculator

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

https://www.desmos.com/calculator?lang=ru

NGINX

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

https://nginx.org/

Simple Build Server

Моя личная небольшая утилита для пересылки файлов или билдов на тестовые устройства или же другие ПК в локальной сети. В основном я пользуюсь ей на андроиде, так как adb установка не скажу, что сильно удобнее, но что важнее с телефонами xiaomi нельзя устанавливать билды через adb, если в телефоне не стоит сим карта. Которая мне абсолютно не нужна. В отличии от того же autoindex nginx данный сервер mobile friendly. Потому что в стандартном autoindex nginx слишком маленькие кнопки. Для файлов конечно можно использовать shared folder или ftp, но в целом стандартный веб интерфейс для меня получился в разы удобнее и проще в конфигурации.

https://github.com/Nox7atra/SimpleBuildsServer

Odin - Inspector and Serializer

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

https://assetstore.unity.com/packages/tools/utilities/odin-inspector-and-serializer-89041

KinoGlitch

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

https://github.com/keijiro/KinoGlitch

JLs Unity Blend Modes

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

https://github.com/penandlim/JL-s-Unity-Blend-Modes

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

Подробнее..

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

02.02.2021 02:11:38 | Автор: admin

Всём привет. Меня зовут Дядиченко Григорий, и я люблю трекинг. За последние годы технологии трекинга развивались семимильными шагами и становились всё более и более демократичными. Появилось много технологий самого разного плана. Мне повезло поработать с огромным количеством технологий разного рода, поэтому данные знания хочется несколько структурировать. По большей части мы будем разбирать технологии трекинга совместимые с Unity или Web. Так что, если эта тема вам интересна. Добро пожаловать под кат!

Трекинг в общем это очень объёмная тема. Существует множество технологий трекинга, про которые хочется рассказать в этой серии статей. Но сегодня хочется поговорить про Face Landmark Recognition. В целом в плане распознавания лица существует множество других прикольных технологий и задач, которые они решают, типа того же Face Recognition в FaceID и подобных кейсах безопасности, но в контексте работы с графикой и интерактивных визуализаций самой интересной, пожалуй, является именно технология определения ключевых точек на лице.

Применение AR масок

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

Face Tracking в продакшене

Покупка Epic Games технологии Hyprsense.

В 2020 году у нас состоялась интересная сделка. В статье, конечно, говорится о том, что анимации в фортнайт. Это возможно, но есть и другая сторона вопроса. В игровой разработке и в видео продакшене многие пытаются перейти от дорогостоящего производства лицевых анимаций с помощью Motion Capture технологий, таких как Faceware, к более простым инструментам. FaceRig используется VTuberами. Да и во многих случаях не нужна точность, которую предоставляют дорогостоящие технологии захвата движений. Даже в проектах, которые мне когда-то нужно было разработать встречался такой подход, что часть лицевых анимаций записывались с помощью трекинга ARKit. Поэтому одно из применений это упрощённый демократичный путь производств, который подходит тем же инди студиям, у которых нет бюджета на закупку оборудования за несколько тысяч долларов. Хотя сравнительно недавно у Faceware появилось предложение для инди.

AR Маски в рекламе

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

https://player.vimeo.com/video/220504292

https://mixr.ru/2021/01/20/trollo/

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

Технологии

Большая часть разбираемых технологий будет совместима с Unity, но кроме того я встречал интересные решения для веба, да и некоторые нельзя просто обойти стороной. Отфильтрованы были те, у которых нельзя скачать SDK для того, чтобы самостоятельно проверить работу SDK или же которые не совсем понятно, каким образом можно купить (если технология платная).

SparkAR

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

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

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

Поддержка устройств: Большое количество устройств

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

Говоря про маски, нельзя не упомянуть Spark. Спарк это прекрасная технология, которая позволяет создавать свои Instagram маски. Если вас устраивают ограничения политик фейсбука и маски ориентированы в первую очередь на шейринг это отличный выбор, так как в вашем приложении можно разместить ссылку на маску и дать её пользователя. В любом случае пользователи будут делиться вашей маской в инстаграм, фейсбук и т.п. Широкая поддержка устройств является основным плюсом. Кроме того, большое количество обучающих материалов по сбору масок.

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

ARFoundation (ARKit/ARCore)

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

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

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

Вес SDK в билде: Около 2МБ

Поддержка устройств: Маленькое количетсво устройств

https://docs.unity3d.com/Packages/com.unity.xr.arfoundation@4.1/manual/

В версии ARFoundation 4.1 Face tracking поддерживается уже и ARCore и ARKit (Достаточно долгое время ARFoundation поддерживал только ARCore). Отдельно на самих технологиях останавливаться не хочется, так как они имеют не так много различий и, по сути, объединены общим API в AR Foundation. Из плюсов встраиваемость в Unity приложение, стабильная работа, относительная простота интеграции и бесплатность. Основным же минусом является небольшое количество поддерживаемых устройств.

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

OpenCV + Dlib

Цена: Бесплатное/реализация для Unity 135$ (https://assetstore.unity.com/packages/tools/integration/opencv-for-unity-21088 + https://assetstore.unity.com/packages/tools/integration/dlib-facelandmark-detector-64314 )

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

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

Вес SDK в билде: около 9МБ (без классификаторов, но их можно скачать по сети)

Поддержка устройств: Зависит от требуемого функционала

https://opencv.org/

Последняя условно бесплатная технология. Условно бесплатная, потому что в целом можно взять бесплатные библиотеки, написанные на том же Python, развернуть сервер обработки и слать данные куда душе угодно. В случае локальной сети это даже возможно сделать в реальном времени. Что же касается реализации для Unity - если не писать порт самостоятельно, то она платная. Основной нюанс OpenCV и Dlib, что это не готовые технологии и с ними надо уметь работать. К плюсам можно отнести широкую поддержку платформ. Работает оно почти везде и умеет очень многое. Даёт больше контроля, позволяет самостоятельно настраивать качество классификаторов и многое другое. На Python огромное количество материалов для изучения, которые легко переносить в Unity поняв суть SDK.

Из минусов - очень высокий порог входа. Для того, чтобы комфортно работать на OpenCV в реалтайме и не иметь проблем с производительностью - нужно очень много знать. Во-первых, знать OpenCV достаточно хорошо. Во-вторых, знать, как работать с многопоточностью в Unity, да и в целом знать Unity достаточно глубоко. Cтоит ввязываться, только если интересно разобраться в теме компьютерного зрения или разработки своей технологии. Или не лезь, оно тебя сожрёт. Базовые примеры на андроид выдают 2 FPS, но я реализовывал и стабильные 30, и стабильные 60 на средних устройствах закапываясь в это SDK с головой.

XZIMG

Цена:от 2100

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

Вес SDK в билде: около 2МБ

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

Поддержка устройств: Большое количество устройств

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

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

ARGear

Цена: Бесплатно/от 25$ в месяц

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

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

Вес SDK в билде: около 9МБ

Поддержка устройств: Большое количество устройств

https://argear.io/

По ощущениям работает хуже, чем XZIMG. Подтормаживает даже на Xiaomi Redmi Note 8T. Проект пример на андроид плохо организован и без пляски с бубном не заводится. Но в целом с этим можно работать. В целом, как сервис по подписке выглядит неплохо, и не просит сразу платить за коммерческую лицензию несколько тысяч долларов, что думаю для кого-то будет плюсом. Больше всего расстроил, по сути, sample project для Unity, так как у меня sdk. которые не заводятся из коробки - не вызывают доверия.

BRFv5

Цена: Неизвестно

Поддерживаемые платформы: Web/Android(Chrome)/IOS(Safari)

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

https://github.com/Tastenkunst/brfv5-browser

Единственное целиком и полностью веб SDK с непонятным ценообразованием, которое в первую очередь понравилось мне своим качеством. Пример его работы можно посмотреть тут. Но как же оно хорошо работает. Я протестировал его и на своих тест устройствах на смартфонах (важно: на андроид работает именно в хроме) и на пк погонял, и для 68 лендмарок это прям круто. В плюс к тому это веб. Прям даже интригующе. Качество трекинга в разы лучше, чем у того же Media Pipe графа для построения меша лица.

В заключении

Из не вошедших, пожалуй, стоит упомянуть Banuba и Deepar. Бануба не вошла, так как у неё непонятное ценообразование и как бы там ни было сложная схема получения триала. А Deepar так как у него отсутствует SDK для Unity, и при этом он мне не показался особо интересным.

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

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

Подробнее..

Как работает VR? Разбор

15.03.2021 20:13:27 | Автор: admin
У VR есть такая особенность. Все, кто попробовал нормальный VR обязательно хотят подсадить на эту тему всех своих друзей и близких. Всё дело в том, что VR это потрясающие ощущения, о которых невозможно рассказать. Это обязательно надо пробовать самому.

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


Сегодня мы расскажем вам про все крутые технологические фишки в современных VR-девайсах.А поможет мне в этом первая в мире модульная VR система HTC Vive Cosmos Elite.

Трекинг




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

К трекингу в современных VR шлемах есть два кардинально разных подхода. Первый называется inside-out tracking или внутренний трекинг. Он работает незамысловато.

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

Минус такой трекинг не самый точный, а также камеры не могут фиксировать положение рук когда они вне обозрения например, за спиной. А руки за спиной в VR-играх это не редкость. Например, когда вы машете лазерным мечами like-a-pro в Beat Saber. Также там часто прячут инвентарь и тяжелое оружие.

Такая система трекинга используется в Oculus Rift S и Quest, а также у младшего HTC Vive Cosmos.



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

Сначала первая базовая станция мигает инфракрасным светом. Сразу за ним испускается широкий падающий лазерный луч. Каждое ИК-мигание это начало отсчета. И так 60 раз в секунду.

С момента получения первого мигания шлем и контроллеры начинают отсчет 1,2,3 и так далее. Затем их датчики улавливают лазерный луч. Но из-за смещения датчиков в пространстве один датчик уловит луч на отсчете 3, другой на 5, третий, например, на 11.И как раз базируясь на этой задержке в отсчете от датчиков и рассчитывается положение шлема и контроллеров в пространстве.



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

Такая система используется в Oculus Rift, Valve Index, HTC Vive первой волны, и в текущем HTC Vive Cosmos Elite.Но конкретно с Vive Cosmos есть нюансы.

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

  • Обычный Cosmos
  • Премиальный Cosmos Elite



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



А в Elite в комплекте идут все модули для внешнего трекинга.Но весь прикол в том, что меняя модули одну модель можно превратить в другую.



Например, можно проапгрейдиться с младшей модели на старшую.А можно пойти дальше и подключить к старшей модели самые продвинутые контроллеры с трекингом всех пальцев Knuckles от Valve Index. Представляете, они прекрасно будут работать, если вы конечно где-то их найдёте.

Экраны




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

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

А пока лучший выбор для VR это именно Super-Fast LCD. По сути, это тот же IPS только быстрый. Именно такой стоит в HTC Vive Cosmos Elite.



Второй важный параметр это частота обновления она должна быть минимум 80 Гц, а лучше 90 или выше. Сейчас самая высокая частота у шлема Valve Index 144 Гц, но на практике вряд ли вы найдет компьютер, который может выдавать такой FPS, ведь в VR нужно рендерить две разные картинки одновременно, для левого и правого глаза.

Что мы имеем в Vive Cosmos Elite? Те самые Super-Fast LCD дисплеи, частота обновления 90 Гц и самое высокое на потребительском рынке разрешение 1440 1700 пикселей для каждого дисплея, в итоге получается 2880 x 1700 пикселей.

В Valve Index и HTC Vive Pro разрешение немногим меньше 1440 1600, то есть разница всего 100 пикселей в высоту. И кажется что это немного, но в VR-шлеме эта разница ощущается и в том числе играет в пользу угла обзора.

Это третий важный параметр в VR. Тут он 110 градусов благодаря линзам, которые наложены на экран для придания изображению сферической картины, привычной нашему глазу.

Чем больше угол обзора, тем меньше выражается эффект экранного окна и мы больше приближаемся к полному охвату человеческого зрения.Более того в HTC Vive Pro был OLED-экран, поэтому переход на IPS (Super Fast LCD) и увеличение разрешения тут очень заметны.

Еще одна крутая технология, о которой хотелось бы рассказать, сейчас есть в профессиональных решениях от HTC. Это система трекинга глаз Vive Pro Eye и она позволяет реализовать технологию фовеального рендеринга.



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

Беспроводные технологии


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



И вот у HTC есть огромный козырь в рукаве. Существует беспроводной набор VIVE Cosmos Wireless Adapter Attachment Kit.Эта штука работает на особенном стандарте Wi-Fi 802.11ad. Это не Wi-Fi 6 и не Wi-Fi 5. Стандарт называется WiGig и работает он на частоте 60 ГГц, поэтому скорость фантастическая и нет задержек.



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

Игры




Но самая главная VR-технология это игры!Поэтому подрубаем всё и играем!

Один из Мифов VR, что не во что играть, а это вообще не так.У HTC есть свой сервис подписки Viveport. Cейчас там 1168 тайтлов, совместимых с Cosmos Elite. При этом 2 месяца подписки вам сразу дают в подарок.Но если сразу с головой пустить в VR, то это безусловно Half Life Alyx!

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

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

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



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

Другой отличный пример Walking Dead: Sins and Sinners. Но этот проект я не рекомендую людям со слабыми нервами. Ещё есть вирусный Beat Saber, в котором я провел немало часов. В общем и целом, игр хватит не на один месяц игры.

Кстати, чего не хватает во многих шлемах, это связи с внешним миром. В HTC Vive Cosmos можно открыть забрало откинуть экран и посмотреть, что происходит вокруг.

Будущее VR


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



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

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

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



Говоря о кино, Джон Фавро при съемках Маугли активно использовал VR для погружения актеров в мир будущего фильма. И с каждым днем появляется все больше профессионального софта для разных областей. Уверен, что скоро появятся профессии, которые будут существовать только в VR.

Понятно что сейчас VR это дорогое удовольствие. Шлем HTC Vive Cosmos Elite в России стоит 100 тысяч рублей. При этом можно докупить беспроводной адаптер. Не стоит забывать, что для игр в VR понадобится и еще и мощный ПК.

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

Июньские заметки о виртуальной реальности. Часть 2

04.06.2021 16:20:58 | Автор: admin
Продолжение, первая часть тут

А что кроме игр?


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

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

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

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


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

Порно, кино для взрослых


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

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

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

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

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

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

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

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

Феномены погружения


Когда я играл в Rust 5-8 лет назад я понял, насколько мир может стать живее в случае если игрок начинает молить о пощаде (или угрожать) голосом, а не в чате. Но в полную силу это раскрылось в игре MMO шутере Will to Live.

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


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

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

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


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

Когда мир перестал быть плоским и появилось больше механизмов для взаимодействия с ним, это стало генератором для самых разных забавных ситуаций. Например, когда один игрок со стола успевает схватить пистолет без патронов, а второй игрок обойму. Благодаря тому, что в игре видно, что в руках у другого персонажа, это становится сразу очевидно. Игроки естественным образом (т.е, даже не нажимая клавишу Push to talk) на это реагируют и смеются.

Эффекты, о которых я говорю так же заметны в игре Echo Arena:


*Кстати, очень понравилось, как в Echo Arena сделаны удары по игрокам. Эти удары субъективно хорошо ощущаются, даже если просто смотришь видео этой игры.

Игроки в игре Echo Arena дружелюбны. Мне кажется, что корень этого явления в том, что люди в игре легко позволяют другим людям заходить в их личное пространство и прикасаться в себе (потому что VR это безопасно и не чувствуется как угроза) и это здорово повышает уровень доверия между игроками.

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

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

Демонстрация жилета:


Есть и более сдержанные отзывы, в том числе на русском. К слову, Tacticsuit на 40 точек прикосновения стоит 500$. Это стоимость жилета, но есть крепления для рук, ног и даже головы. Наверное, может быть полезно использовать его в шутере, чтобы понять, откуда тебе прилетело.

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

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

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

Мне также очень интересно возможно ли в haptic vest проводить телесную психотерапию? Или это не сработает?

Спортивный аспект игр


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

Вот видео, где VR бокс пробуют профессиональные боксеры:


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

Для VR фитнеса уже начали продавать интересные железки Icarus.







Выглядит интересно, но стоит от 2000 до 9000 евро за ПРО версию. Для мышц пресса штука классная и, как мне кажется, это не такая уж большая цена для большого спортзала. Тем более, что в нём есть игры с мультиплеером и соревновательный элемент.

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

Поэтому я даже написал письмо в поддержку DecaMove (проект, о котором я расскажу ниже).

Good day! I really like your startup DecaMove and I even ordered it myself.
But it seems to me that you have not noticed the potential of this device in vr sports. Please note that exercise bikes connected to virtual reality are now being sold. I think that they are too expensive, and secondly a lot of people already have exercise bikes or treadmills that just stand somewhere in the corner and are not used.
I think it's easy enough to position your device as a sports device. You simply connect the decamove to your leg, record the acceleration determine the potential speed at which the person is pedaling. Faster you pedal, the faster your car/bike/horse goes in the vr game.
I think you need to release a video showing this application of your device.
I also really like your device DecaGear, it will be cool if a device with such functionality comes out for such a price and I wish you the best of luck with this cool project.


Цена велосипедов с играми для VR:
Holodia VR 400$
VirZoom 400$

DecaMove



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

Небольшой обзор:


Развернутый обзор:


Заказать можно здесь, с доставкой он обошелся мне в 5700р.

Но покупать DecaMove вовсе не обязательно! Ведь вместо него можно использовать обычный смартфон+приложение, если в нём есть акселерометр и компас:


В третьей части поговорим о позиционировании, трекинге, Full body tracking, существующих решениях и ценах на них, и о многом другом.
Подробнее..

Июньские заметки о виртуальной реальности. Часть 3

11.06.2021 16:11:37 | Автор: admin
Часть 1
Часть 2


Позиционирование, трэкинг. Full body tracking. Решения и цены


Основное, что нужно знать.

Всё, что вы можете получить, используя Oculus Go, Google Dream, Samsung Gear или мобильный телефон вложенный в шлем это 3DoF, вращение головой. То есть вы не сможете перемещаться в пространстве, двигаясь вперед, в шлеме вроде Oculus Go. У полноценных шлемов типа HTC или Quest 2 куда больше степеней свободы:



Кроме того, есть внутренний трекинг (использующий камеры на шлеме) и внешние маяки (LightHouse или так называемые базовые станции) с трекерами. Также есть камеры глубины типа кинекта и обычные камеры, считывающие маркеры/ir-светодиоды.

Подробнее о принципах FBT можно почитать в этих статьях: раз, два.

Чем хорош и интересен Full Body Tracking?


Лично меня он заинтересовал после просмотра видео, где блогер использует пинки в игре Blade and Sourcery:


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

Vive trackers + LightHouse


Довольно дорогое удовольствие. Один vive tracker стоит от 10 до 17 тысяч рублей в зависимости от версии. Третий релиз трекеров легче и работают они значительно дольше. Базовая станция 2.0 обойдётся в 25 тысяч рублей, б/у станцию 1.0 можно купить за 8-12 тысяч рублей. Советуют использовать не менее 3-х трекеров.

Датчики обратно-совместимы. Можно использовать трекеры 3.0 с базовыми станциями 1.0 и 2.0. Непонятно, с какой частотой они обновляются (отслеживаются). Но вот тут есть обсуждение этого вопроса.

Базовые станции первых и вторых версий отличаются довольно сильно:

sdvuh, IXBT:
Главное, пожалуй, что БС 2 поколения могут работать до 4 штук вместе и обеспечивать трекинг до 10*10 метров, а первого только 4*4 на 2 штуках. Но для обычного пользователя это, имхо, малоприменимо. Ну и точность трекинга выше, типа не 1 мм, а 0,1 мм, тоже не слишком важно)

Whisper, IXBT:
1. 2 бски могут стоять друг от друга по диагонали на 10 метров против 5 метров у первых
2. Заявляли большую точность по сравнению с первыми станциями. В целом мне и первых БСок тут хватает при стрельбе из снайперки на большое расстояние в Pavlov этого достаточно.
3. Поддержка до 4-х БСок для одной зоны (вот тут точно не помню уже, может и больше). Первые только 2 б-ски поддерживают.
4. Ещё заявляли, что меньше движущихся частей и из-за этого выше надежность. Но тут у меня сомнения, так как много слышал про поломки вторых БС-ок и очень мало про первые.


Senso Suit

Преордер костюма с 15 трекерами, в каждом из которых вибромотор для обратной связи + базовая станция), обойдется в 600$. На русских порталах продают за 200 000.




Senso известна также своими перчатками Senso Gloves DK3 1000$ за комплект.

Tundra tracker

На кикстартере появился Tundra tracking с более демократичными ценами, прямой конкурент HTC.

Комплекты уже включают в себя базовую станцию для отслеживания трекеров:

3 трекера 300$, 22 500р
5 трекеров 456$, 34 200р
7 трекеров 630$, 47 250р

SlimeVR Full Body Tracker Crowdfunding Pre-Launch

Также готовится к выходу SlimeVR, комплект из 5 датчиков за 140$. Про него можно сказать только то, что частота обновления будет 100 герц, и они могут работать без подзарядки до 15 часов.


Cookie-Body Tracking DK1 180

Главная цель проекта сделать FBT как можно более дешевым.
Работает в 120 герц, 1 cm precision, 85x55 FOV, 3m range. Обещают отдать комплект за 600 SEK (5400 руб).
Преордер обещают на Kickstarter к концу апреля.
Латенси в районе 3-5мс и трекеры не требуют батареек.

Судя по всему, это трекинг при помощи распознавания маркеров (?). В Driver4VR, например, недавно появился такой режим.

Может быть, CookieBody будет работать лучше/быстрее, чем Driver4VR?

Демонстрация.


Shockwave-костюм

Костюм из спандекса за 265$ c 12 IMU-трекерами и 64 точками для имитации прикосновения (ну или для ощущений от взрыва гранат) при помощи вибромоторов.
Первые, кто вложился в проект, могли заказать за 195$.

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



Костюм нативно поддерживает SteamVR, может использоваться через Driver4VR. Указано, что поддерживает следующие игры: The Age of Monsters, Sci-WAR: 2220 и Ghost Assassin VR, VR Chat, Skyrim VR, Fallout 4, Alyx.

К сожалению, не нашёл частоту обновления. Если вас заинтересует костюм поищите у них в дискорде или в комментах на кикстартере.

Почему так дёшево? Думаю, основная причина в том, что Shockwave не использует внешний трекинг, а использует IMU (Инерционно измерительный блок) то есть акселерометры. Такой вид трекинга можно назвать инерционным.

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

Самый доступный трекинг для VR

Driver4vr позволяет использовать Kinect (1500р с авито) или PS Eye для полного трекинга тела.



Кроме того, при помощи Driver4vr можно использовать и обычные вёб-камеры + маркеры из кубиков, прикреплённые к телу.

Нативно Driver4vr не поддерживает несколько кинект-камер, а ведь именно это приходит сразу в голову. Однако это не фантастика:


Странно, конечно, что у драйвера до сих пор нет поддержки RealSense-камер, которые должны быть уже намного более технологичными, чем Kinect.

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

Вот здесь попытались сравнить качество трекинга Kinect/HTC:

Отмечу также, что на форумах писали, что Kinect+Driver 4VR потребляет довольно много CPU, так что непонятно, потянет ли компьютер сразу два кинекта.
*Driver 4VR не поддерживает 2 кинекта, но на ютубе можно найти демонстрацию, где задействовано несколько кинектов.

Системы перемещения в VR


Virtux Omni



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

10 500$ платформа, два пояса, 4 пары обуви.
13 000$ платформа, датчики, два пояса и 8 пар обуви.

Пока проходим мимо.

ROVR



Гораздо более демократичные цены, чем у Omni ROVR1 обойдётся в 700 евро.

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

Cyberith Virtualizer



600-1000$ в зависимости от комплекта.


Kat Walk



Первое, что хочется узнать про платформу для VR это цена. У KAT WALK C она не то чтобы совсем неподьёмная 1499$ (164 т.р)

Про Kat Walk на Pikabu я увидел следующий отзыв:
1) В комплекте идут резиновые накладки на ноги разных размеров с пластиковыми (скорее всего) шайбами на подошвах. Резина рвётся, шайбы царапают поверхность.
2) Делая большой шаг (а в очках естественно вы не видите края платформы ) будут постоянные зацепы за этот край. Это бесит
3) Нельзя поиграть в любую игру которую захочешь. Надо чтобы игра была оптимизирована их разработчиками. Список таких игр на прошлый год был весьма скромный. В их магазине есть и простенькие игры с уровнем графики относительно современных мобильных телефонов, НО! бесплатных там всего пару штук. За все остальные надо платить, при чём ты не можешь купить эту игру. Ты покупаешь время, которое проведёшь в игре. И цены по лично моим меркам дурные.
4) После каждого перезапуска надо делать калибровку, чтобы при физическом передвижении вперёд персонаж не двигался назад. Калибровка иногда дико выпендривается и надо ковырять вручную ПО, чтобы прописывать положение пояса.
5) Сам пояс в плане комплекции игрока вообще не универсальный, как по обхвату талии, так и по высоте человека.
6) Херовы датчики 6 если быть точнее. Один ресивер получает данные с двух датчиков ног и ещё один получает данные с металлической оси, на которой висит пояс + датчик позади пояса в области поясницы. Далеко не всегда вся эта песня хочет синхронизироваться друг с другом.
7) Опять же, не знаю как сейчас, но мы покупали две установки, которые комплектуются терминалом, похожим на тот, в котором пополняется мобильный счёт и оплачиваются всякие гос.услуги. Большая тяжелая е**ла с отвратительной антивандальной клавиатурой, которой невозможно пользоваться.
8) Поверхность чаши покрыта несколькими трапециевидными листами то ли пластика, то ли тонкого металла. И не дай б**ь боже начнутся задираться уголки этого материала (а они априори начнут). Всё, пиз**ц. Плюс эту поверхность надо постоянно смазываться перед игрой какой-то силиконовой полиролью.
9) Ох сколько раз в кураже мы бились руками и геимпадами о металлическую трубу, которая идёт от платформы вверх и держит всю конструкцию
Не знаю где вы нашли их за $1500, мы покупали примерно за 120000 грн каждую + растаможка и доставка обошлась примерно столь же

Kat Loco



Гораздо интереснее и доступнее выглядит Kat loco. Комплект состоит из трёх трекеров, которые крепятся на ногах и поясе и позволяют перемещаться по VR вполне естественно. Однозначно не у всех найдется место дома, куда можно поставить большую платформу типа KAT Walk C, поэтому Kat Loco вариант. Более подробно о нём напишу чуть ниже.


Цена вопроса 230$

Впечатления по Kat Loco от Ивана Ивко (IXBT):


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

Сразу предупрежу, я тестил часа 2, и в игре из этого времени был минут 15, т.е. это скорее впечатления от процесса настройки, чем от игрового процесса.

1) Базовая настройка и подключение. В целом, все достаточно просто и по инструкции, но было 2 момента, на которые я убил основное время, это Kat gateway (утилита управления) должна стартовать от имени администратора, иначе она не может взаимодействовать со SteamVR (считывать положение шлема, эмулировать контроль, встраиваться в оверлей). Это, в принципе, в FAQ на сайте описано (на 4 странице, ага), но не очевидно и без привязки к главным симптомам (только к части), как будто это редкая ситуация.

При этом сама утилита никак не сообщает, что у нее какие-то проблемы взаимодействия, просто не делает то, что должна. Минут 20 убил на эксперименты и переустановки.

Датчики беспроводные, но для связи с компьютером и отслеживания в пространстве используется собственная базовая станция, поэтому требуется калибровка при первой установке и смене места игры (кстати, в инструкции указано, что отслеживание гарантируется при расстоянии до базовой станции от 1 до 2 метров, 1,5 оптимально).

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

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

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

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

2) Возможности

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

Даже когда датчик шагов срабатывал, была явная задержка между началом шагов и началом движения в игре, по ощущениям что то типа 0,5 1 секунды. Насчет быстроты остановки не скажу. Замечал при движении рывки (т.е. шагаю, двигаюсь вперед, остановился, снова начал двигаться, хотя я не прекращал шагать). Мб это было связано как раз с неправильным шаганием.

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

Про возможность бега не скажу. Заявлено, что чтобы бежать в игре, надо шагать еще чаще, но у меня пока и с просто перемещением проблемы)). Буду дальше тестировать.

  • Привязка направления перемещения. По умолчанию привязано к направлению шлема, однако есть опция независимого осмотра. Т.е. можно идти куда-то и при этом вертеть головой по сторонам, смотреть в другую сторону. Фича работает.
  • Режим бокового перемещения (опция). Отставляешь ногу вбок, движется вбок. (есть еще какой-то альтернативный режим с поворотом лодыжки но я его пока не вкурил)
  • Режим Движения назад (опция). Отставляешь ногу назад, движется назад.
  • Режим Круиза (опция). Выставляешь ногу вперед, движется вперед.

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

Минусы

  • То, что я писал выше про необходимость калибровки направления. Выставляешь вперед левую ногу, движешься вперед. Чуть покрутишься, выставляешь правую начинаешь двигаться не вперед, а вперед и вбок.
  • (главный на мой взгляд минус) движение в этих трех режимах дискретное. Т.е. Вперед назад влево вправо. Нельзя держа ногу впереди сдвинуть ее правее и начать двигаться вперед вправо все равно будешь двигаться вперед. Только когда совсем вправо ногу сдвинешь, начнешь двигаться уже только вправо. Написал по этому поводу разрабам, чтобы сделали непрерывную (а не дискретную) смену движения в зависимости от положения ног (что, ИМХО, логично), мб пофиксят. Это бы решило и первую проблему (калибровки), т.е. движешься чуть не туда ну сдвинул ногу вбок и норм.

3) Поддержка в играх, возможность конфигурирования

Система, по сути, эмулирует нажатие определенных кнопок с контроллеров. Т.е. указываешь в профиле для игры, какой джойстик используется для локомоции и какая кнопка за это отвечает и вперед. ОФициальный список поддерживаемых (т.е. для которых профили протестировали) игр довольно велик, порядка 100 штук. Но наблюдаются несостыковки, к примеру, в No Man's Sky у меня перемещение не работало, а потом я понял, что это потому, что профиль сделан под раскладку вайв махалок (т.е. движение по нажатию курка), а у меня индекс контроллеры (движение по стику). Но кастомные профили как для существующих, так и для отсутствующих игр создаются очень легко, так что это не проблема. Т.е. я бы сказал что проблем совместимости быть не должно,

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

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

Погонял еще Kat Loco.
Пока 10 часов не наиграл, так что не буду спешить с впечатлениями.

Кратко

1) Если шагать как в рекламном ролике (т.е. часто и мелко, а не редко и высоко) отслеживает хорошо, можно ходить без рывков.

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

3) Как работает отвязка от направления контроллеров/шлема.
Судя по всему, кат считывает положение тела и (в зависимости от настроек) шлема и контроллеров. Далее если выставлена настройка отвязать перемещение от взгляда при получении сигнала движение передает команду наклон стика (условно, в зависимости от того, какой контроллер используется со шлемом), причем не вперед, а в таком направлении и под таким углом, чтобы компенсировать поворот контроллеров/шлема, и двигаться в направлении тела. Видно, если бежишь вперед и машешь контроллером влево вправо, этакие рыскания, когда Кат вносит поправки на лету.

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

WalkOVR



От 84$ за один датчик до 229$ за 5 датчиков.

Обзор:

Принцип примерно тот же, что у Kat Loco.

Сравнение Kat Loco и Walkovr:
WalkOVR


Kat Loco


На последней минуте обзора ютубер говорит, что ему больше нравится Kat Loco.

Virtusphere

Нельзя не вспомнить и про ВиртуСферу. Поставляется развлекательным паркам, скорее всего, ценник 10 000$+



Это, видимо, ранняя версия:



Infinadeck

Большая, громоздкая, дорогая всенаправленная беговая дорожка.


Real Go

Создается студентами ИТМО, выглядит недурно, но сколько будет стоить непонятно.




Устройства для игр в сидячем положении


Cybershoes



Принцип действия вы сидите на стуле (он должен уметь вращаться вокруг оси) и перебираете ногами. Цена 369$. Непонятно, почему так дорого вроде, относительно простое устройство.

3Drudder



Давишь на пятки идёшь назад, давишь носками идёшь вперёд. Чем больше наклон тем выше скорость. За 100 баксов можно купить на Amazon.

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

Оптимальным устройством для передвижения в VR кажется Kat Loco, но к нему есть ряд вопросов.


Система не имеет своего трекинга и базируется на акселерометрах. Kat Loco может срабатывать ложно, либо не срабатывать совсем.

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

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

С другой стороны нужно ли будет такое управление, если мы сможем управлять движением в VR с помощью мысли? Или передвижение с помощью мыслей, а не движения ног может убить погружение? Возможно, мы так и продолжим использовать в VR наши руки и ноги, даже когда мы сможем управлять персонажем с помощью мысли.

На ютубе, кстати, есть видео Home Made VR BOOTS, в котором парень сделал примерно тот же Kat Loco. И главное, что его побудило на это тошнота при перемещении в VR при помощи обычных контроллеров:


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

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

На Ali есть готовы сенсоры для Arduino.

Как может выглядеть игра, которая это использует:


Тут видео с созданием одного из таких контролеров:



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

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

И ещё одна интересная самоделка для передвижения в VR:




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

Костюмы с обратной связью


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

Демонстрация:


Цена на Теслу, как и в случаев одноименного автомобиля, не бюджетная более 5000$

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


4*4 см/5*9 см EMS электрода колодки стимулятор нервной мышцы силиконовый гель десятки электродов цифровой акупунктурный физиотерапия десятки подушек с али-экспресса.

Весьма бюджетно, как и сам китайский прибор.

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

На тему применения электродов для обратной связи есть довольно интересные и перспективные исследования.



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


Что интересно, пока я гуглил про EMS в VR, я нашёл видео, где пытаются ускорить человеческую реакцию посредством электростимуляции:


А вот это уже интереснее:

Об этом эксперименте я узнал благодаря каналу VR Studio.

Mean Gene Hacks выложил видео, как он испытывал гальваническую стимуляцию вестибулярного аппарата малыми токами, играя в гонки:


Самое устройство было изобретено давно, он лишь его немного допилил и сделал современным.

Подробнее о самом устройстве, где есть схема сборки:


Стоимость сборки около 50 баксов.

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

Аналогичная сборка.

Тут я могу порекомендовать походить по профилям учёных, участвующих в проекте. Например по проектам, в которых участвует Pattie Maes из MIT. У него много работ по HCI (Human Computer Interaction):

Вернёмся к жилетам.

На рынке есть относительно бюджетные Tactot и TactSuit от bhaptics.

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

TactSuit X40 (40 вибромоторов) 499$
TactSuit X16 (16 вибромоторов) 299$
Haptic face (6 вибромоторов) 149$
Arms (6 вибромоторов для каждой руки) 249$
Hands (3 вибромотора для каждой руки) 249$
Feet (3 вибромотора для каждой ноги) 249$.

В комплекте получается совсем уже не детская цена в 1 395$, 104 т.р.



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

Есть также Vest Pro Woojer с 6 точками обратной связи за 500$.

Эти жилеты используют запатентованный, мощный, полифонический и бесшумный тактильный преобразователь Osci . Я так понимаю, это что-то типа мини-сабвуферов.

Но всё, что есть сейчас на рынке, это только вершина айсберга.

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

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

Haptic gloves. Перчатки для VR с обратной связью


В целом, перчатки становятся дешевле и выбор довольно большой. 2-3 года назад я не видел перчаток дешевле 300-500 т.р, сейчас перчатки появились и в потребительском сегменте.

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

Haptic-перчатки, которые могут оказывать серьезное сопротивление (т.н силовые), пока находятся в районе профессионального сегмента их используют для работы хирургов, спасателей и обучения космонавтов. Сопротивление осуществляется при помощью магнитных тормозов или через шумный компрессор. Стоимость выше 5000 $.

Самые интересные и продвинутые модели, заслуживающие внимания, это HaptX Gloves DK2, Senseglove Nova и Teslasuit Glove.

HaptiX Gloves DK2





Sensogloves Nova



В этом видео по таймкоду видны ранние прототипы Sensogloves Nova, это довольно любопытно:


Teslasuit Glove



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

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

Давайте рассмотрим одну из таких перчаток.

Manus gloves



Это Manus Gloves за 5000 $ и вот впечатления пользователя.


А так выглядят Senso Gloves DK3 за 500$



Основа перчаток 7 IMU-датчиков и 5 вибромоторов. Считывание 150 FPS с отзывчивостью 10мс.

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

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





В целом, чтобы отслеживать движение пальцев, VR-перчатки не обязательны. Это умеют делать контроллеры HTC и Valve Index.

Есть также Etee контроллеры за 260 евро:


Есть поделки в виде трекинга рук и пальцев на основе Leap Motion


Oculus Quest 2 умеет отслеживать руки и пальцы посредством камеры. Я попробовал, и мне понравилось работает вполне сносно, думал, будет гораздо хуже.


Технологии будущего


У VR есть ещё очень много проблем и ограничителей, они только-только начали массово входить в нашу жизнь. Видеокарт нету, либо они очень дороги. Даже самые топовые видеокарты с трудом тянут разрешение 4-5k, а ведь уже есть возможность купить шлемы с 8k разрешением и 200 FOV.

SLI и Crossfire вроде как умерли, и даже WiFi6 не обладает достаточным каналом для того, чтобы передавать разрешение в 5к.

И это всё ещё очень дорогая технология, особенно, если ты хочешь не только качественный шлем, но и полный трекинг. С OLED-экранами шлемы делать перестали и делают на LCD, у которого есть свои особенности. DPI оставляет желать лучшего. Но всё же свет в конце тоннеля виден движение и развитие есть, прогресс уже не остановить. Давайте расскажу, что может изменить VR в будущем.

CREAL

Это копипаста, к сожалению не нашёл источник:

Современные дисплеи это такие цветные плоские экраны, и они к сожалению не способны передавать свет таким же образом, как он поступает в глаза в реальной жизни. Эту проблему и пытаются разрешить швейцарские инженеры из стартапа CREAL. Ну типа See Real смотри реально.

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

Ну а пока разрешение таких дисплеев составляет 1000 х 1000 пикселей в области обзора 60 градусов.

Управление силой мысли, Brain Computer Interface.


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


MindControl от Next-mind обойдётся в 400$.
Обзор на Habr.

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

В области BCI происходит примерно то же самый замкнутый круг, что был со шлемами для VR 10-15 лет назад. Пока не будет потребителей в достаточном количестве не будет и игр. Пока не будет игр не будет потребителей.

Надо отметить, что Next-mind далеко не первый стартап. Есть также Neurosky Mindwave.

О BCI и его значимости очень много говорит Гейб.

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

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

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


Подробнее о Oculus Quest 2


Заказ с Амазона

Адрес доставки указывать на английском:
Baranov Vladimir Vladimirovich
Taganskaya 12-12 (Улица, дом, квартира)
Ekaterinburg,
Sverdlovsk region (Свердловская область)
620011
Russian Federation

С вас далеко не сразу после заказа спишут деньги, и после покупки на Ali это было не привычно. У меня деньги списали через 3-5 дней.

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

Через некоторое время придет новое письмо, с требованием оплатить таможенную пошлину, которая составляет 15% от стоимости товара свыше 200$.



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

Кабель и роутер я заказал на Ali. Кабель обошелся в 1200р, роутер в 5.2т.р
(Xiaomi Redmi AX6 WiFi 6 6-ядерный 512M сетчатый домашний IoT 6 усилитель сигнала 2,4G 5 ГГц оба 2 двухдиапазонных OFDMA).

Что касается моделей роутеров, VR-комьюнити сделало вот такую табличку.

SideQuest


Игры в магазине Oculus Quest 2 очень дорогие, бесплатных вообще единицы. Включив режим разработчика и поставив SideQuest, можно поиграть в неплохие игры бесплатно или за относительно небольшую плату.

Для установки необходимо сделать несколько шагов:

1 Шаг. Аккаунт разработчика.
2 Шаг. Установка ADB драйвера.
3 Шаг. Активируем режим разработчика в Oculus app на смартфоне
4 Шаг. Качаем и устанавливаем SideQuest
5 Шаг. Коннектимся по кабелю. Разрешаем отладку по USB, надев шлем.

Подробный гайд по настройке.


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

Кстати, зарегистрироваться в SideQuest на компьютере у меня так и не получилось регистрация работает только с телефона.

Из приложений могу порекомендовать Pavlov VR Shack компьютер для игры не нужен, хотя мобильная графика шлема, конечно, гораздо слабее ПК-версии. Она сейчас где-то на уровне 2000-2003 года (Half Life-1, Halo).

В этом видео как раз рассматривают самые популярные шутеры Oculus в плане технологичности графики:


Motion Sickness


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

После игры дискомфорт остается на 30-40 минут.

После 20-30-минутной сессии игры реальность ощущается как VR. Сложно объяснить это ощущение, но я не чувствую полного слияния со своим телом. Как будто руки до сих пор виртуальные, немного чужие, и я не чувствую полную и безоговорочную связь с ними. Иногда возникает импульсивное движение взаимодействовать с реальностью так, как я бы это сделал в VR (проскролить или меню вызвать).

Про укачивание и приёмы борьбы с ним хорошо написано на ixbt.

Отдельно хочется привести пост sdvuh, как он отчаянно боролся и учился передвигаться в VR играх:
Решил написать финальный отчет по своим тренировкам smooth locomotion. Сразу предупреждаю от попытки перенять мой опыт без критики и осторожности все люди разные и что русскому хорошо, то немцу может быть смерть.
Изначально после покупки моей первой VR гарнитуры (HP reverb g2) у меня выявилась острая непереносимость smooth locomotion (хождения со стика), при первой попытке в своей первой игре (Alyx) при нажатии на стик я сразу же потерял равновесие и чуть было не упал. Попытки как то приспособиться привели к печальным последствиям я не смог в этот день продолжить игру, а мысли о продолжении подобного издевательства вызывали отвращение.

Более месяца я играл с teleport locomotion и проблем никаких не имел, но было очевидно, что большая часть VR игр для меня недоступна, что меня категорически не устраивало и я был уверен в том, что проблему буду так или иначе решать. Я надеялся, что накопление опыта в VR само по себе решит проблему, но я ошибался это так совершенно не работает, по крайней мере со мной.

13 дней назад я утвердился в своих целях, окончательно понял, что VR для меня это серьезно и что время решительных действий пришло.
Первый день тренировок был очень коротким, я начал новое прохождение Alyx, со smooth locomotion. Я смог 20 секунд походить по стартовому балкону, покрылся холодным потом, ощутил рвотные позывы и на этом решил (был вынужден) прерваться.

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

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

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

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

12-й день (вчера), был первый, когда я смог поиграть полтора часа без последствий вообще (полное прохождение Alyx со smooth locomotion я завершил), а сегодня (13-й), я себе устроил экзамен, целенаправленно пытаясь раздолбать себе вестибулярный аппарат теми средствами, которые может предложить Alyx я ходил спиной зигзагами по поверхности с перепадами высот, старался фиксировать взгляд по разным сторонам, в конце даже выставил через консоль 200% рендеринг и отправился в большую открытую и светлую (я заметил, что чем светлее, тем сильнее укачивает) локацию, которая перед Джеффом. Игра начала лагать, картинка подергиваться. Вестибулярный аппарат местами срывался, плыл, но быстро восстанавливался без каких-либо последствий для самочувствия. Считаю, что я победил. Теперь собираюсь поиграть в blade and sorcery, потом пройти medal of honor и, наконец, грозу тошнотиков boneworks.


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

Natural Locomotion, которое позволяет двигаться естественно. Для движения необходимо махать контроллерами, а для прыжков прыгать:

Можно также ходить при помощи ног, используя для отслеживания массу девайсов от смартфона и Vive трекера до PS и Switch контроллеров:



Также имеется PocketStrafe, которые использует смартфон:


И Freedom Locomotion VR от Huge robot vr.

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


К сожалению, PocketStrafe и Freedom Locomotion VR заброшены.

Игра в облаке


Одна из самых перспективных вещей для автономных шлемов типа Oculus Quest 2 это игра в облаке. Будет здорово, если можно будет поиграть в PCVR из любой точки мира. Сейчас в SideQuest доступно Shadow VR, но я пока его не пробовал и есть сомнения, что мне хватит 100 Мбит от провайдера для качественной трансляции потока.

Что ещё полезного из софта для пользователя VR?

Vorpx
Позволяет играть на шлеме в обычные игры, но в 3D.

Trueopen vr drivers. Позволяет использовать контроллеры для создания бюджетного VR.

У разраба есть канал на Youtube, там есть довольно много забавного. Например, вот такой контроллер:


На этом заканчиваю, надеюсь было интересно.
Подробнее..

Обзор технологий трекинга 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