В моем XNA есть гоблины! (Нет, не такие…)
Сегодня мы собираемся взглянуть на что-то, что не использует передовых технологий и бета-версий, а требует лишь загрузки сборки для начала работы, – мог ли я пройти мимо такого описания?
… использует граф сцены для поддержки управления трехмерными сценами и их рендерингом, смешивая реальные и виртуальные образы. Отслеживание позиции и ориентации объекта с шестью степенями свободы достигается с использованием пакета позиционирования камеры, основанным на маркерах ALVAR или ARTag с помощью DirectShow или PGRFly (для камер Point Grey), и гибридных трекеров InterSense. Кроме дисплеев настольных и наладонных компьютеров Goblin XNA также поддерживает дисплей-очки Vuzix iWear VR920 в моноскопическом и стереоскопическом режимах, вместе с их отслеживанием ориентации с тремя степенями свободы. Физика обеспечивается с помощью библиотеки Newton Game Dynamics, а сетевое взаимодействие реализуется через библиотеку Lidgren. Goblin XNA также включает двумерную систему графического интерфейса пользователя, позволяя создавать классические двумерные интерактивные компоненты.
…
Goblin XNA: платформа для трехмерной расширенной и виртуальной реальности
Введение
GoblinXNA** – платформа для изучения трехмерных пользовательских интерфейсов, включая мобильную расширенную реальность и виртуальную реальность, с акцентом на играх. Она написана на языке C# и базируется на платформе Microsoft XNA. Goblin XNA наследует некоторые цели более раннего проекта Goblin, но со сдвигом акцента на ядро функциональности трехмерного пользовательского интерфейса, усиливающего существующую функциональность движков трехмерных игр DirectX и окружения разработки. В настоящее время платформа поддерживает отслеживание позиционирования и ориентации с шестью степенями свободы с помощью трекинга камеры по маркерам через механизмы ARTag с OpenCV или DirectShow и гибридных трекеров InterSense. Физика поддерживается с помощью BulletX и Newton Game Dynamics. Сетевое взаимодействие осуществляется через библиотеку Lidgren. Goblin XNA также включает двумерную систему графического интерфейса пользователя, позволяя создавать классические двумерные интерактивные компоненты.
Гонки в расширенной реальности с GoblinXNA ( Goblin XNA AR Racing Game)
Goblin XNA AR Racing Game предоставляет режим расширенной реальности для набора XNA Racing Game Starter Kit. Это первая игра, созданная с применением Goblin XNA и демонстрирующая использование трекинг по опорным точкам, виджеты размерности 2,5 и 3 и смешанные приемы трехмерного пользовательского интерфейса. The Goblin XNA AR Racing Game использует оптически отслеживаемый игровой полигон, контроллер и метки. Вместо гонок по предварительно заданному виртуальному треку, водитель должен пройти последовательность контрольных точек, избегая препятствий. Контрольные точки и препятствия прикрепляются к физическим меткам, которые могут сдвигаться во время игры для трансформации курса.
Пользователь ведет виртуальный автомобиль с помощью ручного контроллера по размеченному физическому полигону.
Контрольные точки и препятствия могут быть привязаны к физическим меткам и передвигаться в течение игры.
Goblin XNA Domino Knockdown
...
Пользователь стреляет шариками по площадке с костяшками домино, стараясь сбить все доминошки с доски.
...
Конструирование трехмерных пользовательских интерфейсов
Здания накладываются на размеченное изображение плана города с помощью контроллера, управляемого двумя руками, созданного из малогабаритного пульта, с нанесенными маркерами трекера.
...
Отслеживаемый палец выбирает из выступающего меню зданий.
...
Goblin XNA (Codeplex)
Goblin XNA – платформа для изучения трехмерных пользовательских интерфейсов, включающая мобильную расширенную реальность и виртуальную реальность, с акцентом на игровых приложениях. Она написана на C# и основана на Microsoft XNA Game Studio 3.1.
Последний выпуск (бета) версии 3.5.1 вышел 1 апреля 2011. Подробности о нововведениях собраны в файле ReleaseNotes.txt дистрибутива.
Мы выпустим версию 4.0 в середине или конце 2011 года, и она будет поддерживать XNA Game Studio 4.0.
Сейчас мы распространяем по закрытым каналам бета-версию для Goblin XNA 4.0 (от 14 марта 2011). Если вы хотите попробовать ее, обращайтесь по адресу ohan@cs.columbia.edu.
Перед версией 4.0 мы выпустим окончательный вариант v3.6, использующий XNA 3.1, и этот выпуск будет содержать более «приятно выглядящие» руководства, улучшенные схемы затенения, простой AI (стаи, преследования, определение кратчайшего пути и т. д.) и поддержку библиотеки компьютерного зрения OpenCV 2.1.
...
Вот видео некоторых интересных компьютерных игр, разработанных с помощью Goblin XNA:
https://www.youtube.com/watch?v=IT7ao3izQQI
https://www.youtube.com/watch?v=ym1xaRrfgTk
https://www.youtube.com/watch?v=6AKgH4On65A
https://www.youtube.com/watch?v=c_LrVqI6StY
Загрузка полна и включает установочную и эксплуатационную документацию, исходники для библиотеки и ряд руководств.
Обязательность сборки означает, что имеется ряд сторонних продуктов, которые необходимо получить, откомпилировать и скопировать. Эта тема раскрыта во включенном двухстраничном руководстве по установке (а также в проектной документации).
Документация
Пожалуйста, ознакомьтесь с руководством по установке, руководством пользователя и спецификациями API ниже. Эти документы можно найти в каталоге doc дистрибутива.
Руководство по установке (v3.5): Installation Guide.pdf
Руководство пользователя (v3.5.1): User Manual.pdf
Документация по API (v3.5.1): GoblinXNA.chm.zip
Учебники
Калибровка камеры (простой метод)
Калибровка параметров камеры 2 (более сложный)
Учебник по расширенной реальности использующий GoblinXNA и ALVAR
Создание собственных маркеров с помощью ALVAR
Создание собственного плана маркеров (разрабатывается)
Говоря об учебниках, вот снимок 15, включенных в проект:
Код учебников прекрасно документирован. Вот пример из учебника 8:
protected override void Draw(GameTime gameTime)
{
// If ground marker array is detected
if (groundMarkerNode.MarkerFound)
{
// If the toolbar marker array is detected, then overlay the box model on top
// of the toolbar marker array; otherwise, overlay the box model on top of
// the ground marker array
if (toolbarMarkerNode.MarkerFound)
{
// The box model is overlaid on the ground marker array, so in order to
// make the box model appear overlaid on the toolbar marker array, we need
// to offset the ground marker array's transformation. Thus, we multiply
// the toolbar marker array's transformation with the inverse of the ground marker
// array's transformation, which becomes T*G(inv)*G = T*I = T as a result,
// where T is the transformation of the toolbar marker array, G is the
// transformation of the ground marker array, and I is the identity matrix.
// The Vector3(4, 4, 4) is a shift translation to make the box overlaid right
// on top of the toolbar marker. The top-left corner of the left marker of the
// toolbar marker array is defined as (0, 0, 0), so in order to make the box model
// appear right on top of the left marker of the toolbar marker array, we shift by
// half of each dimension of the 8x8x8 box model. The approach used here requires that
// the ground marker array remains visible at all times.
Vector3 shiftVector = Vector3.Zero;
#if USE_ARTAG
shiftVector = new Vector3(4, 4, 4);
#else
shiftVector = new Vector3(4, -4, 4);
#endif
Matrix mat = Matrix.CreateTranslation(shiftVector) *
toolbarMarkerNode.WorldTransformation *
Matrix.Invert(groundMarkerNode.WorldTransformation);
// Modify the transformation in the physics engine
((NewtonPhysics)scene.PhysicsEngine).SetTransform(boxNode.Physics, mat);
}
else
((NewtonPhysics)scene.PhysicsEngine).SetTransform(boxNode.Physics,
Matrix.CreateTranslation(Vector3.One * 4));
}
// TODO: Add your drawing code here
base.Draw(gameTime);
}
Как выглядит реальное решение для библиотеки Goblin XNA?
Итак, если вы до сих пор не использовали самые передовые возможности Visual Studio, XNA и др. версий, но находитесь на острие в этой области и интересуетесь виртуальной и расширенной реальностями, отслеживанием камеры по маркерам, двух- и трехмерными пользовательскими интерфейсами, физическими движками это проект следует копнуть поглубже.
Несколько ссылок, которые могут быть интересны: