Виртуальная ферма (ближайшее будущее)

Виртуальная ферма (ближайшее будущее)

Купил я в декабре 2021 через друга, живущего в Нидерландах (Амазон заблокировал мой аккаунт при попытке покупки) Oculus Quest 2, зашел в учетку через Фейсбук, привязал шлемак к ПК через "ЭирЛинк" (соединение по вафле) и играл в Стимовские игры.

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

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

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

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

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

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

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

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

UPD: Спасибо @ViTul https://mobile.twitter.com/MetaQuestHelp/status/150160960234. согласно твиттеру, произошел сбой в самом Окулусе. Соответственно, санкции не причем, но не будь Фейсбук заблочен в России, танцев с бубном было бы куда меньше.

Робот в Мурино

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

Помощь зала

SpaceX идёт ва-банк — с марта начнутся запуски спутников Starlink с помощью Starship. Возможно, это и будет переворот в космонавтике

Судя по всему, в SpaceX максимально уверены в успехе Starship и решили слегка надавить на Федеральное управление гражданской авиации США (FAA) и Федеральную комиссию по связи (FCC), официально объявив, что запуск почти 30 000 спутников Starlink второго поколения будет осуществляться с помощью Starship, а не Falcon 9.

По словам юриста SpaceX Уильяма Уилтшира, прогресс в разработке Starship превзошёл ожидания компании, благодаря чему:

FAA должно завершить экологическую экспертизу на космодроме в Starbase в Бока-Чика к 28 февраля.

Интересно, что первоначально SpaceX представила в FCC одну конфигурацию своей сети, состоящую из 29 996 спутников, расположенных на 12-ти наклонениях на высотах от 328 до 614 километров. Уже развёрнутые спутники останутся на своих орбитах до окончания срока службы.

Новая конфигурация, основанная на запусках с помощью Starship, включает 29 988 спутников на высотах от 340 до 614 километров на девяти наклонениях. Объявлено об этом было ещё в августе.

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

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

Почему планы SpaceX по группировке Starlink выглядели не особо реалистичными?

Математика довольно проста. Чтобы создать заявленную первоначально группировку первого этапа из 12 000 спутников, SpaceX нужно было бы запускать Falcon 9 каждые 5-6 дней на протяжении трёх лет. А теперь напомню, что стартовая площадка SpaceX обладает, мягко говоря, далеко не самым удачным расположением.

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

Со Starship вывести 12 000 аппаратов можно менее чем за 30 пусков, то есть можно уложиться в один год. К моменту вывода всей группировки, первые аппараты ещё не выйдут за расчётный срок эксплуатации в 8 лет.

А теперь немного экономики

Один спутник Starlink v 1.0 весит 260 кг. Полный пакет для запуска из 60 штук − 15 600 кг. Это полная грузоподъемность ракеты-носителя Falcon 9 v1.2 Full Thrust в конфигурации, рассчитанной на посадку первой ступени на баржу. Сейчас SpaceX уже запускает изрядно «поправившиеся» спутники из-за лазерной связи и Falcon 9 за один раз выводит только 49 спутников.

Стоимость одного пуска около 50 миллионов долларов. Таким образом, вывод на орбиту одного спутника Starlink обходится примерно в $800 000. Отмечу, что оценка довольно завышена. Ну а теперь о главном.

Грузоподъёмность Starship составляет 100-150 тонн, благодаря чему за один запуск на орбиту можно будет выводить от 384 до 576 спутников Starlink. О стоимости одного пуска Starship говорить рано, но достаточно очевидно, что вывод на орбиту одного спутника Starlink станет значительно дешевле.

Как итог, бизнес SpaceX действительно полностью зависит от реализации программы Starship.

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

У меня есть каналы в Дзене, Telegram, YouTube и чат для дискуссий на научные темы. Подписывайтесь, если интересно.

Китайское искусственное солнце готово к запуску

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

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

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

Поиск сфер Дайсона вокруг черных дыр

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

В новом исследовании (A Dyson sphere around a black hole) ученые из Тайваня (Hsiao, Tiger Yu-Yang; Goto, Tomotsugu; Hashimoto, Tetsuya) рассуждают, эффективно ли построение сферы Дайсона вокруг черной дыры.

Они рассматривают шесть источников энергии: (i) космический микроволновый фон, (ii) излучение Хокинга, (iii) аккреционный диск, (iv) аккреция Бонди, (v) корона и (vi) релятивистские струи. Ожидается, что для развития будущих цивилизаций (например, цивилизации типа II) потребуется 4 × 10^26 Вт (1L⊙). Среди (iii) - (vi) наибольшая светимость может быть получена с аккреционного диска, достигая 105L⊙, достаточной для поддержания цивилизации типа II.

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

Учитывая излучение сферы Дайсона, расчеты показывают, что сфера Дайсона вокруг черной дыры звездной массы в Млечном Пути (10 кпк от нас) обнаруживается в ультрафиолетовом (10-400 нм), оптическом (400-760 нм) диапазоне. ), ближнего инфракрасного (760 нм − 5 мкм) и среднего инфракрасного (5−40 мкм) длин волн через излучение отходящего тепла с использованием современных телескопов, таких как ультрафиолетовые исследования неба Galaxy Evolution Explorer.

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

Как я делал систему оптического трекинга

Дело было в далеком 2015 году. В продаже только появились очки виртуальной реальности Oculus DK2, рынок VR игр быстро набирал популярность.

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

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

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

Видел я это так:

1) Берем несколько игроков, надеваем на них VR очки, ноутбук и датчики на руки, ноги и туловище.

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

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

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

Для реализации заявленного функционала, нужно было создать две основные технологии:

1) Костюм, состоящий из датчиков на руках, ногах и торсе, отслеживающий положения частей тела игрока

2) Система трекинга, отслеживающая игроков и интерактивные объекты в 3D пространстве.

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

Система трекинга.

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

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

Соответственно, камеры нужно было закрепить на потолке так, чтобы каждая точка пространства просматривалась минимум двумя камерами (лучше больше, чтобы избежать перекрытия обзора телами игроков). Для покрытия трекингом предполагаемого помещения площадью около 100 кв.м., требовалось около 60 камер. Я выбрал первые попавшиеся дешевые на тот момент usb вебки.

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

Архитектуру я придумал следующую:

На каждые очки вешается акриловый матовый шарик от гирлянды с вклеенным внутрь RGB светодиодом. Одновременно в игре предполагалось несколько игроков, так что для идентификации решил разделять их по цвету – R, G, B, RG, RB, GB, RB. Вот так это выглядело:

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

Поиск шарика на кадре

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

1) Переводим изображение в градации серого

2) Бинаризуем по порогу (если яркость пикселя больше порога, он становится белым, иначе – черным). При этом размытое пятно от шарика превращается в кластер белых пикселей на черном фоне

3) Находим контуры кластеров и их центры. Это и есть координаты шарика на кадре

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

Вроде, работает, но есть нюансы.

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

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

Пришлось придумывать новый алгоритм. В голову пришла следующая идея:

1) Переводим изображение в градации серого

2) Размываем картинку мощным Gaussian blur –ом так, чтобы изображения светодиодов превратились в размытые пятна с градиентом яркости от центра к периферии

3) Находим самые яркие пиксели на изображении, они должны соответствовать центрам пятен

4) Так же определяем средний цвет кластера в окрестности центра

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

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

Нагрузочный тест

Подключаю 8 камер к своему десктопу, располагаю их так, чтобы каждая видела светящиеся точки и запускаю скрипт, где описанный алгоритм работает в 8-ми независимых процессах (спасибо питонской либе «multiprocessing») и обрабатывает все потоки сразу.

И… сразу натыкаюсь на фейл. Изображения с камер то появляются, то исчезают, framerate скачет от 0 до 100, кошмар. Расследование показало, что часть usb портов на моем компе подключены к одной шине через внутренний хаб, из-за чего скорость шины делится между несколькими портами и ее уже не хватает на битрейт камер. Втыкание камер в разные порты компа в разных комбинациях показало, что у меня всего 4 независимых usb шины. Пришлось найти материнку с 8-ю шинами, что было довольно непростым квестом.

Продолжаю нагрузочный тест. На этот раз все камеры подключились и выдают нормальные потоки, но сразу сталкиваюсь со следующей проблемой – низкий fps. Процессор загружен на 100% и успевает обрабатывать лишь 8-10 кадров в секунду с каждой из восьми вебок.

Похоже, нужно оптимизировать код. Узким местом оказалось Гауссово размытие (оно и не удивительно, ведь нужно на каждый пиксель кадра производить свертку с матрицей 9*9). Уменьшение ядра не спасало ситуацию. Пришлось искать другой метод нахождения центров пятен на кадрах.

Решение удалось найти внезапно во встроенной в OpenCV функции SimpleBlobDetector. Она делает прямо то, что мне нужно и очень быстро. Преимущество достигается благодаря последовательной бинаризации изображения с разными порогами и поиску контуров. Результат – максимальные 30 fps при загрузке процессора меньше 40%. Нагрузочный тест пройден!

Классификация по цвету

Следующая задача – классификация маркера по его цвету. Усредненное значение цвета по пикселям пятна дает RGB компоненты, которые очень нестабильны и сильно меняются в зависимости от расстояния до камеры и яркости светодиода. Но есть отличное решение: перевод из RGB пространства с HSV (hue, saturation, value). В таком представлении пиксель вместо «красный», «синий», «зеленый», раскладывается на компоненты «тон», «насыщенность», «яркость». В этом случае насыщенность и яркость можно просто исключить и классифицировать только по тону.

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

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

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

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

Калибровка трекинга

В первом варианте решил сделать калибровку трекинга максимально примитивной.

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

2) С помощью лазерного нивелира и дальномера измеряю XYZ координаты всех камер в единой системе координат

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

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

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

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

Запускаю процесс расчета на основе измеренных данных.

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

1) Берем исходную матрицу с нулевыми поворотами и смещением.

2) Берем единичный вектор в локальной системе камеры, который смотрит из объектива вперед и преобразуем его в глобальные координаты по исходной матрице.

3) Берем другой вектор в глобальной системе, который из камеры смотрит на центральную точку на стене.

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

5) По расстоянию между этими двумя точками вычисляю фокусное расстояния в пикселях (учитывая, что расстояние между проекциями этих точек на кадре составляет 200 пикселей).

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

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

Тестирование трекинга

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

Похоже на правду, но точность явно могла быть выше. Первая причина несовершенства, которая пришла в голову – искажения в объективах камер. Значит, нужно эти искажения как-то компенсировать.

Калибровка камеры

У идеальной камеры важный для меня параметр только один – фокусное расстояние. У реальной кривой камеры нужно учитывать еще дисторсии объектива и смещение центра матрицы.

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

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

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

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

Провожу новый тест трекинга:

Уже гораздо лучше! Выглядит настолько хорошо, что даже вроде будет работать.

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

Вычисление координат маркера

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

Длина отрезка AB тоже пригодится, т.к. она отражает «качество» полученного результата. Чем он короче, тем ближе друг к другу прямые, тем лучше результат.

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

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

Магнитное поле в нашем помещении было направлено ВЕРТИКАЛЬНО ВНИЗ! Видимо, это связано с железом в конструкции здания.

Но ведь в VR очках тоже используется магнитометр. Почему у них такого эффекта нет? Иду проверять. Оказалось, что в очках он тоже есть… Если сидеть неподвижно, можно заметить, как виртуальный мир медленно, но верно вращается вокруг тебя в рандомную сторону. За минут 10 он уезжает почти на 180 градусов. В нашей игре это неминуемо приведет к рассинхрону виртуальной и реальной реальностей и сломанным об стены очкам.

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

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

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

Масштабирование

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

Автокалибровка

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

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

1) вешаю камеры и на глаз направляю их в игровую область

2) запускаю режим записи на сервере, в котором все приходящие с камер 2D точки сохраняются в файл

3) хожу по темной игровой локации с маркером в руках

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

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

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

Вот так выглядит напечатанная на принтере специальная палка-калибровалка.

Тестирование большого проекта

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

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

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

Алгоритмы трекинга пришлось заметно усложнить, но в итоге все заработало! Телепортации игроков друг в друга исчезли, нагрузка на процессор упала, засветки перестали мешать.

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

Чем все закончилось?

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

Традиционный забавный момент в конце статьи:

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

Система в прямом смысле работала через задницу =)

Ответ на пост «Это уже можно считать восстанием машин?»

Это уже можно считать восстанием машин?

Интересно, он сам или его попросили?

Научная фантастика предсказала создание метавселенной еще 30 лет назад — и вот почему это настораживает

