8 января 2013 г.
15 августа 2012 г.
Дартс
Создана мини-игра на флеше для сайта «Калужского перекрёстка»:
Игра предназначена для интересного проведения голосования за участников различных конкурсов, организуемых на сайте. К сожалению, финальная версия чуть менее интересна визуально.
11 февраля 2012 г.
Подарок ко Дню влюблённых
Идея к сожалению не моя. Уже отрисовав свою версию, я нашёл сайт с возможностью заказа — а оригинал оказался не так уж и хорош. Бывает и такое :)
Мой вариант немного пикантнее:

Мой вариант немного пикантнее:

Можно скачать в формате CorelDRAW и при необходимости изменить — объекты не объединены.
Для наших прекрасных половинок с чувством юмора :) В понедельник поеду печатать.
8 февраля 2012 г.
7 февраля 2012 г.
Kinect Status Component
В документации к SDK 1.0 приведены рекомендации для обеспечения «great end-user experience» при использовании Kinect-приложений. Основная идея — сделать панель, которая будет показывать изменение состояний устройства, появляясь и исчезая в нужный момент. Я решил начать знакомиться с новым SDK с создания такой панели, тем более затем её можно легко использовать в других проектах, расширяя функциональность:
Например, можно добавить выбор одного из нескольких подключенных к компьютеру контроллеров (теперь поддерживается до четырёх устройств). Мне нравится идея добавить к этой панели возможность калибровки с подсказками — чтобы показать правильно ли был размещён контроллер и попадают ли игроки целиком в кадр.
Панель наследует DrawableGameComponent и предоставляет основную функциональность. Добавил её в тестовое приложение, при подключенном контроллере видео от камеры вращается:
Можно пробовать разные сценарии, отключать питание и USB, смотреть результат.
Панель наследует DrawableGameComponent и предоставляет основную функциональность. Добавил её в тестовое приложение, при подключенном контроллере видео от камеры вращается:
- Kinect Status Component (XNA 4.0, Kinect for Windows SDK 1.0)
Можно пробовать разные сценарии, отключать питание и USB, смотреть результат.
6 февраля 2012 г.
Kinect for Windows и SDK 1.0
1 февраля в ряде стран начались продажи Kinect for Windows, вместе с которым наконец-то запустили SDK 1.0, который можно свободно использовать в коммерческих проектах. Сам контроллер к сожалению ничем кардинально не отличается — появился режим «Near Mode», переносящий рабочий диапазон ближе (40 см от устройства), а также был укорочен USB кабель.
У меня снова появилась возможность и время для экспериментов с Kinect; в моём проекте скоро понадобится анимация персонажей, поэтому хочу наконец-то доделать приложение для захвата движения (простите все кто давно ждёт исходники).
SDK несомненно стал лучше, хотя есть неприятные моменты:
- многое изменено и переименовано, поэтому старый код сразу не заработает (рекомендации по переходу на новую версию)
- неожиданно оказалось что «старый» Kinect для Xbox 360 можно использовать только для разработки — если на компьютере установлен Redistributable, то после запуска Kinect-приложения нам тонко намекнут купить «новую» версию. На мой взгляд крайне идиотское решение, которое всё равно обойдут
А я то надеялся что в устройстве будет больше отличий, всё-таки почти полтора года прошло...
28 ноября 2011 г.
Стереоскопическое
Неожиданно пришла идея — а что если сделать стерео отрисовку и посмотреть что получится на экране нового телевизора c пассивным 3D? Всегда относился к этой фиче скептически, но именно с поляризационной технологией смотреть киношки в 3D мне понравилось. Хотя, возможно на моё мнение повлиял удобный диван и вкусный кофе с молоком... Может быть :)
Итак, встроенный плеер умеет показывать стерео изображение из анаморфных вертикальной или горизонтальной стереопары. Значит кадрам придётся потесниться и влезть в максимальные для телевизора 1920 x 1080 с неизбежной потерей качества.
Считаем смещения от текущего угла поворота камеры на основе расстояния до её цели и половины расстояния между «глазами», настройку последнего лучше для теста повесить на клавиши. Строим обе матрицы вида и рисуем с их помощью кадры, которые затем соединяем на финальном изображении:
Итак, встроенный плеер умеет показывать стерео изображение из анаморфных вертикальной или горизонтальной стереопары. Значит кадрам придётся потесниться и влезть в максимальные для телевизора 1920 x 1080 с неизбежной потерей качества.
Используем:
- два RenderTarget-а для отрисовки кадров для левого и правого глаза, по одной из сторон в два раза меньше экрана
- реализацию направленной камеры с двумя матрицами вида
Считаем смещения от текущего угла поворота камеры на основе расстояния до её цели и половины расстояния между «глазами», настройку последнего лучше для теста повесить на клавиши. Строим обе матрицы вида и рисуем с их помощью кадры, которые затем соединяем на финальном изображении:
Подключаемся к телевизору по HDMI, включаем 3D и надеваем очки. Для демонстрации эти же кадры в режиме вычитания:
Кстати, оказалось что на телевизоре стерео всё-таки отображается чересстрочно. Значит можно написать шейдер, который будет на каждой второй строке отображать RenderTarget над основной отрисовкой без изменения пропорций кадров — потери в качестве уменьшатся и в телевизоре не понадобится что-то включать, но нагрузка на видеокарту соответственно ещё больше возрастёт.
26 ноября 2011 г.
Who Wants to Be a Dude?
Что-то давно я ничего не писал и не показывал, мне стыдно, надо исправляться :)
Довёл до ума преобразование точек (именно в таком виде можно получать информацию о скелете от Kinect) в кости с неплохим определением их положения в пространстве. С этим была связана некоторая проблема, которую побороть так и не удалось, зато удалось сделать её незаметной. Кстати, если кто-то знает лучшее решение — огромная просьба просветить.
Мне кажется получилось весьма неплохо, к тому же есть куча возможностей для дополнительного сглаживания результата — это и настройки в самом SDK, и интерполяция точек и кватернионов. Первый скелет рисуется линиями, можно сказать что это правильно соединённые начальные данные от Kinect, здесь заметно некоторое подёргивание. Если джоинт не удалось рассчитать и он достроен автоматически — линия становится красной. Третий скелет — демонстрация построенных костей с изменёнными пропорциями. И, наконец, центральным персонажем является небезызвестный Dude из примеров c App Hub, с настройкой работы с которым пришлось повозиться. Из-за фиксированных костей таза возникли проблемы с ногами, стопы спасти так и не удалось :) С правильным скелетом всё было бы отлично.
Довёл до ума преобразование точек (именно в таком виде можно получать информацию о скелете от Kinect) в кости с неплохим определением их положения в пространстве. С этим была связана некоторая проблема, которую побороть так и не удалось, зато удалось сделать её незаметной. Кстати, если кто-то знает лучшее решение — огромная просьба просветить.
Мне кажется получилось весьма неплохо, к тому же есть куча возможностей для дополнительного сглаживания результата — это и настройки в самом SDK, и интерполяция точек и кватернионов. Первый скелет рисуется линиями, можно сказать что это правильно соединённые начальные данные от Kinect, здесь заметно некоторое подёргивание. Если джоинт не удалось рассчитать и он достроен автоматически — линия становится красной. Третий скелет — демонстрация построенных костей с изменёнными пропорциями. И, наконец, центральным персонажем является небезызвестный Dude из примеров c App Hub, с настройкой работы с которым пришлось повозиться. Из-за фиксированных костей таза возникли проблемы с ногами, стопы спасти так и не удалось :) С правильным скелетом всё было бы отлично.
Думаю вполне имеет право на жизнь, а если ещё реализовать совмещение анимаций и корректировку движений в сохранённой анимации — совсем красота будет. Такой вот бюджетный Motion Capture ;)
10 ноября 2011 г.
XNA и Windows Forms
Как-то выкладывал на форуме xnadev.ru ссылку на наш пример реализации работы XNA на форме. Чтобы эта ссылка совсем не затерялась:
В Visual Studio 2010 в этом примере появился глюк, не дающий изменять иконки и изображения на контролах стандартными средствами. Побороть всё как-то недосуг :)
- XNA на Windows Forms (XNA 4.0)
В Visual Studio 2010 в этом примере появился глюк, не дающий изменять иконки и изображения на контролах стандартными средствами. Побороть всё как-то недосуг :)
9 ноября 2011 г.
Обновление примера: второй заход
Оказалось что с примером всё не так радужно как того бы хотелось и у него со второй бетой потекла память из-за пересоздания текстур. Исправил и адаптировал:
- обновление примера (XNA 4.0, Kinect for Windows SDK BETA 2)
8 ноября 2011 г.
Kinect for Windows SDK BETA 2
Вышла вторая бета-версия SDK. Все старые проекты переносятся совершенно безболезненно, достаточно заменить библиотеку в References.
Заметно что навели порядок в структуре SDK, упростили работу с несколькими устройствами, добавили отслеживание их состояний — в целом программный интерфейс стал гораздо правильнее. Самое главное — скелет распознаётся быстрее и точнее, теперь эта задача распараллеливается по ядрам. Количество кадров в секунду от сенсора глубины и движка обработки скелетов стало выше — соответственно, увеличилась скорость реакции и можно добиться отсутствия задержек. Инициализация устройства также происходит быстрее.
P.S. Нет, светодиодом нам так и не дают поморгать :( Видимо эта важная фича будет только в коммерческой версии (ждём в начале 2012 года).
Update: обработку ошибок всё-таки придётся адаптировать под эту версию. И не только.
Заметно что навели порядок в структуре SDK, упростили работу с несколькими устройствами, добавили отслеживание их состояний — в целом программный интерфейс стал гораздо правильнее. Самое главное — скелет распознаётся быстрее и точнее, теперь эта задача распараллеливается по ядрам. Количество кадров в секунду от сенсора глубины и движка обработки скелетов стало выше — соответственно, увеличилась скорость реакции и можно добиться отсутствия задержек. Инициализация устройства также происходит быстрее.
P.S. Нет, светодиодом нам так и не дают поморгать :( Видимо эта важная фича будет только в коммерческой версии (ждём в начале 2012 года).
Update: обработку ошибок всё-таки придётся адаптировать под эту версию. И не только.
5 ноября 2011 г.
Обновление примера
Обновил пример к статье по основам взаимодействия Kinect и XNA, добавил получение кадров глубины с подсветкой людей и сделал небольшие изменения:
С получением от Kinect двухмерной информации разобрались, в следующий раз достанем из шкафа скелет :) Получилось частично избавиться от его искажений, размеры костей теперь фиксированы и могут быть настроены под модель.
- обновление примера (XNA 4.0, Kinect for Windows SDK BETA)
С получением от Kinect двухмерной информации разобрались, в следующий раз достанем из шкафа скелет :) Получилось частично избавиться от его искажений, размеры костей теперь фиксированы и могут быть настроены под модель.
30 октября 2011 г.
The Xnatrix: премьерный трейлер
Наконец-то сделал давно обещанное видео :) Естественно не обошлось без проблем — съёмка экрана в большом разрешении очень сильно убивает производительность обработки скелета (и это на четырёхъядерном i7-860...) и его совершенно перестаёшь контролировать. Промучившись несколько десятков неудачных дублей я всё-таки снизил разрешение и добился терпимой производительности. Поэтому заранее извиняюсь за не самую лучшую чёткость и небольшие проблемы с управлением из-за глюков скелета. Зачем мне понадобилось обрабатывать скелет? Смотрите сами :)
Update:
Не знаю даже чем это можно объяснить, но после последовательного изменения параметров (сглаживание движений скелета, вертикальная синхронизация и т.п. — с замером количества кадров и обновлений в секунду) и возвращения изначальных значений, количество кадров от расчитывалки скелета при записи видео перестало падать до 1–15 в секунду и стала возможна вполне нормальная запись в 1920 х 1080. Количество отрисовок при записи стабильно уменьшается в два раза до 30 кадров в секунду. Лишних процессов не было запущено ни тогда, ни сейчас.
21 октября 2011 г.
Kinect и XNA: первая кровь
Итак, наконец-то оторвавшись от Rage, продолжим :) Крови сегодня не будет (да, «все врут»), зато будет первый код: мы посмотрим как получать кадры от камеры и сенсора глубины, а также повертим «головой» Kinect вверх-вниз из кода на C# в нашем XNA-приложении. Соответственно, кроме описанных ранее требований, нам также понадобится XNA Game Studio (я использую 4.0, хотя она уже обновилась — разницы в коде для нас быть не должно).
Для самых нетерпеливых:
Для самых нетерпеливых:
- исходник плохого примера (XNA 4.0, Kinect for Windows SDK BETA)
- исходник хорошего примера (XNA 4.0, Kinect for Windows SDK BETA)
- обновление примера (XNA 4.0, Kinect for Windows SDK BETA), подробнее здесь
- обновление примера (XNA 4.0, Kinect for Windows SDK BETA 2), подробнее здесь
14 октября 2011 г.
11 октября 2011 г.
10 октября 2011 г.
Kinect и XNA: установка SDK BETA
Первое что нам понадобится для начала экспериментов — это сам Kinect. Его можно взять из набора Xbox 360 + Kinect или купив контроллер отдельно. Причём в первом случае понадобится докупить специальный адаптер, т.к. для подключения Kinect к новым версиям консоли используется модифицированный USB-разъём c дополнительными контактами для питания сервопривода, тогда как в комплект продаваемого отдельно контроллера этот адаптер включен изначально для совместимости со старыми консолями (и, с некоторых пор, с PC).
Также понадобится Kinect for Windows SDK BETA. Не подключайте контроллер до окончания установки SDK, если до этого были установлены другие драйверы — нужно их полностью удалить. И не забудьте закрыть Visual Studio.
8 октября 2011 г.
Kinect и XNA: дополнение к обзору
В своём обзоре я написал об ограниченности возможностей беты официального Kinect SDК для Windows, тем не менее я считаю что это лучший вариант для знакомства с технологией. Однако будет глупо не посмотреть возможности появившихся гораздо раньше альтернативных драйверов, зачастую раскрывающих интересные штуки:
7 октября 2011 г.
Kinect и XNA: обзор
Не удивительно что контроллер стал объектом пристального внимания энтузиастов, решивших использовать сенсор не по инструкциям в руководстве пользователя. Это привело к появлению большого числа различных «хаков», использующих возможности устройства на других платформах при помощи одного из наборов open-source драйверов. Оценив работу энтузиастов и перспективность этого направления, Microsoft решает добавить официальную поддержку работы Kinect с Windows 7 и 16 июня 2011 года выпускает бета-версию SDK, позволяющего .NET разработчикам использовать устройство в своих некоммерческих приложениях на С++/CLI, C# или Visual Basic .NET.







