Как сделать шлем виртуальной реальности своими руками
Здравствуйте все, кто увлекается гаджетами, стереоскопическим изображением и 3D графикой!
К сожалению, после открытия предзаказов на потребительскую версию Oculus CV1 стало ясно, что данный гаджет оказался не столь доступен, как хотелось бы многим. Действительно, 599$ — это стоимость в США. В России данные устройства будут стоить уже наверняка в районе 800-1000$ первый год-два. HTC Vive начинается от 799$. Пожалуй, сейчас это наиболее передовые устройства VR, но, нужно признать, что они не особо доступны.
Досадно, ведь именно сейчас, возможно, мы стоим у истоков становления поистине новой эпохи в мультимедиа, которая открывает широчайшие возможности и новые ниши в бизнесе.
Что же делать, если обычные кардбоарды с мобильными телефонами вам уже надоели, и хочется нечто большего, полноценного, кинематографичного и захватывающего? Возможно, у вас есть желание начать разработку игр, архитектурных решений под VR или просто вы хотите попробовать заработать на аттракционе?
Мы являемся евангелистами компьютерных VR систем в России, и в этой статье хотим показать, каким образом можно собрать-таки настоящий шлем виртуальной реальности у себя дома, даже лучше, чем Oculus Rift DK1, а затем силой инженерной мысли элегантно превратим его в DK2. В итоге, шлем будет совместим с последними версиями SDK и Runtime от Oculus Rift по относительно доступной цене. (Палмер Лаки наверное бы поперхнулся, прочитав эту статью, но мы ведь русские всегда чего-то придумываем и умеем красиво выходить из различных ситуаций).
Пусть это будет пример народного шлема для всех русских, и я не делаю сейчас деление на украинцев, россиян, белорусов и т.д, поскольку мы работаем и сотрудничаем со всеми из них… Это должно быть общим достоянием. VR должен быть доступен!
О том, как собрать бюджетный шлем виртуальной реальности, совместимый с Oculus Rift DK2 у себя дома…
Предупреждение
Важно: все нижеописанные работы необходимо выполнять в соответствии с техникой безопасности. Конечно, вы несёте полную ответственность за результат работы и то, что в итоге получите. Легально это будет или нет, будете ли вы использовать контент, разработанный для шлемов других производителей, SDK или Runtime Oculus, медицинские противопоказания и последствия использования шлема — всё это на лично ваше усмотрение и ответственность.
Мы не несём ответственности за результат, использование и устройство созданное вами. Это DIY.
От вас потребуются некоторые навыки пайки, понимание электричества на школьном уровне и определённые скиллы слесаря-монтажника.
Подготовка
Поскольку это туториал, то первое, с чего мы начнём — это конечно же подготовка рабочего места:
Уберём весь бардак и лишние вещи, чтобы они не мешались:
Из инструментов нам понадобится:
* паяльник (желательно с терморегулированием)
* любой подходящий программатор для STM32. В случае, если у вас уже есть свой трекер DK1 и вы будете обновлять его до DK2.* прямые рабочие руки
Расходные материалы:
* двухсторонний толстый скотч
* гибкие тонкие (многожильные) проводники. Лучше если это будет провод во фторопластовой оболочке, он не оплавляется.
Комплектующие:
* провод HDMI 2 — 2.5 метра
* провод USB 2 — 2.5 метра
* разъём для пинов, 3-х штырьевой
* 4 проводника с пинами
* любые подходящие очки VR (Mojing, BoboVR, Cardboard и т.д.) для размеров экрана 6'
* трекер на основе Oculus DK1(лучше ближе к оригиналу). Да, мы превратим его в трекер DK2!
* LCD экран 6' с разрешением 1920х1080 и плата преобразователя HDMI -> MIPI. В настоящий момент мы умеем подключаться к нескольким подобным экранам, но используем вариант, представленный на фото, поскольку он обойдётся дешевле, а качество у них у всех примерно одинаковое. Конечно, лучше если это будет AMOLED или OLED экран (меньше шлейф и время загорания пикселей), но в настоящий момент стоимость подобных решений вас быстро охладит, если вы их вообще найдёте совместно с платой адаптера.
После того, как у вас наконец-то появились необходимые комплектующие соедините экран с платой и закрепите последнюю с помощью двухстороннего толстого скотча или специальной пластиковой рамки + скотч, которую можно распечатать на 3D принтере:
Далее, припаиваем к плате трекера проводники:
* красный (PWR) + 5В
* жёлтый у нас будет SDA
Соединяем эти провода с платой экрана по указанной маркировке (Ground, PWR, SCL, SDA)
Важно: не перепутать Ground и PWR, иначе плата экрана «сгорит»:
Вы можете отказаться от пайки 3-х выводов (SDA, SCL и Ground), надев выводы непосредственно на пины трекера с обратной стороны, однако, это может оказаться не совсем надежным.
Если вы используете корпус Mojing 4, то тут всё относительно просто.
Важно: Mojing 4 имеет только подстройку межзрачкового расстояния. Если у вас сильная близорукость, то можете использовать очки, но в корпусе Mojing 3 Plus помимо этого есть подстройка фокусного расстояния, что делает использование шлема в этом случае более комфортным. Для людей с дальнозоркостью или астигматизмом потребуется доработка шлема.
Приклеиваем на нижнюю полку для удержания телефона прокладку из комплекта к очкам и помещаем экран с платой в корпус. Плату трекера клеим на крышку шлема сначала на двухсторонний скотч, а затем можно «прихватить» термоклеем по периметру:
Важно: постарайтесь приклеить трекер ровно по горизонтали и вертикали. Открытые контакты лучше изолировать чтобы они не закоротили на плату (SWD-разъём).
Подключаем в шлем USB и HDMI провода и закрываем
С помощью обычной «липучки» вырезаем полоски для крепления провода к шлему и скрепляем провода в ту сторону, где находится компьютер:
Важно: длина проводов до ПК не должна превышать 2.5 метра. Иначе это грозит потерей сигнала через HDMI, помехами, нестабильной работой и т.д. Однако, существуют HDMI провода со встроенным усилителем (как, например, в Oculus). Такие варианты достаточно хорошо работают при длинне от 3 до 5 м.
ПОДКЛЮЧЕНИЕ И НАСТРОЙКА
Отлепляем все защитные плёнки с очков (с линз, корпуса), устанавливаем для начала Oculus Runtime 0.4.4, перезагружаем ПК и подключаем шлем.
В результате, если запустить Oculus Utils, то шлем распознается как Oculus DK1 и уже сейчас можно поиграть в некоторые игры под Runtime 0.4.4 на ваше
В случае, если вы приобрели уже готовый трекер с прошивкой VRD, то процедуру по смене прошивки далее можно пропустить.
Брюки превращаются. Вас не пугает общаться с оборотнем в VR? Тогда вперёд! Берём паяльник, проводники, разъём и делаем вывод для SWD разъёма и программирования трекера (если он у вас свой):
В этом месте, пожалуй, самое важное:
Важно:необходимо сгенерировать ключ с помощью специально утилиты, получить индивидуальную прошивку под ваш трекер в формате .hex и «залить» её через программатор в трекер через SWD разъём.
результате этих манипуляций после перепрошивки трекера необходимо удалить старый Runtime (если он был установлен), перезагрузить ПК, установить Runtime 0.6 — 0.8 и запустить Oculus Utils:
Невероятно, но факт: ваш шлем виртуальной реальности, теперь совместимый с Oculus Rift DK2 готов к труду и обороне!
Немного Oculus Home:
На этом пока всё, мы надеемся, что вся вышеизложенная информация послужит на пользу развития VR индустрии в целом.
поднебесная все равно скоро все это удешевит и популяризирует, но таки интересно, спасибо
сохраню к тем постам, которые очень круты, но сделать я их не сумею
Круто! Сохраню чтобы однажды, просматривая сохранённые посты, удалить из сохранённых постов, потому что я ёбаный нищий рукожоп.
разбираем очки виртуальной реальности вытаскиваем трекер и делаем новые очки виртуальной реальности!
Из расходных материалов спирта тут потребуется очень много, ибо без пол литра не разобраться
Мой шлем виртуальной реальности :)
@moderator, добавьте тег geektimes пожалуйста.
И обращение ко всем, кто пастит новости с гиктаймса на пикабу: добавляйте тег. Ну невозможно каждую новость видеть по два раза на обоих сайтах.
А есть урок "Как сделать компьютер для шлема виртуальной реальности своими руками"?
Как легко!Пойду сделаю два
Больше на рекламу смахивает. Объясню почему: умельцев, которые смогут это сделать (и будут замарачиваться самоделкой, ради экономии пары сотен баксов), тут по пальцам пересчитать. Зато ссылочка на покупку этих самых комплектов имеется.. Ну да ладно. Автор, а что знаешь про playstation VR? Вроде неплохая штука выйдет, если оптимизируют как следует, плюс камера и дополнительная приставка к шлему обнадеживает.Что думаете?
Эх, щас бы вставить 4к дисплей в VR..
Какой бюджет вышел?
Мне кажется что шлемы виртуальной реальности на данный момент и в перспективе, не особо интересное и полезное приспособление по сравнению со шлемами (очками) дополненной реальности.
Супер! Осталось только DK2 трекер и экранчик
буду признателен если кто нибудь даст ссылки на детали (желательно с али) а то инструкция есть но такое "быдло" (ну в подобном рукоделии у меня реально нет знаний и почти нет опыта) как я обязательно что то да не то купит .
Это чтот типо Deepoon e2 3d с алиэкспресса.
"Как убить зрение своими руками"
Rush — In The Mood
может прикупить потом
@moderator, тег DIY пожалуйста
мне кажется качество будет не то что будет в потребительской версии. Вообще хотелось бы попробовать хотя бы бюджетный вариант VR ориентированного на просмотр фильмов.
абсолютная беспонтовщина. даже заморочек не стоит никаких. совмещал свой нот3 с типа кардбоардом. ну его нафиг. слишком уж низкое разрешение выходит. плотности пикселей фигня и не думаю что на элсиди-дисплее ситуация лучше. помудохался с отстройкой дрифта гироскопа, попотел с настройкой ПО. полетал в war thunder - аттракцион ниже среднего.
по итогу если есть вариант где-то очки типа кардбоарда надыбать за копейки или на выходные у знакомого взять..и телебон позволяет если то можно денек ради прикола повозиться. но так замарачиваться, заказывать и паять что-то? да вы прикалываетесь)))
Не понимаю, легче купить на Али за 130р картонный кардборд, нечем не отличается от тех что за 50к
Без лишней суеты, сплошное удовольствие.
1920*1080 для двух глаз слишком мало. Картинка будет расплывчата, играть или смотреть, что то будет очень не удобно. Приятнее будет на телике или мониторе в 2D или классическом 3D. Нужно хотя бы для каждого глаза такое разрешение.
Просто эта хрень нах не нужна. Такая тема уже была в 80 годах. Посмотрите хотя бы фильм с Майклом Дугласом и Дэми Мур. "Разоблачение" Эта тема мертва сама по себе.
нихуясе. майкрософты обанкротятся с такими умельцами. Или нет? скорее всего нет, бо многие прочитавшие - дальше текста не пойдут(
Сшила игрушку по своему рисунку. Выкройка в Blender 3D
Выкройку делала в программе Blender. С помощью аддона Seams to Sewingpattern.
Сделала ГЛАЗ АГАМОТТО Доктора Стрэнджа
Изначально планировала слепить мастер-модель из monster clay и отлить её в силиконе, НО получился трешовый треш 🥲 (смотри в видео ⬇️, потому что показывать тут этот ужас не буду)
Решено было распечатать на 3D принтере, тем более нашла модель с механизмом открытия век 😍Шкурила, грунтовала, покрыла полимерным гелем, снова шкурила.
Далее окрасила в золотой цвет. Чёрным акрилом создала эффект старения, серебристым обозначила передние детали. Финишно покрыла сатиновым лаком.
Шнур так же изготовила сама.Использовала полоски искусственной замши и мулине.Собрала все элементы в единую конструкцию.
Из всякого хлама сделала простейшую цепь со светодиодом и кнопкой ⬆️Через боль и страдания разместила это всё в малюююсенькой детали корпуса, а из пластика и блёсток слепила камень времени ⬇️
Прошу пройти в комментарии и написать свое мнение по данному проекту 🙏🏻ОЧЕНЬ СОВЕТУЮ посмотреть ролик с изготовлением артефакта ⬇️🔥
Корпус ПК в виде консоли Xbox one S своими золотыми руками
Я вот тоже решил поделиться с вами своим проектом.
Длиннопост с картинками.
Кнопка включения, выполняет свою функцию - включает и выключает ПК, как выполняет свою функцию и индикация кнопки, мигающая в режиме сна.
Многочисленные линии отверстий на корпусе, так же переходят и на заднюю панель, не только формируя завершенный вид, но и увеличивая объем потока высвобождаемого воздуха.
Кнопка выдачи диска, изменилась на заглушку с крестообразным отверстием. За ним прячется USB микрофон мембранного типа. Изолятором вибраций, служит небольшая прослойка пены между динамиком и корпусом-заглушкой.
Все началось с того, что мой 7 летний старичок на MacOS спалил блок питания, в попытке прогрузить весьма не затейливую 3D модель.
С тех пор я решил для себя, что старичку пора искать замену в лице более производительного, но все еще компактного решения.
Если с выбором железа, особых проблем не возникает, то выбрать корпус - та еще задача.
Спустя гигабайты перерытого интернета в поисках достойного решения, мне на глаза попадается весьма интересный проект одного зарубежного господина.
Казалось, что вот оно - все что мне нужно: Компактный и стильный корпус, способный уместиться у меня на столе в поле моего зрения. Тихий, с изящной яркой полосой во фронтальной части, так весьма вписывающейся в строгий дизайн.
Цели и задачи:
Отправной точкой принятия решения, стали сомнительные на мой взгляд детали, которые мне так хотелось улучшить. Это был вызов для меня, не имеющего опыта в 3D моделировании и построении печатных плат. Чтож, вызов принят!
Так вот, я выделил для себя следующие цели:
А. Внедрить блок питания внутрь корпуса - вместо внешнего "Бруска размером с половину корпуса" на 200W:
Б. Отказаться от использования клеевого пистолета, тк это ненадежно, не ремонтопригодно и не функционально:
В. Использовать все функциональные возможности передней панели - долой бутафорские и нефункциональные кнопки! Убрать антенны, установив их внутрь корпуса:
Г. Наладить кабель-менеджмент, увеличив приток и отток воздуха:
..и многое другое.
Цели и задачи ясны, нужно двигаться - поэтому я приступил к реализации.
И первое с чего я начал - это поиск комплектующих.
Отпущу лишнее, скажу лишь очевидную вещь - не всякое железо подходит.
Например, самая мощная видеокарта способная войти в корпус - это gtx 1650 4gb Low Profile. Узкая по своей форме видеокарта. То же касается и остальных частей в корпусе - кулера процессора, оперативной памяти, блока питания,
Разбираем корпус - он состоит из двух основных деталей - Нижней черной панели и верхней крышки:
Нижняя панель - вид изнутри:
Синяя панель - основание из 3мм пластика, в дальнейшем, на ней будут располагаться наши комплектующие:
Винты для крепления материнской платы к обычному корпусу, используются формата М3. Но в нашем случае, разной длинны.
Осталось подготовить место для их посадки.
Для этого использую латунные резьбовые гайки М3.
Их задача - посредством перемещения тепла, выделяемого паяльным жалом моего TS100 - размягчить поликарбонат в нужном месте, и намертво внедриться в него, создав в последующем надежное съемное соединение для наших комплектующих.
Выглядит весь бутерброд следующим образом:
Еще немного о расположении основных частей нашей сборки.
Забегая вперед - скажу, что номинала этого блока питания, хватает с лихвой.
Круг в центре текстолита - посадочное место для пружины, выталкивающей кнопку в нулевое положение после нажатия. Кнопки на текстолите дублируют друг друга, повышая срок службы.
На последок, вторая по трудоемкости работа:
За основу были сняты размеры с оригинальной планки, в 3D перенесены все крепления и изгибы, после чего мне осталось выдавить отверстия, углубления, вытянуть ребра жесткости и разрезать модель на 3 части - таким образом, подготовить к печати.
Благодарю за внимание!
Ответ на пост «Зачем напримеры нужен 3д-принтер )»
Вот только что закончил. Меня кинули с заказом на сверлильный станок и он стал стоить вместо 24к 60к. Решил пока обойтись бич вариантом и взял стойку для дрели и гравер (для точной сверловки не стальных изделий). Но гравер в нее невозможно зафиксировать, поэтому я за пару минут замоделил переходник с резьбой М18*2 и за час напечатал. Вышло идеально, будто это комплектный переходник, накрутился будто фабричный. А потом не нашел подходящих гаек и тоже их быстро напечатал, PETG очень мощный пластик и выдержит приличные нагрузки. А так в работе принтер нонстоп используется.
Зачем напримеры нужен 3д-принтер )
За полчаса нарисовал, за три напечатал, за 5 минут собрал. Предлагаю всем печатникам такие мелкие полезняшки выкладывать, популяризировать тему, ибо у обывателя это все в основном вызывает реакцию "игрушки печатать" и на этом все.
Виртуальная экскурсия по суперкомпьютеру Уран с панорамной камерой
Можно крутить мышкой, чтобы осмотреться по сторонам
А те, у кого есть шлемы виртуальной реальности - могут посмотреть в них
Как я делал систему оптического трекинга
Дело было в далеком 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, ищущие работу, пожалуйста, напишите мне.
Традиционный забавный момент в конце статьи:
Периодически при тестах с большим количеством игроков возникал глюк, при котором игрока внезапно на короткое время телепортировало на высоту несколько метров, что вызывало соответствующую реакцию. Дело оказалось в том, что моя модель камеры предполагала пересечение матрицы с бесконечной прямой, идущей от маркера. Но она не учитывала, что у камеры есть перед и зад, так что система искала пересечение бесконечных прямых, даже если точка находится за камерой. Поэтому возникали ситуации, когда две разные камеры видели два разных маркера, но система думала, что это один маркер на высоте в несколько метров.
Система в прямом смысле работала через задницу =)
Как я перчатку виртуальной реальности делаю
Привет! Дело было летом. Я недавно уволился с работы и отдыхал дома в импровизированном отпуске. Освободилось много времени и энергии. И поэтому, когда мне на глаза попалось видео Лукаса с его прототипом виар перчатки с обратной связью, я подумал "А почему бы и нет?"
Посмотрев видео несколько раз, я составил примерный план, и приступил к изготовлению. Заказал нужные комплектующие и запустил файлы на печать. Через некоторое время, у меня начало что-то появляться:
Детали, мягко говоря, не получились с первого раза из-за многих (ой многих) причин:
(осторожно, беспорядок на столе)
Доводить до ума эти катушки было ооочень сложно. Две детали мне пришлось сильно изменить, а одну и вовсе перерисовать с нуля. Чтобы передохнуть, я отвлёкся на другие части проекта: тестирование электроники и подготовку перчатки:
Смотрите, какой я довольный в этой перчатке 😄
Это я ещё не знаю, сколько подвохов есть в размещении этих маленьких направляющих. Но уже сейчас на перчатке видно много следов от переклейки деталек.
Тут я закончил все пять катушек:
И нацепил их все на перчатку:
И закрепил все маленькие тросики на пальцах:
И был так рад этому, что записал видео. Кстати, обратите внимание, что направляющих для тросиков стало в два раза больше. На видео хорошо видно, как сгибание пальцев поворачивает механизмы в катушках:
Отлично! Уже стало на что-то похоже!
Дальше, конечно же, электронная часть. Соединил всё через бредборд с ардуинкой, загрузил в неё прошивку.
И успешно протестировал. Оно работало!
Думаю, надо наконец рассказать принцип работы перчатки 😅
Она состоит из следующих ингредиентов:
• Сама перчатка, как основа;
• Направляющие для тросиков и наконечники пальцев;
• Проводов и микроконтроллера.
Катушки, в свою очередь, состоят из:
• Потенциометров (переменных резисторов);
Принцип работы заключается в том, что сгибание пальца тянет тросик, который разматывает подпружиненный барабан, который соединён с валом потенциометра, который изменяет своё сопротивление, которое считывает микроконтроллер, который отправляет эти данные по серийному порту. (И дальше их ест драйвер, который притворяется контроллером Valve Index).
На последнем видео как раз открыт монитор порта, и видно как ардуино шлёт данные о пальцах.
Остальное, пожалуй, оставлю на следующие посты.
В них вас ожидает:
• Доведение прототипа до полностью работоспособного состояния;
• Объяснение смысла выбора именно такого принципа работы;
• Разбор недостатков, которые привели к тому, что я начал делать собственную модель перчатки;
• Мои корявые попытки изготовления печатной платы;
• Фотки новой перчаточки;
• Более аккуратная пайка;
• Более аккуратная печатная плата;
• Трёхмерные модели оригинальной перчатки и моей версии;
• Фоточки процесса работы;
• Сайд-проекты, которыми я отвлекался от эпопеи с перчатками;
• Финальная! (ха-ха, нет) Версия моей перчатки;
• Дальнейшие планы и идеи;
• Ответы на вопросы.
А вот тизер следующего поста:
Буду рад ответить на ваши вопросы!
Сказ о том, как программист скульптуру создавал
Приветствую читателей. Сегодня я расскажу, как создавал первую в своей жизни скульптуру.
Может быть, в кругах профессионалов, это явление называется как-то иначе, но в моем кругу уже твердо устоялось, что это именно скульптура и ничто иное. Это моя первая статья на Пикабу, надеюсь, что не последняя. Может быть, мой пример того, как можно сделать что-то прекрасное, не имея значительных ресурсов и инструментов, подтолкнет кого-нибудь сделать что-то классное, всегда приятно быть хорошим примером.
Как это случилось
Некоторое время назад у меня было совершенно много времени из-за отсутствия дел, как ни странно, я совершенно не знал, чем себя занять и все из-за того что, не мог программировать — заниматься любимым делом. Это было обусловлено тем, что у меня сломался мой старенький компьютер. Да, сейчас возникает вопрос:
- Эй, ты же программист! Почему ты не заработал денег на новый компьютер?
Отвечу просто: программисты бывают разные. Среди них есть люди, которые просто не хотят работать, впрочем, это уже другая история. Да, деньги у меня были, но их не хватало на ремонт. Всего у меня было на тот момент 11 000 рублей. Как-то вечером, я гулял с собакой и, проходя мимо мусорки, я увидел гору стоящих на обочине манекенов, сначала я прошел мимо, а потом задумался:
“А что если взять их домой?“
И тут же задался вопросом:
И ответил себе же:
“Ну, что-нибудь придумаю.”
К слову, дискутировал я с собой достаточно долго на этот счет. В итоге: я решил, что манекена у меня дома никогда не было и я точно хочу его забрать.
Решение принято.
Манекены - это дело такое, пришлось ходить несколько раз. Сначала, я притащил верхнюю часть, потом подумал:
“ А не собрать ли мне этот конструктор целиком?”
И решил протащить ноги, но, видимо, было не суждено. И каким-то образом, я притащил две левые ноги, которые полностью разрушали картину полноценного манекена. Вообщем, я их выбросил.
В итоге мы имеем только верхнюю часть.
“А что делать дальше?”
Совсем не сразу мне пришла та идея, о которой дальше пойдет весь рассказ. Сначала, это была лампа, затем что-то еще. Все эти идеи сопровождались неудачными экспериментами с манекеном.
Прошло может быть несколько дней, как я придумал, что все так буду делать. Эти дни мне явно спалось не спокойно, ведь я творец-изобретатель, а не знаю, как мне вдохнуть душу в этот запачканный краской кусок пластика. И вот образ: проволока, паяльник, олово. Зачем выдумывать что-то, если я почти всю жизнь паяю-создаю-чиню электронику? Почему бы просто не спаять все проволокой в виде полигонов*?
(*Полигональная сетка — это совокупность вершин, рёбер и граней, которые определяют форму многогранного объекта в трёхмерной компьютерной графике и объёмном моделировании. Википедия).
Да, изначально, это даже мне представлялось не более чем какая-то авантюра. Соединить узлы, все грани. Изначально, это казалось фантастической идей. Но авантюры я люблю. Возможно, даже просто обожаю идти наперекор всему, в чем сомневаюсь я и другие.
Тем временем блуждающий разум не оставляет мне ничего, кроме как идти за идеей. Не смотря ни на что. Уже спустя несколько часов, я обсудил эту идею с множеством своих друзей и, можно сказать, утвердил ее окончательно. Если и были какие-то сомнения, то они только подрывали мой интерес. Тем не менее, мне было чем рисковать. Единственные на тот момент деньги я мог бы потратить хотя бы не на самый дорогой компьютер и не оставлять себя без любимой работы, но я все же решил, что хочу сделать скульптуру.
Утром того же дня я отправился за проволокой и припоем. Я не особо прикидывал, сколько материалов мне нужно, поэтому слепо решил взять 5 метров проволоки с тремя жилами под оплёткой (получилось 15 метров). Также я купил плоскогубцы, чтоб придерживать и резать проволоку, и в том числе новый паяльник на 400 ват. Вернулся и начал творить. Недолго думая, я очистил всю проволоку от оплётки и пробил голову манекену гвоздем, что в последующем и стало основной точкой опоры всего металлического каркаса.
Затем я нарезал все 15 метров проволоки на кусочки по 2-3 сантиметра. Это было не так сложно для первого раза. Быстрая, но все же монотонная работа начинала изматывать и я время от времени переключался на пайку.
Удивительно, как быстро у меня закончились 15 метров проволоки, их хватило буквально на один вечер и то, покрыть голову без затылка.
Поход в магазин
Вот и настал следующий день. И я решил снова пойти в магазин, дабы не упускать возможность пройти эту игру в спидран режиме*.
(*speedrun — прохождение компьютерной игры за наименьший промежуток времени в рамках соревнования или для развлечения. Википедия).
В этот раз закупиться я решил уже обстоятельно, для того чтобы постоянно не ходить в магазин и засесть на неделю так. В этот раз я уже купил 15 метров проволоки (вышло 45 метров). Также я купил припой, чтобы точно не застрять из за нехватки того или другого компонента.
Дни шли, а я паял по 12-15 часов, уже убедившись в том, что победа неизбежна. Обычно, когда я вижу положительный результат на каком-то из шагов, я считаю, что уже победил и мне становится не интересно. В этот раз было точно также и, временами меня поглощала тоска, я пробуждался только когда понимал, что это еще не законченная идея.
Временами на меня все таки наплывало какое-то вдохновение, и я продолжал делать дальше огромными скачками.
Потом у меня в очередной раз кончалась проволока и я шел в магазин и снова ее покупал, также как и припой. Деньги уходили стремительно.
Но еще стремительней уходило терпение, но эта эпопея близилась к концу. К тому времени было готово уже 70% работы. Я показывал результаты своим друзьям: они меня подбадривали, давали интересные и ценные советы, а я шел дальше.
Забавный факт. Все, кто наблюдал за моей идеей, задавался преимущественно только одним вопросом (может быть и ты, читатель, уже задался этим вопросом?):
«А как ты будешь вытаскивать манекен или так и будет?»
«Как ты будешь его рассоединять?»
Сначала я рассказывал, как это будет, ведь я этот процесс представлял себя более чем ясно. Потом я устал отвечать на этот вопрос и начал просто задумчиво отвечать:
“Что-нибудь придумаю…”
Еще один интересный факт: частично, я спаивал узлы на кровати, потому что так было удобно, во всяком случае, мне.
Наконец, я спаял все 96 метров медной проволоки, с помощью 500 грамм олова за две недели из которых одну неделю я был в состоянии депрессии, а другую я был в состоянии абсолютного вдохновения. Всего на данный момент было потрачено 8 тысяч рублей, примерно 4 500 рублей из которых было потрачено на проволоку и 2 500 рублей на оловянный припой. В том числе, инструменты в виде паяльника и плоскогубцев обошлись, примерно в 800 рублей.
Также, стоит упомянуть и другие цифры, которые заслуживают внимания. Проволока была разрезана
3840 раз на кусочки, в среднем
2.5 сантиметра. Общее число соединений в конструкции
640 узлов. В среднем на один узел уходило 1.28 грамм олова. Вес конструкции около 7 кг.
«Как ты будешь его вытаскивать ?» и как я вытаскивал
Я помню, что так и не рассказал как я буду вынимать манекен из прочного металлического каркаса. Все весьма просто. Может быть, для некоторых моих друзей и читателей до этого момента было секретом то, что пайка это совсем не тоже самое что сварка и не подразумевает монолитного крепления железа. Любая пайка, получается, что временное явление и никогда не происходит смешивания двух металлов, чтобы потом их нельзя было разъединить. Не хочу знать понятен ли намек, просто приведу пример:
Я разберу этот каркас как шоколадное яйцо, разделив его вдоль границ фигуры.
Эта процедура безболезненна, за исключением процесса отслаивания прикипевшего к пластику каркаса — что в целом, тоже не стало большой проблемой.
Теперь соберем: а вот собрать оказалось не так просто, как я думал изначально, хоть нижняя часть у нас и является полой, и добавляет некоторой просторы, все таки, это было не так просто.
Тем не менее, мне удалось все соединить, аккуратно разместив грани стыков и спаяв их обратно.
Спустя некоторое время, хоть скульптура и имела уже вполне благородный вид, все же ей чего-то не хватало и полноценной она не казалась. Я решил, что нужно придумать какую-то платформу, на которой она будет стоять. Изначально, я представлял, что это будет как в музее, ну или хотя бы как на какой-то не самой невзрачной выставке. Вообщем, требовался достойный результат. Недалеко от дома у меня есть мастерская по дереву. Я прикинул, что единственный вариант для меня, изготовить подставку - это выточить что-то из дерева. Сам то, я не в состоянии это сделать, по вполне ясным причинам отсутствия инструментов.
В ходе недолгих размышлений и предложений на месте событий, было принято решение использовать цельный экземпляр орехового дерева для изготовления подставки.
Так как все были заняты и отдать этот кусок за 2 000 рублей мне решили только при условии, что я его сам обработаю, также разрешили использовать местные инструменты и в общих чертах объяснили, как этот процесс происходит.
Некоторое время спустя у меня начало получаться, что впрочем и неудивительно. Обработка дерева очень успокаивающий процесс, советую всем попробовать.
Следующий шаг был покрыть дерево маслом, после чего оно раскрывает свою структуру и становится шоколадно-коричневым.
Но это еще не все. Теперь нужно обработать саму скульптуру и покрыть ее прозрачной матовой краской, чтобы она не почернела через несколько месяцев на воздухе.
Если присмотреться к изначальному результату и к этому, можно заметить ощутимую разницу после обработки: все острые капли, неудачно застывшего припоя, стали гладкими блестящими точками, а сама медь начала блестеть, отражая свет.
Один из моих друзей посоветовал мне замочить скульптуру в лимонной кислоте, чтобы снять окислившийся слой и обезжирить весь метал. Чтобы не рисковать лишний раз, я для начала решил провести эксперимент с небольшим треугольником из медной проволоки.
Результат не заставил себя долго ждать. И в самом деле, медь стала как новая, а олово никак не изменило свой цвет.
После удачного опыта, я тут же пошел в магазин, хоть и была уже поздняя ночь, но я успел купить 20 пачек лимонной кислоты и прозрачную матовую краску. Все это обошлось мне примерно в 500-700 рублей.
Затем, я набрал ванну на одну треть водой, в которой размешал 200 грамм лимонной кислоты. После чего, поставил туда скульптуру и омывал ее минут 30 из стакана, также протирая чистой губкой, замоченной в лимонной кислоте.
Следующим шагом нужно было где-то покрыть лаком металл, пока он не обветрился и не покрылся пылью и жиром. Не долго думая, я понес скульптуру в подвал, где и покрыл ее краской из баллончика в несколько слоев.
Подождав около часа, я занес ее обратно домой и повесил на люстру.
Утром следующего дня? я снова отправился в мастерскую по дереву. Теперь речь шла уже о том, как прикрепить скульптуру к основе. Опять же, я сложности в этом не видел никакой, для меня все было очевидно. Мне представлялось, это именно так: восемь отверстий в дереве, в каждом из которых проволока, припаиваем к скульптуре и готово, а проволоку к дереву на супер клей. Так я и сделал.
(фото до обработки металла)
Завершая эту статью, хотелось бы еще раз напомнить о том, что даже не имея колоссальных ресурсов, широкого набора инструментов и тем более навыков их использования. Можно сделать что-то прекрасное и да, делайте красиво, пожалуйста!
DIY Протонный рюкзак Охотников за привидениями
В своем сегодняшнем посте я хочу с Вами поделиться своей новой работой!
Представляю Вашему вниманию протонный рюкзак с пушкой охотников за привидениями!
Данный рюкзак оснащен RGB подсветкой, пушкой-парогенератором, отсеком для блютуз-колонки (в будущем интегрированной колонкой!
Это изделие - прототип, первая версия рюкзака. В будущем я планирую улучшать изделие и добавлять в него новые плюшки.
Первая версия выполнена из дерева, PLA, ABS и PETG пластиков с помощью 3D печати, рассеиватели из акрилового стекла. Разработан рюкзак в программе Cinema 4D.
Вместе с рюкзаком было сделано зарядное устройство, с возможностью одновременной зарядки как ранца, так и пушки. На пушке и рюкзаке выведены порты для зарядки, чтобы не вытаскивать аккумуляторы каждый раз, когда они разрядятся.
Изделие удобно в обслуживании за счет магнитных крышек там, куда пользователю может потребоваться доступ. Есть, так называемые, инженерные отсеки. Для доступа к ним потребуется открутить винты.
Фотографии сделаны сразу после завершения работы и не передают описанного в этом посте функционала. Готовится обзорное видео и, возможно, серия роликов с поэтапным изготовлением рюкзака.
Будет видео по изготовлению, иди нет - решать вам! Ваш актив - лучший индикатор заинтересованности!
Спасибо за просмотр!
Светильник на Хэллоуин
В очередной раз решил изготовить данный светильник к вражескому празднику.
Модель самого гроба со вставками нашел на 3dcults. Поставку с кнопкой включения а также луну (чтоб воткнуть в нее светодиод) моделил в Компасе.
Вставки печатал из PLA, корпус из PETg ( хотел сократить время печать и печатал в 2 периметра - было ошибкой, т.к. вылезло много косяков)
Красил черным акриловым грунтом, потом методом сухой кисти, самыми дешевыми акриловыми красками.
Для света использовал светильник-кнопку из ОБИ за 100₽, кнопку взял из оттуда же.
Хотел вставить видео включения, но почему-то Пикабу его поворачивает.
VR Бинокуляр
Хочу поделиться радостью:)
Год назад мы с друзьями надумали сделать бинокуляр (стационарный бинокль), но не простой, а с виртуальной реальностью (т.е. в него видно не реальный мир, а вымышленный).
И вот после года обсуждений, экспериментов и косяков (это наш первый инженерный проект) - наш бинокуляр стоит на дворцовой площади Санкт Петербурга, и любой желающий может увидеть в нем ту же площадь "сто лет тому назад".
У меня было много проектов по разработке, но есть что-то очень особенное когда устройство которое было только в голове, "выходит в реальный мир". Захотелось поделиться)
p.s. это не реклама, показы бесплатны, мы на этом ничего не зарабатываем, да и через пару часов все равно акция закончится и бинокуляр поедет домой, на доработку)
Статуэтка Iron Maiden в деталях
Два года назад с переездом в Сочи с женой и дочкой начали новое для нас дело - изготовление сувенирной продукции. По-тихоньку перешли к изготовлению различных изделий под заказ. К нам обратился фанат группы Iron Maiden, для него мы изготовили уже вторую статуэтку символа данной группы Eddie the 'Ead или Edward the Head.
Вот первая статуэтка
А теперь хочу рассказать подробнее о всех процессах изготовления.
1. моделинг\скульптинг 3д модели.
Заказчик прислал обложку альбома с которой нужно создать образ и желаемый размер 30-40 см
Создаю 3д модели в нескольких программах, в этом случае я использовал ZBrush так как у этого персонажа нет полигональных деталей, тут одна лепка.
Лепил по 2-3 часа в день, 3-4 дня в неделю. Этот процесс растянулся на 2 недели.
2. Печать на 3д принтере SLA Anycubic Photon Mono X с рабочем полем 190х120х245мм.
Печатать смолой художественные изделия одно удовольствие, минимум пост обработки
Для воды мы приобрели прозрачную смолу для 3д принтеров. Прозрачная смола для печати это отдельная тема, очень много идей с её применением, думаю в скором будущем мы выложим пост про неё и добавление пигметов и блёск прямо во время печати - получается что то необыкновенное!
По завершению печати приступаем к самому ответственному на мой взгляд этапу:
Первым делом все детали грунтуются, для этого мы использовали грунт для пластиков белого цвета марки Kudo, она имеет очень мелкое зерно и хорошую адгезию со смолой.
После высыхания грунта всё тщательно прокрашивается аэрографом, далее проливка тёмной, жидкой краской в углублениях и мелкие детали прокрашиваются кистью.
Всё краситься акриловыми художественными красками
На стадии лепки 3д модели прорабатываются места соединений, для крепкости склеиваем суперклеями
Очень важный момент, на который нельзя жалеть не сил не средств
Спасибо за внимание)
Фигурка Улькиорры своими руками
Всем привет! в этом посте я хочу рассказать путь изготовления фигурки из аниме сериала Блич.Я всегда хотел себе клевые фигурки из фильмов и сериалов, но цена хороших фигурок очень сильно бьёт по карману ((( Но так как желание заиметь себе красивую фигурку есть, то было принято решение изготовить ее самому. Приобрел я 3д ручку, гравер и сопутствующие материалы я приступил к созданию бендера из футурамы. Работа была долгая, трудозатратная но итог мне пришелся по душе. Видео можете посмотреть у меня на другом посте. Один из комментариев мне давил на мозг- мол, купи 3д принтер и занимайся печатью, зарабатывай! Тогда мне эта идея очень понравилась. Приобрел графический планшет и сел изучать 3д моделирование. Программ много, функционал и удобства разные. После не долгих раздумий остановил свой выбор на программе ZBrush. прога предназначенная для 3д скульптинга. Причем именно скульптинг как пластилином, но со своими особенностями. Кстати если хотите заняться моделингом то советую ZBrush, но все же придётся изучить и другие 3д проги. Через пару месяцев немного освоившись в брашике я решился своять улькиорру из блича, почему именно его- обещал жене, она по нему фанатеет. К слову я пытался зафигачить его 3д ручкой, получилось откровенный шлак. Ссылка на артстейшен: https://www.artstation.com/artwork/VgRK3g заходите, оцените))
Следующим шагом было приобретение принтера. Был выбор между фотополимерным и обычным. меня смутила стоимость смолы на фотополимерный принтер. Также он сильно пахнет при печати. Посоветовался со всеми я купил обычный принтер 3D принтер DEXP MGN
Думал для моих задач он подойдет. Надо было брать фотополимерный. точность печати у обычного хорошая, но у полимерного намного лучше хоть и заморочек больше. Может я и не прав. Печатал фигурку по частям неделю слоем 0,1мм. После того как фигурка была напечатана, я подзабил на пару месяцев. В период отдыха на принтере были напечатаны маленькие сувенирные игрушки, подставка под телефон и другое, в общем принтер очень полезная штука)))
И тут я сел на карантин по ковиду. Хреновая болячка..
Немного очуховшись я принялся доделывать фигурку. Докупил грунт акрил приступил к обработке и сборке фигурки. Когда зашкуривал грунт пару рас сломал детали, психонул, склеил. во время покраски понял что размер маленький, надо было печатать больше раза в полтора или два. Когда красил глаза чуть не сломал свои глаза. финальный штрих был лак. Объездил свой город в поисках матового аэрозольного лака. Нигде не нашел, взял глянцевый.
Итог: было совершено много ошибок, но итог меня в принципе устраивает. Но мог бы и лучше..следующие фигурки будут намного качественней. как говорится первый блин комом. Фото и видео прилагаю. Видео снимала жена и выкладывала в свой тикток: https://vm.tiktok.com/ZSJt2v6VF/ . Заходите. Пишите свои комментарии. Всем кто дочитал до конца большое спасибо)))
P.S. Если захотели что то сделать не останавливайтесь только на идеи, воплощайте ее в жизнь. Всем удачи и здоровья!
Современное искусство
Как мы получили бесплатные Oculus rift s
Пост состоит из нескольких больших частей:
-Сама программа получения подарка от Oculus
- Отзыв о продукте и в целом наши впечатления (окулус просят, чтобы мы об этом написали)
- С чем можно попасть в эту программу.
Опросив знакомых разработчиков выяснилось, что не все знают о программе Oculus Start и Oculus Launch Pad, по которым можно получить много приятных ништяков от компании. Мы участвовали в первой.
Делается это относительно просто. Переходим на https://developer.oculus.com/oculus-start/ ищем внизу “подать заявку”, следуем инструкциям. Вас попросят создать аккаунт, зарегистрировать команду (команда из одного человека это нормально) и загрузить VR приложение над которым вы работаете. Останется только заполнить адрес, какой шлем хотите (сейчас всем шлют только oculus rift s), ваш размер для толстовки и т.п.
Да, у вас должно быть своё VR приложение, чтобы получить набор разработчика VR. Программа рассчитана в первую очередь на людей, у которых уже есть шлем для steamVR, но они хотят выпустится в магазине Oculus.
У вас нет никакого шлема? Не беда. Например для ue4 есть шикарный плагин ue4 vr expansion ( https://vreue4.com/ В меню, в репозиториях есть “Example Template Repository” - там лежит уже настроенный проект, рекомендую скачать именно его для вашей версии анреала, а не устанавливать плагин самостоятельно). У него есть фишка - управление сделано и для клавиатуры/мыши и для всех популярных VR шлемов одновременно. Да у вас будут “не сгибаемые руки”, но при этом вы сможете с клаво-мыши брать предметы в левую и правую руку, нажимать кнопки, ходить, стрелять и т.п.
Создаете прототип приложения над которым вы будете работать, упаковываете в EXEшник и ищете того, кто поможет протестировать с реальным шлемом. Таких людей можно найти на сервере VR RUS в дискорде https://discord.gg/YnxzdDQ (можно сделать клич тестеров по запросу @альфа тестер)
Если всё нормально, то отправляете приложение. Сразу скажу, что на “прокатило” лучше не рассчитывать, должно быть всё качественно.
После отправки заявки остаётся ждать … хз сколько, вот у меня знакомый получил приглашение через 6-8 месяцев, а я через месяц. Если всё успешно, то придёт письмо поздравление и вам дадут доступ к закрытому серверу в дискорде и на форум для разработчиков. С этого момента вы встаете в очередь для получения шлема, у меня она была ещё около полутора месяцев.
Высылают посылку через UPS и по умолчанию шлют на имя вашей компании. Поэтому как только вы получите поздравительное письмо сразу же пишите им, чтобы в строке получатель не было указана ваша компания, а только ваше ФИО, адрес и телефон. Почту для связи можно будет найти в той теме, где рассказано, как получить доступ к дискорд серверу (окулус просят не распространять её в открытом доступе).
Если имени компании не будет указано в инвойсе, то посылка попадёт на таможню нормально и вам придёт СМС от UPS брокера с данными для входа в личный кабинет. Там вам нужно будет заполнить все паспортные данные и написать, что именно находится в посылке. Мы дозвонились до УПС и нам прислали на e-mail копию инвойса, по нему и заполнили данные для таможни. У нас это выглядело так:
Никакого промокода в письме нет, но мы тут решили немного схитрить. Окулус оценили письмо в 75$, что может вызвать вопросы, поэтому мы придумали некий “промокод”. Цены взяты из инвойса. Ошибки в названиях мои :) .
Позже придётся оплатить таможенную пошлину (в 2020ом это 15% от суммы выше 200 евро). Я оплачивал ещё услуги брокера и всё вместе у меня вышло около 4000 рублей.
После оплаты останется только дождаться посылки. Я свою получил на этой неделе, двое коллег ожидают свои на следующей. У них всё было также по оформлению, просто чуть дольше.
Что же будет если вам отправят посылки на имя компании, а не на физическое лицо? Таможня не отдаст их вам, если у вас не будет зарегистрировано юр. лицо. Кроме того сопровождение посылки будет стоить 15000 рублей + таможенные пошлины. Когда нам об этом сказали, мы приняли решение - отправляйте всё назад. Связались с окулусом, объяснили проблему и они отправили посылки ещё раз, но уже без указания имени компании.
Что же в коробке:
С размером толстовки сильно промахнулись. Я решил указать по принципу “пусть будет чуть больше чем надо” и указал 3XL, мне же прислали 5XL - она для меня дико огромная… ну ничего, буду использовать как халат :)
Шлем обычный oculus rift S. Мне очень нравится, но я пробовал только первый vive и его. Rift же на уровень лучше первого htc vive. Текст в VR читается отлично, лично я пикселей не вижу (но есть и те кто видит), сидит на голове удобно, контроллеры не глючат - я очень доволен. И это не импульсивный отзыв, я рифт С покупал за свои деньги около года назад, сейчас же у меня 2 их :) А вот коллеги из команды получили его впервые и у них такая же реакция (они ещё ждут свои, но дал протестить на своём).
С чем прошли:
Мы отправили вот такую игру
Если кратко то игра в стиле принципа талоса, но с упором на VR фишки (использование двух рук).
Также у меня знакомые прошли с не игровым проектом, а именно с виртуальной выставкой для всяких компаний. Суть, компания даёт чертежи своих изделий, разработчики выставки моделируют, создают сценарии просмотра (разобрать модель, почитать информацию, пощупать всё и т.п.), потенциальный покупатель скачивает программу на компьютер и гуляет по выставке. Поддерживает как клаво/мышь, так и VR. Кстати эта же выставка получила ещё и Epic Mega Grant. https://www.youtube.com/watch?v=ni_zDBrAi5o Видео старое, но именно с ним подавались на окулус старт и мега грант.
Ещё один знакомый отправлял вот такую игру https://youtu.be/rcjvXPE5X-c Сделана для окулус квеста. Посылал в январе. Как он сам говорит “Я отправил, когда ещё было мало сделано, они отписали, что такое им не надо и повторно не могу отправить проект”. Сейчас разработка заморожена.
И ещё. Всего сейчас в программе Oculus Start около 300 человек, именно столько людей на закрытом дискорд сервере (команд же в разы меньше). Почему так мало? Возможно действительно мало, кто знает об этой программе, а возможно строгий отбор. Думайте сами.