Марк Цукерберг недавно переименовал компанию Facebook в Meta. Шаг мог показаться странным на первый взгляд: сменить узнаваемое имя на что-то настолько общее? Слишком уж широкое понятие обозначает приставка «мета». Настолько широкое, что им можно обозначить целую вселенную — ее и собирается построить Марк Цукерберг. Цифровой рай будущего — вот что ждет Facebook-Meta и нас с вами по версии… нет, не Цукерберга даже, а Нила Стивенсона. Писателя, который почти тридцать лет назад уже рассказал о будущем такой вот метавселенной на страницах романа «Лавина». Писатель уже объявил, что не участвует в проекте, а Цукерберг не скрывает, что отчасти вдохновлялся именно этой книгой. Мы перевели статью CNBC.com о том, что Цукерберг и его команда заимствует из знаменитого фантастического романа.

Изменив название Facebook на Meta, Марк Цукерберг ясно дал понять, что уверен: будущее интернета — в «метавселенной», виртуальном мире, в котором люди будут жить, работать и отдыхать.

Идея футуристичная, но термин происходит из прошлого. Если точнее, ему почти 30 лет.

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

И вот почти три десятилетия спустя Марк Цукерберг, если судить по его словам, примерно такое будущее и пытается построить. За исключением дистопии, конечно. Компании вроде Microsoft, Roblox и Epic Games также проектируют собственные метавселенные. Да и сам Стивенсон сейчас работает в занимающимся виртуальной реальностью стартапе Magic Leap в качестве «главного футуролога». До того он был советником в космической компании Джеффа Безоса Blue Origin.

Стивенсон сообщил Axios, что «никогда не общался с Цукербергом». Может, это и к лучшему: если Meta воплотит все предсказания Стивенсона, метавселенная может оказаться не лучшей частью будущего.

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

Что предсказала «Лавина»

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

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

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

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

Некоторые элементы метавселенной уже существуют

Гарнитуры, которые используют персонажи «Лавины», кажутся довольно похожими на современные шлемы виртуальной реальности. Oculus (принадлежащий Meta) уже производит подобные девайсы. И на прошлой неделе Марк Цукерберг написал пост о том, что эти технологии будут совершенно необходимы для полного погружения в будущую метавселенную компании.

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

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

«Возможность на самом деле владеть виртуальными товарами и носить их с собой повсюду имеет большой инвестиционный потенциал» — сообщил Марк Цукерберг в июле.

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

В своих последующих книгах Стивенсон не раз возвращался к теме цифровых технологий. Например, в «Криптономиконе» фантаст предвосхитил появление криптовалют

Что еще произойдет, и где оно может пойти не так

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

Сам Цукерберг призывает к осторожности. Meta придется «инвестировать миллиарды долларов на протяжении нескольких лет, прежде чем метавселенная достигнет нужного масштаба», сообщил Цукерберг на конференции по дополненной и виртуальной реальности Facebook Connect.

Большая часть этих миллиардов может уйти на создание более качественных и доступных шлемов виртуальной реальности. В посте на Facebook Марк Цукерберг также похвастался разработкой «высокоточных сенсоров прикосновений», которые, возможно призваны воссоздать физическое ощущение прикосновения в виртуальном мире.

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

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

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

Цукерберг предсказуемо демонстрирует оптимизм.

«Очевидно, в книге среда метавселенной довольно негативна», — рассказал он The Verge в ответ на вопрос о влиянии «Лавины» на видение метавселенной Meta. — «Но я не думаю, что это единственный вариант развития событий».

Содержание молочных коров зимой или холод корове не страшен

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

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

Продолжение поста «Skyrim VR - "Первому игроку приготовиться" уже сейчас!»

The Elder Scrolls V: Skyrim VR - как и какие моды ставить?

В комментариях к предыдущему посту меня попросили поделиться списком рекомендуемых мной модов.

Я на свою сборку со всеми косяками и настройками потратил

10-15 часов (80-100 модов в итоге), но результат того абсолютно стоил: физика взаимодействия с объектами, графика, симпатичные лица NPC, уникальное и интерактивное поведение NPC в мирное время и в битве, "реалистичное" поведение животных, интерактивные таверны, удобные кобуры для оружия, жесты для заклинаний, анимация открытия дверей-сундуков-мешков, интерактивный (прям с motion controllers) взлом замков - и многое другое. Скайрим остаётся максимально близким к духу оригинала, но в то же время - гораздо более интерактивным.

Также моды я собирал с оглядкой на своё железо - какой-то i7; 16gb ram; gtx 1060 6gb video; ssd. Если у вас железо мощнее - можете "навалить больше модов", но аккуратно. Стабильный высокий FPS для VR очень важен.

Сначала я дам несколько советов, а потом расскажу, что именно и как я ставил.

1. Первым делом определитесь - что именно вы хотите получить от модов, для какой цели. Я в скайрим до ВР версии почти не играл, и мне хотелось максимально "ванильного" (оригинального) игрового опыта; поэтому я сразу зарёкся ставить какие-то дикие сборки, полностью меняющие баланс, добавляющие тысячи новых локаций/квестов; перекраивающие боевую систему наглухо и делающие скайрим абсолютно другой игрой.

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

3. Важные (я так ставил) ссылки на английском (делитесь русскими источниками в комментариях):- https://docs.google.com/document/d/1qbh7GE30xLyso7MA6u3xpNJNdL5r2V2WP8SjZ4VpHLQ/edit Основная буржуйская документация по глобальной настройке скайрима

- https://www.youtube.com/watch?v=XlxiQEYH02I канал Ben Plays VR с его подборками рекомендуемых модов. Я посмотрел 3-5 видео, и несколько штук оттуда позаимствовал

- https://www.nexusmods.com/skyrimspecialedition/mods/47630 очень нужный интерфейсный мод, который я еще не ставил (но обязательно поставлю) Spell Wheel VR

4. https://uploadvr.com/best-must-have-skyrim-vr-mods-more-immersive/ Вот еще очень хорошая статья, где освещаются самые нужные моды для VR; даже если вы поставите хотя бы их - удовольствие от игры (в сравнении с официальным skyrim VR) уже возрастёт многократно

5. Абсолютное большинство модов ставится с сайта Nexus Mods, я использовал их же Vortex Mod Manager (и бесплатный акканут); но знающие ребята рекомендуют более "качественные и удобные" другие mod manager'ы, погуглите.

6. Порядок установки модов, порядок загрузки модов и разрешение конфликтов. Соблюдайте порядок установки; если пишут что для мода Б нужен мод А, то обязательно поставьте сначала мод А; иначе замаетесь чинить. Также обязательно почитайте, как разрешать конфликты и выставлять приоритет при загрузке модов в игру, т.к. конфликты однозначно будут (к примеру, два разных мода редактируют один и тот же объект - какой мод вы предпочтёте?).

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

- Dyndolod - увеличение дальности прорисовки объектов. Важная штука, которую обязательно нужно сделать после настройки и обкатки ваших 50-100 модов. Мир станет в разы симпатичнее.

- Spell Wheel VR - ультимативный выбор оружия-заклинаний-стрел-предметов в VR, без надоевших списков.;

- Dragonborn speaks naturally - распознование речи для выбора реплик в диалогах. Не обязательно, но улучшает погружение;

- Аудиокниги (вместо чтения книг - включаешь её как "подкаст" и гуляешь, слушая очередную книгу из скайрима);

- Моды на компас и карту (ориентирование на местности). Не обязательно, но может увеличивать погружение.

- Мод на "дрожащие телеса NPC" после того как их коснёшься руками. Попытался настроить, но что-то там со скелетами-анимациями не заработало, отложил на будущее.

8. Не забывайте, что модифицировать игру можно до бесконечности; поэтому не забудьте в получившийся шедевр все-таки поиграть :) ___Ну а теперь мой список модов, картинками (и снизу будет стена текста - список модов, сгенерированный Vortex мод менеджером).

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

1. Сверху - косметика на природу-погоду. Потом анимирование предметов-людей-врагов-NPC в зависимости от условий. Хорошй звук.

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

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

3. Моды на "красоту" (того стоят, производительность не съедают); моды на погружение (NPC смотрят в лицо, двигаются реалистично, занимаются своими делами, интересные таверны). Ниже - добавление торговых лавок между городами (уместно) и автореген маны (при игре за мага - приятно, не жалею, что поставил).

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

5. Несколько более удобных интерфейсов. Лучше свет и кровь.

6. Пожалуй, самая важная часть - все самые нужные VR моды. Тело целиком (а не только руки), блок в рукопашном бое, gravity gloves из Alyx, физические объекты, улучшение поведение лука и стрел, оптимизация оптимизация оптимизация и еще несколько утилит.

Если кому надо - какой-то автосгенерированный список текстом:

# Automatically generated by Vortex

*Lanterns Of Skyrim - All In One - Main.esm

*Unofficial Skyrim Special Edition Patch.esp

*Cathedral - 3D Mountain Flowers.esp

*dD - Enhanced Blood Main LITE.esp

*Immersive Sounds - Compendium.esp

*ISC Enhanced Blood Patch.esp

