Обновление dlib (r23)

Состоялось обновление набора библиотек dlib.

  • В модуле dlib.math.vector реализованы функция isAlmostZero, шаблоны для целочисленных векторов (Vector2i, Vector2u). vectorDecreaseToZero теперь поддерживает векторы произвольного размера;
  • В dlib.math.utils добавлены функции sign и swap;
  • В dlib.math.matrix3x3 реализовано покомпонентное сложение и вычитание матриц;
  • В dlib.math.matrix4x4 добавлены функции shadowMatrix для построения теневых матриц (проекции вершин на плоскость) и matrixFromAxisAngle для построения матриц вращения из представления “ось-угол”;
  • Для изображений в частотном диапазоне (dlib.image.compleximage) реализованы обратная свертка (deconvolve) и деление (divide).

Изменения доступны в ревизии r23 и выше.

http://code.google.com/p/dlib/

Фигуры Лиссажу для анимации оружия

Оружие в шутерах от первого лица не должно быть прибито к камере гвоздями – оно раскачивается в такт ходьбе, да и при стоянии на месте медленно ходит туда-сюда из-за постоянного движения рук. Конечно, довольно трудно сымитировать этот эффект в полном соответствии с реальностью, но можно обойтись дешевым и убедительным фейком. Оружие можно двигать вдоль кривой Лиссажу: x = sin(t), y = cos(2t). В результате получается траектория, изображенная на рисунке справа.

Vector2f lissajousCurve(float t)
{
    return Vector2f(sin(t), cos(2 * t));
}

//...

if (playerWalking)
    t += 10.0f * delta;
else
    t += 1.0f * delta;
    
if (t > 2 * PI)
    t = 0.0f;
    
Vector2f p = lissajousCurve(t) / 10.0f;
weapon.localPos = Vector3f(p.x, p.y, 0.0f);

Меню в Atrium

Состоялось довольно значительное обновление кодовой базы Atrium. В частности, было реализовано главное меню и меню паузы. Кроме того, репозиторий был синхронизирован с последней ревизией dlib.

Доступны свежие сборки:
Для Windows (1,74 МБ)
Для Linux (2,76 МБ).

Исходники проекта доступны на GitHub.

Сохранение PNG в dlib

В dlib теперь поддерживается сохранение изображений в формат PNG (Portable Network Graphics) – ранее было доступно только чтение файлов этого формата. За сохранение отвечает функция savePNG в модуле dlib.image.io.png.
Изменения доступны в ревизии r22 и выше.

http://code.google.com/p/dlib/

Обновление Atrium

Свершилось! Результат моей работы за последние месяцы – основа будущего шутера от первого лица с физическими головоломками – доступен на GitHub. Добавлена заготовка игрового уровня, а также действующий гравитационный излучатель, при помощи которого игрок может передвигать динамические объекты (из-за ограничений в нынешнем физическом движке, таковые объекты представлены только сферами, но в будущем не исключена поддержка других типов тел). Исходники собираются DMD 2.060 и выше. Под Linux рекомендуется использовать LDC.

Сборка для Windows: atrium-testbuild3-win32.zip (1.18 МБ).