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, смотреть результат.

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 с неизбежной потерей качества.

Используем:
  • два RenderTarget-а для отрисовки кадров для левого и правого глаза, по одной из сторон в два раза меньше экрана 
  • реализацию направленной камеры с двумя матрицами вида

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


Подключаемся к телевизору по HDMI, включаем 3D и надеваем очки. Для демонстрации эти же кадры в режиме вычитания:


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

26 ноября 2011 г.

Who Wants to Be a Dude?

Что-то давно я ничего не писал и не показывал, мне стыдно, надо исправляться :)

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

Мне кажется получилось весьма неплохо, к тому же есть куча возможностей для дополнительного сглаживания результата — это и настройки в самом SDK, и интерполяция точек и кватернионов. Первый скелет рисуется линиями,  можно сказать что это правильно соединённые начальные данные от Kinect, здесь заметно некоторое подёргивание. Если джоинт не удалось рассчитать и он достроен автоматически — линия становится красной. Третий скелет — демонстрация построенных костей с изменёнными пропорциями. И, наконец, центральным персонажем является небезызвестный Dude из примеров c App Hub, с настройкой работы с которым пришлось повозиться. Из-за фиксированных костей таза возникли проблемы с ногами, стопы спасти так и не удалось :) С правильным скелетом всё было бы отлично.




Думаю вполне имеет право на жизнь, а если ещё реализовать совмещение анимаций и корректировку движений в сохранённой анимации — совсем красота будет. Такой вот бюджетный Motion Capture ;)

10 ноября 2011 г.

XNA и Windows Forms

Как-то выкладывал на форуме xnadev.ru ссылку на наш пример реализации работы XNA на форме. Чтобы эта ссылка совсем не затерялась:

В Visual Studio 2010 в этом примере появился глюк, не дающий изменять иконки и изображения на контролах стандартными средствами. Побороть всё как-то недосуг :)

9 ноября 2011 г.

Обновление примера: второй заход

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