*No Arrow Auto Equip VR.esp

*Simple Realistic Archery VR.esp

*Cathedral - 3D Pine Grass.esp

*Book Covers Skyrim.esp

*Enhanced Solitude SSE.esp

*The Great City of Falkreath.esp

*The Great City of Rorikstead.esp

*male npc overahul se.esp

*Skyrim Trading Posts.esp

*Immersive Patrols II.esp

*SkyrimVR - USSEP Patch.esp

*Vokrii - Minimalistic Perks of Skyrim.esp

*Immersive Citizens - AI Overhaul.esp

*Immersive Wenches -Immersive Citizens AI Overhaul Patch-.esp

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

Результат (если любопытно) - тут https://www.twitch.tv/ganjjgames/clips?filter=clips&range=30d (короткие нарезки с моих стримов на твитче; длинные видео - там же)

Skyrim VR - "Первому игроку приготовиться" уже сейчас!

Я уже полгода как активно изучаю виртуальную реальность и играю в различные VR игры (понадобятся шлем+компьютер или один только шлем, в зависимости от игры), и последний месяц я в невероятном восторге от The Elder Scrolls V: Skyrim VR - полноценной адаптации компьютерной игры под шлемы виртуальной реальности.

Для тех, кто не в курсе, быстро напомню, что такое VR. Надеваешь шлем, берешь в руки контроллеры - и понимаешь, что ты находишься в другом мире. Полное 3D, бинокулярное зрение, нагибаешься, поворачиваешься, приседаешь, подбираешь руками предметы - всё работает именно так, как работало бы в реальном мире. Все объекты вокруг - тоже полноразмерные, как в жизни. Ощущения - фантастические.

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

1. К примеру, поднимаешься ты по горе к монастырю. Слышишь тревожную музыку, не видишь никого - и вдруг в 2х метрах (реальные 2 метра, ощущаются именно так, как и в реальности) от тебя возникает ОГРОМНЫЙ СНЕЖНЫЙ ТРОЛЛЬ, который вот-вот оторвёт тебе башку:

2. Поднимаешься к вершине, и восхищаешься каменным монастырём - громадой, вырастающей на вершине заснеженного пика. Внушает уважение:

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

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

5. И даже когда во вражеском подземелье подслушиваешь разговоры врагов - хочется с ними подружиться. Но не всегда получается:

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

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

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

Чем больше людей станут чуточку счастливее - тем лучше :)

P.S. Мой twitch, где я время от времени стримлю VR игры: https://www.twitch.tv/GanJJGames

Первому игроку приготовиться!

Виртуальная реальность ждёт вас

Компания Vue Electronic Technology опубликовало в Сети свое последнее творение - стенд для перемещения по виртуальному миру.

Стенд не стесняет движения игрока, так как состоит из подвеса, удерживающего и фиксирующего вертикальные перемещения пользователя, и площадки, по которой человек движется.Стенд рассчитан на человека ростом от 1,3 до 2 метров и весом до 140 кг.

При этом модель VR-очков особой роли не играет. Правда стоимость данного гаджета обойдется в какие-то $500.

UPD: стенд был представлен в 2016 году, сейчас программа свёрнута.

НАЦИЯ ЗОМБИ (первая половина рассказа)

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

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

- Ну, что же, Киу-рай, докладывай.

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

- Род Дези-рая претендует на спорные острова в Горячем море. Просит вашего соизволения на применение силы…

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

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

- Хоть одного сантиметра щупальца не досчитается представитель островитян, не носящий оружия, то пусть Дези-рай готовится впасть в немилость ко мне.

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

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

За пять часов он произвел облет всей планеты. Все было нормально. А кое-где даже хорошо. Правитель посетил строящийся первый на Кариуге университет. С максимальной интенсивностью шли внутренние отделочные работы, завозилась мебель. Ректор не ожидавший увидеть правителя, от внезапности нагрянувшей проверки чуть не впал в спячку на полгода раньше срока. Но два кубика адаптированного адреналина привели его в чувство. На Южном архипелаге уже цвели сотни тысяч фруктовых деревьев из земного семенного фонда. Лаград прививал местным не только тягу к знаниям, но и кулинарные предпочтения. К его удивлению кариуганцы стремительно цивилизовались. На территориях наиболее развитых родов задымили первые примитивные фабрики, мануфактуры, заводики. Лаград действовал согласно плану ООН по включению внеземных цивилизаций в Метагалактический альянс. Раз уж положение 13.7 Плана гласило, что последовательность технологического прогресса должно соответствовать этапам развития землян, значит на повестке дня паровой двигатель. И никаких гвоздей. Вернее, гвозди в том числе.

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

