Итак, существует несколько подходов к виртуальной реальности.
[Spoiler (click to open)]1. Трёхмерное изображение на плоском экране. Нет, не привычные зд-игры, а именно объёмное трёхмерное изображение с эффектом "я смотрю на другой мир в окно". И да, для этого вовсе не обязательно стереоизображение для каждого глаза. Достигается этот эффект так: система следит за положением глаз пользователя и рисует для него проекцию, как и положено. Это можно делать как с помощью специальных датчиков, например от приставки WII
2. Очки виртуальной реальности. Дают трёхмерность за счёт стереоэффекта. Эффект достигается за счёт одного экрана, поделенного пополам и оптики, позволяющей максимально приблизить экран к глазам. Тут надо различать стереоочки и шлем виртуальной реальности. Шлем виртуальной реальности имеет трекинг головы, позволяющий "видеть из глаз" и крутить башкой. Стереоочки - просто позволяют просматривать стереоизображение. Начиная от красно-синих или затворных очков и заканчивая подражаниями шлему виртуальной реальности. Классическим примером шлема виртуальной реальности является OCULUS RIFT. Шлемы виртуальной реальности приводят к забавным эффектам и действительному погружению в игровой процесс. Не верите? Смотрите на реакцию людей, катающихся на виртуальных американских горках.
OCULUS RIFT Знаменитый OCULUS RIFT, к сожалению для него, стоит слишком дорого(350$), разрабатывался слишком долго и вышел слишком поздно. Казалось бы, совсем недавно на него собирали на кикстартере, он и не вышел то ещё толком, а уже нафиг никому не нужен. А началось всё с комплекта "стерео для бомжей" Google CardBoard
Естественно, ядром такого шлема является смартфон. Хороший смартфон. Но прикол в том, что смартфон вам всё равно нужен, и вы можете пользоваться им, как смартфоном)) А вот шлем виртуальной реальности фактически ничего не стоит и вообще баловство. В смартфоне есть всё необходимое - акселерометр\гироскоп для определения положения смартфона и трекинга головы и хороший экранчик. А также вай-фай, интернет и многое другое.
Для шлема виртуальной реальности, как я уже говорил, важен трекинг башки и подключение компьютеру, чтобы играть в тяжёлые компьютерные игры вроде Skyrim, а не андроидовские поделки. Кроме того, если трекинг на смартфоне для родных приложений работает из коробки, то для компа его также важно передавать. Вот тут статья, описывающая необходимые танцы с бубном по превращению смартфоно-шлема в полноценный шлем виртуальной реальности. Думаю, скоро появятся и нормальный софт для этого дела.
В сущности, пока нормального софта для сопряжения с компом не придумали и приходится слегка извращаться. Так что приведу некоторые хинты из той статьи. [Spoiler (click to open)]Видео Для просмотра фильмов в стерео, вам потребуется бесплатный плеер MX Player с установленным кодеком под ваш процессор, у меня это ARMv7 Neon, ну и собственно, видеофайл. Найти их легко на всевозможных торрент-трекерах, технология называется Side-By-Side или коротко SBS, вот по этим ключевым словам смело ищите. Плеер имеет возможность настроить соотношение сторон воспроизводимого видео, что крайне полезно для SBS файлов, которые в противном случае растягиваются по вертикали на весь экран. В моем случае мне потребовалось зайти в настройки - «экран» - «аспект» и выбрав «вручную» задать соотношение сторон 18 к 4. Подключение к компу. Вам потребуется установить такую версию драйверов для видеокарты, которая поддерживает произвольные разрешения. Если ваш смартфон и ваш монитор имеют по 1920х1080 пикселей на экране, то всё очень просто - в настройках видеокарты вам нужно создать произвольное разрешение 1920х540, а затем применить его к монитору. Вы увидите, как рабочая область экрана стала меньшей высоты и расположилась по середине экрана. Если картинка на вашем экране примерно такая, то вы все сделали верно:
Запускаете утилиту TriDef 3D Display Setup и выбираете опцию Side-by-side. Должно получиться вот так.
Также вам потребуется хороший и быстрый «удаленный рабочий стол», который не разлогинивается из вашей учетной записи на десктопе при входе через удаленку. Такой программой оказалась бесплатная Splashtop. вам нужно будет зайти в настройки и указать, что ваше беспроводное подключение нужно использовать локально, для чего вам потребуется в андроид-версии указать IP вашего компьютера явным образом. Если вы запустите игру из под утилиты 3D Ignition, то она покажется на экране вашего смартфона одновременно с тем, как это произойдет и на мониторе. Или нет. Потому что здесь скрывается самый горячий подводный камень нашей истории, и да, вы будете смеяться так же, как смеялся я. Следите за ловкостью рук: драйвер, который отдает стерео-картинку из игры требует фулскрина (если выбрать режим «в окне» - стерео работать не будет, будет обычный запуск игры), а программа доступа к рабочему столу с вашего смартфона кричит «я не могу запускать фулскрин, прости, да, совсем», и может лишь показать рабочий стол и окна на нем. Подключение трэкинга. Вам снова потребуется скачать хост и клиент версии программы под названием DroidPad. Именно она, при настройке одного из режимов, позволила совершить необходимое, и передать параметры датчиков в реальном времени по беспроводному доступу. Алгоритм такой - устанавливаете программу на декстоп и в смартфон, запускаете ее на смартфоне, выбираете режим «Mouse - Mouse using device tilting», и после этого запускаете её десктопную версию. Если все сделали в такой последовательности, должно заработать соединение, и вуаля - вы управляете курсором мыши на экране компьютера! Пока что беспорядочно и сумбурно, надо настроить.
Кроме того, не надо забывать, что у нас на смартфоне есть ещё камера, которая позволит нашему шлему задействовать ещё и дополненную реальность, но об этом чуть позже. Как мы видим, из смартфона может получиться вполне полноценный шлем виртуальной реальности, и необходимости в отдельных девайсах нет. Только софт сыроват. Так что скоро шлем виртуальной реалности будет появляться в каждом доме, вместе с смартфонами. Однако при ношении таких шлемов могут возникать различные негативные эффекты, в частности рябь в глазах, головокружение, головная боль и тошнота. Ибо экранчик всё-таки находится близко и глаза устают.
Как видите, линза Френеля действительно значительно меньше по объёму, и, следовательно, значительно легче. Что крайне критично для нагрузки на шейные позвонки. Линза Френеля позволяет делать очень "сильные" линзы с большим углом зрения. Это позволяет приблизить экранчик и уменьшить рычаг на шею. Кроме того, так как линза сама по себе не круглая, у неё нет диких искажений. На видео ниже Вам станет понятно, что я имею ввиду.
Такие линзы выпускает по 50-60 баксов стартап Wearality, якобы работающий на оборонку пиндосов и имеющий доступ к военным технологиям. Хотя, думаю, как раз ничего такого военного там нет. Да и цена завышена. Линзы Френеля отливаютя в матрице и не так уж и дороги. Пока что она выпускают линзы с углом зрения в 150 градусов, что больше всех шлемов виртуальной реальности на рынке. Но на месте им не сидится и они уже готовят линзы с обзором 180 градусов на каждый глаз. А всего обзор будет 210 градусов. Больше никакого виртуала в квадратике)) Выглядит это примерно так.
Что радует, шлем виртуальной реальности получился очень лёгким, всего в 90 грамм+смартфон. Другие шлемы весят грамм 300-400. Шлем получился лёгким, складным, компактным. Его можно просто надевать на бейсболку, что делает его удобнее. Бейсболка достаточно прочно сидит на голове и не требует, как другие шлемы, кучу ремешков.
Однако, есть и недостатки. На анимации сверху видно, что человек старается не смотреть вниз, поскольку шлем может и соскользнуть. Имхо, на козырьке бейсболки должны быть отверстия, а на самом шлеме соотвествующие шипы для надёжной фиксации. Кроме того, снизу и по бокам шлема должны быть какие-нибудь чёрные(возможно, из кожзама) гибкие занавески, чтобы в шлем не попадал естественный свет. Сверху будет прикрываться козырьком, спереди лицом, сзади смартфоном, а вот по бокам и снизу надо чем-то закрыть. Но это так, мелкая критика. Сама концепция такого шлема мне нравится. Кроме того в бейсболку можно встроить беспроводные сухие электроды для нейроинтерфейса.
3. Проектирование изображения на сетчатку глаза. Следующим шагом в системах виртуальной реальности является не экранчик, а прямое проектирование изображения на сетчатку глаза. Это повышает качество изображение и снижает усталость глаз. Делается это с помощью мини-проекторов на DMD-чипах. Да-да, таких же, которые используются в обычных проекторах или SLA-здпринтерах для фотополимеров.
Например, очки Avegant Virtual Retinal Display, судя по первым отзывам, обеспечивают намного более высокое качество изображения, нежели любые существующие устройства. При этом прибор не вызывает усталости и раздражения глаз. Секрет новинки в отсутствии дисплея. Изображение при помощи массива микрозеркал проецируется непосредственно на сетчатку глаз - независимо для левого и правого. В результате получается очень яркая и чёткая картинка. В данное время существует стартап avegant glyph, который представляет собой наушники с зд-очками-проекторами.
Есть два вида дополненной реальности - дополненная реальность, накладывающаяся на изображение с камеры и дополненная реальность, накладывающаяся именно на реальность. Например, на сетчатку или очки. Помните, я говорил про камеру на смартфоне? Да, это как раз этот случай. Давайте посмотрим, что это такое и с чем его едят.
С помощью дополненной реальности можно выводить навигационные указатели, рекламу, обучающие материалы, важные показатели вместо панели приборов и тд и тому подобное. Фактически все приборные панели могут стать чисто виртуальными. Устанавливаешь связь с нужным прибором по вайфаю, видишь показатели и вносишь изменения. Экранчики больше не нужны.
Гугл глаз пользуются проецированием тем же проектором. Проецирование идёт только на один глаз и, в целом, такая простая вещь, как просмотр фильма, для гугльглаза невозможна. Его дело выводить температуру и биение сердца))
Некрософт хохлоленс выглядят более впечатляюще и перспективно, хотя то, что видят пользователи крайне далеко от красочных отрендеренных демонстраций.
Вот если бы эти мониторчики были на всё очко с обзором в 180 градусов... Тогда бы они могли работать как шлем виртуальной реальности. А пока они мне напоминают бифокальные очки. Есть также секретный стартап Magic Leap, который собрал миллионы баксов, и, типа, всех порвёт, но пока неизвестно, на каких принципах он основан. Есть только впечатляющее видео, которое снято неизвестно как, но точно не на девайсе. Скорее это благие намерения, напоминающие демонстрашки хохлоленс.
Гаджеты и игровые контроллеры виртуальной реальности. В дополнении к шлему, то есть устройству вывода, нужны также устройтсва ввода. Клавиатуру не предлагать, её в шлеме не видно)) Ну что же, дам краткий обзор.
Просто потому, что это неплохая причина побегать. Хотя, конечно, так много не наиграешь, но всё же это хорошая альтернатива скучной беговой дорожке. В качестве контроллера "оружия" я бы использовал ружжо для лазертага. Хочешь - в виртуальной реальности за террористами бегаешь. Хочешь - в реале с друзьями по лесу гоняешь.
Нейроинтерфейсы. Нейроинтерфейсы считывают альфа-бета и прочие ритмы мозга, пытаясь по электрической активности угадать намерения человека. Это примерно также реально, как угадывать результат вычислений программы, опираясь на данные температуры в разных областях процессора. Гадание на кофейной гуще. Но... Программа может нам дать понять результат, намеренно нагружая и прогревая, например, видеокарту. Так и человек вынужден активировать определённые участки мозга, чтобы нейроинтерфейс распознал результат. Не выходит "захотел и повернул картинку вправо". Выходит как у джедаев. Захотел, сосредоточился, полился пот, призвал силу, из глаз закапала кровь... И наконец-то "прогрел мозг", чтобы чёртов датчик понял, что ты хочешь покрутить вправо. Да пребудет с тобой сила, брат. Приходится учиться самому и "учить программу" что же ты конкретно имеешь ввиду. Датчики для нейроинтерфейсов бывают сухие и мокрые. Сухие датчики не такие точные, мокрые же требуют смачивания специальным гелем, что вообще-то достаточно не удобно(нужно мыть потом голову). Стоят нейроинтерфейсы достаточно дорого. Самый "потребительский" нейроинтерфейс всего с 5 сухими датчиками стоит 300 баксов. Обзор на него можете прочесть здесь или здесь. Пока что я игрового применения нейроинтерфейсам за такое бабло не вижу. А вот для парализованных они являются единственной коммуникацией с внешним миром. В отличии от нейроинтерфейса для мозга, нейроинтерфейсы для протезов вполне имют место быть, ибо таки подключаются напрямую к нервным упраляющим окончаниям, а не пытаются определить результат вычислений по температуре процессора.
Камеры, вроде кинекта, получают не только обычное видеоизобрежение, но и карту глубин(depth) для каждого кадра. Стоимость у них конская. Самый дешёвый Intel RealSense стоит 100$, кинекты ещё дороже. Устроены они так: обычная камера, инфракрасная камера, инфракрасный прожектор или диод. Ну и процессор, который это всё обрабатывает и SDK к нему. Хотя можно считать и на центральном процессоре.
Обычная вебка стоит около 4х баксов. Посмотрим, что такое инфракрасная камера, которая и строит карту глубин. А инфракрасная камера, это тоже самая обычная вебка, из которой выкинут инфракрасный фильтр и вставлен фильтр видимой части спектра. Ну и копеечные инфракрасные диоды для секурити-камер. В общем на 5 баксов максимум. Тем более, что ученые из MIT порадовали обещанием улучшить разрешение 3D-сканеров ни много ни мало в тысячу раз! В обычном виде Kinect дает разрешение порядка одного сантиметра с расстояния в несколько метров. Установив перед устройством фотообъектив с поляризационным фильтром, исследователи делали серии из трех снимков, поворачивая фильтр между кадрами на тридцать, а затем на девяносто градусов. Полученные изображения были обработаны с помощью алгоритма, сравнивающего интенсивность света. В результате эксперимента эффективное разрешение было повышено до сотен микрометров.
Первое фото - результат сканирования пластикового стаканчика кинектом, на втором фоте результат сканирования промышленным лазерным сканером, на третьем фото результат сканирования кинектом с поляризационными фильтрами. Лично меня немного напрягает, что фильтр надо поворачивать. Ничего, кроме вращающего моторчика я придумать не могу, а любая механика в таком деле, имхо, зло. Для сканера сойдёт, но вот для виртула over real world не очень годится.
Однако есть и другие подходы. Необязательно использовать инфракрасные камеры. Например, можно использовать бинокулярное зрение. Когда две камеры дают стереокартинку. Расстояние между камерами известно заранее. А карта глубин строится следующим образом: Берётся точка на 1 камере, ищется соответствующая точка на второй камере. Между ними замеряется расстояние. К горизонту оно должно сходиться. Дальше в дело вступает простая математика с геометрией. И так прогоняются все точки и строится карта глубины. К сожалению, у данного способа не мало трудностей. Например, камеры могут быть по-разному настроены и воспринимать разные цвета. Что затрудняет поиск соотвествующих точек. Также вызывает проблемы быстроменяющееся освещение.
Однако, имея множество кадров, фотографий, компьютер способен найти общие точки и построить зд-модель по ним. Например, облачный сервис 123d Сatch.
Кроме того, мобильные камеры могут использовать данные гироскопа, чтобы точно знать, с какой точки относительно первого кадра был снят следующий кадр и использовать ту же математику, что и для бинокулярного зрения. Microsoft, например, представила свою софт-разработку MobileFusion, который превращает смартфон в зд-сканер.
Горадо лучше, имхо. Также очень важно следить за действиями пользователя. Обычно это делают с помощью кинекта, но можно снимать движения в реальном времени и с помощью обычных вебкамер. Вот, например, захват движений с помощью 3-6х обычных веб-камер 640Х480 или 2х кинектов и программы ipi desktop mocap.
А ведь совсем недавно захват движений требовал кучу датчиков, спуциальный костюм, стоил сотни нефти и происходил примерно так:
Я уже вижу системы на дешёвых 4х баксовых вебках, юсб-удлинителях и миникомпьютере, на манер рапсберри-пи, куда это всё втыкается. Вот тебе и дешёвая система анимации персонажей, вот и игровая площадка для виртуальной реальности, вот и система тренировок для любителей единоборств, балета и прочих мероприятий. Представляю, в какие прекрасные файтинги можно будет поиграть в ближайшем будущем. Да, да, в реальном времени строится модель реального мира и натягиваются текстуры. Теперь можно рассчитывать физику и забрасывать, например, виртуальный мяч в реальное кольцо, а нарисованный мяч, к тому же, будет отскакивать от реальных стен. Кроме того, эту технологию уже скрестили с шлемом виртуальной реальности.
Что это значит для мировой революции? Это значит, что возможно включение реальных поверхностей в мир виртуальной реальности. Ведь по сути передвижение в реальном мире со шлемом на башке опасно именно из-за несоотвествия поверхностей реального и виртуального миров. Мы вплотную подходим к той самой картинке с мужиком на карачках вверху. И да, технология "виртуал овер риал ворлд" уже используется в дорогих аттракционах. Например, на аттракционе The Void.
Да, там всё отрендерено заранее, но ведь технология только начала развиваться. Кроме того, на базе этой же технологии будет развиваться управление жестами без датчиков, ибо вебкамера сможет строить зд-модель игрока и просчитывать колизии с виртуальными объектами. И для этого вовсе не нужно будет кучи датчиков, да.
Данное видео вызвало просто неприличный срач по поводу вообще возможности существования такого движка. На Euclideon обрушились с критикой и великий Кармак(автор квейков и думов) и великий Нотч(автор Майнкрафта). И да, критика была вполне обоснована. 1. Слишком большой вес уровней, ибо каждая точка, которых овер-дохрена содержит инфу о цвете и координатах. А это байт 10, не меньше. Это полностью подтвердилось, уровни весят гиганстки, однако всё же не космически, как боялись. 2. Проблемы с освещением, анимацией и тд и тп. Не решены до сих пор. 3. Однообразность уровня. Думали, что экономится место за счёт однообразных моделей на демке острова. Опровергнуто Geoverse.
Были даже высказаны сомнения, что это заранее отрендеренный ролик, но потом вышло видео с демонстрацией "полётов" на ноуте. В общем, общее мнение было таким: НЕВОЗМОЖНО. Нас дурят!
А тем временем в моду вошло зд-сканирование местности для всяких зд-карт и навигационных систем. И тут Euclideon выпустило свою "смотрелку" для отсканированных лазером данных. Geoverse.
Чем сразу опровергла как минимум несколько претензий. Во-первых, доказала, что технология рабочая. Во-вторых доказала, что разнообразность моделей - не проблема. В третьих, показала что способна работать не загружая сцену в память даже с юсб 2.0 флешки. Загружаемая на видео сцена пустыни весит 4 Гб. Представьте, сколько нужно, чтобы скачать её с флешки и запихнуть в оперативку, постоянно борясь со свопом. А для больших сцен это вообще невозможно. Город может и весь винт занять.
А Euclideon открыв для себя зд-сканеры, вошла во вкус и сделала заявку на построение фотореалистичной виртуальной реальности. Если обращали внимание на прошлом видео видно, как дорога перед камерой может распадаться на точки, машины и дома имеют дыры, а в воздухе весят непонятные куски пикселей. Euclideon разработала технологию трёхмерного сканирования, которая убирает помехи и строит полноценную поверхность, без дырок. Технология называется SolidScan. И это уже серьёзная заявка на успех в виртуальной реальности. Оцените сами:
Технические подробности. Фичей этого движка является неограниченная геометрическая сложность поверхностей в кадре. Практически не влияющая на производительность. Принципиально движок работает так: вместо полигонов используется облако точек, называемых атомами. Благодаря хитрожопой оптимизации каждый атом в любой момент времени соотвествует одному пикселю экрана. А ребята решили, что никакой необходимости обрабатывать каждый объект нет. Нужны только точки. И получилось, что на самом деле не нужно высчитывать миллиарды полигонов. Например, при разрешении 1024Х768 достаточно просто найти 1024Х768=786432 точек и работать только с ними, чтобы прорисовать 786432 пикселей. Обычно для этого, например, при воксельной графике, используется технология raycasting, бросающая луч из каждого пикселя до ближайшего пересечения с вокселем\пикселем\точкой, который и будет отрисован. Но это довольно ресурсозатратная технология. Euclideon утверждают, что они нашли алгоритм(ноухау), похожий больше не на трассировку лучей, а на поисковую систему. В процессе выбора точек алгоритм определяет направление виртуальной камеры, перекрывание одних объектов другими, определение ближайших к камере объектов, размера объектов. Утверждается, что алгоритм поиска точек выбирает только те точки, которые будут отображены на экране, и «отбрасывает» все остальные, и при этом скорость выборки такова, что возможно создавать плавные анимации. Этот алгоритм назван разработчиками «mass connected processing» (рус. Обработка связанных массивов). Все данные хранятся в сжатом виде где-то 5-20% от исходных(называется и цифра в 17%), не требуют распаковки или загрузки в оперативную память. То есть могут читаться прямо с винта, флешки юсб 2.0, либо интернета. Брюс Делл заявил, что если сравнить два идентичных объекта, один из которых представлен в традиционном полигональном формате, а второй - при помощи облака точек, то размер второго объекта будет лишь около 8% от размера первого. Но лично я смотрю на вес этих сцен и понимаю, что он врёт... Сцены занимают просто прорву места. Но вернёмся к главному. Тот факт, что рендерятся исключительно попавшие в кадр точки без всякого построения реальных зд-моделей, говорит о том, что все эти числодробительные полигоно-машины просто не нужны. Более того, в этом движке GPU вообще не используется! Всё считается на одном ядре CPU! Для разрешения 1024Х768Х25 кадров в секунду нужна производительность всего-навсего около 20 млн операций в секунду. 20MFLOPS. Видеоядро ARM с дешёвенькой Mali T-720 может выдать 80 GFLOPS! А это означает, что, во-первых, производительность зависит только от разрешения экрана(его просто можно уменьшить), а во-вторых, с такими играми справится любой телефон, не то что компьютер. Недостатки и способы мириться с ними. 1. Это пока не игровой движок. Пока это рендер, не более того. Имеются проблемы с динамическим освещением(решаются), есть большие проблемы с анимацией, тем более костной, вроде motion capture. Анимацию, впрочем, продемонстрировали. Но честно, лучше бы вам её не видеть. Не совсем ясно, есть ли просчёт колизий. Решение: Использовать совместно с полигональной графикой. В частности, использовать для геометрии уровня. Анимированные модели, включая персонажей, могут просчитываться по старинке, полигонами. Кроме того, это самое то для виртуальных музеев и Эрмитажей.
2. Гигантский объём данных. 4 Гбайта - это пустыня, Карл! Решение: В данном случае предлагаю хранить все данные в "облаке". Фирма выпускает игру, где уровни хранятся в облаке, а покупатель скачивает легковесный клиент. Думаю, что подобное облако может обслуживать довольно большое число клиентов, к тому же можно организовать нечто вроде торрент-сети среди нескольких серверов производителя игры, чтобы была подкачка с разных источников. Игра, как сервис. Сама же фирма считает, что объём накопителей растёт куда быстрее производительности.
Демо этой технологии (не записанное видео, а именно интерактивная демонстрация-бродилка)можете посмотреть по этому адресу: http://udserver.euclideon.com/demo/html5_viewer.html Рекомендованы винда7, хром и шустрый интернет. Лично у меня всё похоже на майнкрафт, а скамейки в храме - это вообще какой-то пикассо. Возможно, это из-за линухи и слабого интернета или перегруженного сервера. Прошу поделиться впечатлениями. Однако на видеоролике эти демки выглядят вполне прилично.