Со смешанными чувствами проводив взглядом стремительно удаляющуюся береговую линию материка, Лаград откинувшись в кресле, произнес шепотом «в Эдем».

Группа островов удаленных от всех прочих полностью оправдывала свое название. Здесь не случалось ураганов, даже штормовых ветров. Тихие заводи кишели рыбой. Розовые воды омывали серебристый песок. Растительность была неагрессивной и безаллергенной для людей. Для него. И здесь его любили. Искренне и нежно. Капсула зависла в пяти метрах над водной поверхностью и Лаград сиганул обнаженный в открывшийся проем. Теплая жидкость приняла его в свои объятия, сомкнувшись над ступнями. Как и на мелководье земных тропиков здесь раскинулось царство кораллов. В непривычной цветовой гамме и формах все же это были они. Тысячи разноцветных рыбок обитали здесь. Но все же нужно было быть настороже, изредка сюда заплывали монстры с глубин, а мозг капсулы реагировал только на разумных существ и электронику. Через минуту появилась она – его Офелия, так он называл свою любимую сирену. Над головой мелькнул мощный хвост, покрытый зеленоватой чешуей. Лаград резко повернулся, но он безнадежно уступал в проворности этим созданиям. Офелия скрылась за кораллами. Он поплыл туда и вдруг ощутил легкое прикосновение сзади. Снова обернулся, и увидел ее во всей красе. В двух словах сирена была почти полной копией земных русалок. Но последние существовали лишь в мифологии и сказках. А эти были реальны. Наполовину рыба, наполовину… Он не мог сказать, что верхняя часть туловища была человеческой. Но определенное сходство все же было. Вместо щупалец руки, пусть и трехпалые перепончатые; пара небольших молочных желез. Но самое главное на голове были волосы, которые как он выяснил служили сиренам тончайшими органами для ориентирования. И большие зеленые глаза. Тут он готов был поклясться, что они ничем не отличались от человеческих. Поначалу его смущало отсутствие губ и носа, но потом он перестал обращать на это внимание. Офелия взяла его за руку и увлекая за собой начала буксировку человека в розовые глубины. Они всплывали пять раз, чтобы Лаград мог сделать вдох. Даже двадцатиминутной задержки дыхания было недостаточно, для того чтобы человек и сирена устали друг от друга. Потом они плавали между кораллов, играли в столь любимые Офелией прятки и охотились за юркими красными рыбками, составлявшими основной рацион питания сирен. А когда оба голубых солнца уходили за горизонт и тропические сумерки вступали в свои права они, обнявшись, лежали на песке у самой кромки прибоя и наблюдали фантастическую картину двойного заката и как темнеющее небо заполняется мириадами звезд. По всей видимости Офелия не могла оценить всего этого. Ее псевдоразумный мозг мыслил другими категориями и ей просто нравилось греться от человеческого тела. Но Лаград в эти минуты ощущал счастье и гармонию вокруг и в своей душе. И именно в эту минуту все должно было закончиться. Внезапно все пропало: навалилась тьма, исчезли звуки и запахи. Лаград превратился в слепоглухонемое дерево без осязания и вообще любых чувств. Перед глазами появилось голографическое табло, на которой побежали слова складываясь в предложения: «ОПАСНОСТЬ! ИСТОЩЕНИЕ ФИЗИЧЕСКОГО НОСИТЕЛЯ. ТРЕБУЕТСЯ ВЫХОД ИЗ ВИРТУАЛЬНОГО МИРА!». И в этот момент Лаград вспомнил все. Что он и не Лаград вовсе, а Стэнли. И что, мать его, все это лишь искуснейшая компьютерная симуляция! У него начиналась истерика. Нет! Он не хочет обратно! Не хочет. Он был готов отдать душу дьяволу, только бы не возвращаться в реальный мир. Но он также знал, что если не выйдет сейчас, то погибнет. И не будет больше ни прекрасной двойной звезды, ни трона, ни всепоглощающего могущества, ни Офелии. Ничего. И Стэнли отдал приказ на выход из системы.

Он открыл глаза. Пробуждение было мучительным, как и всегда. На изголовье вирта затихал нейромодуль. Стэн отцепил уже давно сухие питающие трубки, воронку для сбора мочи и заранее скривившись, заведя руку назад, вытащил из затылка контактную иглу. Кабель с тихим шелестом ушел в нутро виртмашины. Он, кряхтя слез с аппарата и шаркающей походкой направился в ванную. По пути бросил взгляд на календарь. На экране приятным зеленым светом светилась дата «06.09.2179». Значит, он был ТАМ почти два месяца. Это его личный рекорд. Он вспомнил, что пока был в виртуале, три раза откладывал выход. Как же он самонадеян! Мог ведь и умереть там. Но с другой стороны, это того стоило! Он даже улыбнулся от приятных воспоминаний. Здесь прошло всего-то два месяца, а там он «прожил» почти десять лет полноценной насыщенной жизни. Да что там говорить – это была удивительная жизнь, сказка!

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

И одновременно глотал и глотал живительную влагу, не обращая внимания на сильный запах ржавчины. Закончив с душем, он подошел к зеркалу. На него смотрел скелет, покрытый тонкой просвечивающей кожей. Жировой слой отсутствовал, а мышцы атрофировались настолько, что он еле держался на ногах. Порывшись в аптечке, достал последний пакет реанимирующего раствора и пройдя в зал поставил себе капельницу. Потом так и бродил по квартире, катая рядом с собой стойку. Выпил углеводно-протеиновый коктейль; обесточил виртмашину, любовно зачехлил ее, чтобы не садилась пыль; перенес данные на резервный носитель. Потом спохватился и, подойдя к окну, отдернул шторы. На небе светило солнце, неспешно проплывали редкие кучевые облака. Многоквартирный дом напротив смотрел на него пустыми глазницами окон и пожирающей известку плесенью. Там уже давно никто не жил. А жил ли кто в его доме? Этого он не знал. На самом деле ему было плевать на этих людей, кем бы они ни были. После того как пакет с раствором опустел Стэн прошел в спальню и лег в кровать. Именно «в» кровать. Края интеллектуального лежака свернулись, словно захлопнулись створки гигантской мухоловки. Включился режим гормональной и электро-резонансной стимуляции организма. Сильнее забилось сердце, усилился кровоток, закрутился маховик гормональной системы, впрыскивая во внутреннюю среду основные стимуляторы биологической жизни. И дабы избавить человека от неприятных ощущений мозг «кровати» погрузил его в тяжелый сон.

Три дня Стэнли Буллит приходил в себя после двухмесячного пребывания в виртуальном мире. Он отъедался коктейлями и поливитаминами и проходил все необходимые процедуры, чтобы войти в форму. Так, необходимую ему для выполнения полезных для реального общества функций. Стэнли каждый раз клял последними словами эту свою функцию. Уже целый век роботы и искусственные мозги заменяли людей почти во всех сферах деятельности. Человек, наконец, после сотен тысяч лет развития стал свободен от труда. Но нет, какие-то там высоколобые в мировой администрации решили, что для здоровья популяции хомо сапиенса ему нужно работать (слово-то, какое мрачное). И издали свод правил проживания в реальном мире, один из основных постулатов которого гласил: «Каждый гражданин обязан своим общественно полезным трудом привносить посильный вклад в развитие реальной человеческой цивилизации…». По сути это был шантаж в чистом виде. Все материальные блага, в количестве необходимом для существования в реальном мире, гражданин получал от правительства бесплатно. Кроме… и вот тут-то и крылся подвох: кроме регенерационного пакета для предотвращения гибели от истощения. Пакет включал в себя жизненно необходимые лекарства и растворы, углеводно-протеиновые коктейли, заменявшие людям все повседневные продукты прошлого и картриджи с гормонами для кроватей. Все. Исчерпывающий список. Но, без этих вещей возврат в реальный мир без скорой мучительной смерти от нервного и физического истощения был бы невозможен. Регпакеты стали новой мировой валютой. И главный фокус состоял в том, что подделать ее было невозможно. Каждая выпущенная реальным мировым правительством единица находилась на строжайшем учете и шла потребителю, только после его участия в признанном полезном для общества деятельности. Одним словом, чтобы войти в виртуальные миры и самое главное выйти из них без последствий, человек должен был отработать положенное время.

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

Так. Стоп. «Работник конвейера углеводно-белковых смесей». Буллит махнул рукой и терминал привязал его личность к данной вакансии.

📎📎📎📎📎📎📎📎📎📎