Архив за Декабрь, 2007

Рельефное освещение от точечного источника

30.12.2007 Антон Волков

Несмотря на приближающиеся праздники и чёткую установку Карповича “забыть о работе и отдохнуть”, не смог выкинуть из головы идею сделать быструю отрисовку рельефа не просто при определённом угле падения света, а от точечного источника. Задача осложняется тем, что из точечного источника свет исходит во всех направлениях, а не в одном, как в случае направленного. Не считать же освещение для каждого пикселя в отдельности?! Появилась идея модифицировать карту нормалей, как бы “выпучивая” её в том месте, где находится источник света. Основная засада в том, что попиксельно её рассчитать вроде бы не сложно, но это будет совершенно непотребно по скорости. Пришлось придумать (действуя наполовину методом тыка) способ модификации, который бы делался пакетно стандартными фильтрами и методами наложения Flash.

Применимость этой техники в движке безусловно есть, т.к. мы делаем ставку на однократные расчёты освещения с последующим прижиганием — т.е. свет как бы рисуется на поверхности поверх текстуры. Ну а с выходом Hydra в Flash Player 10 можно будет перенести эти расчёты на шейдеры со всеми вытекающими.

Рельефное освещение от точечного источника
Размер: 1.6Мб

Управление:

  • Мышь — перемещение источника света
  • Клик — изменение цвета освещения
  • Колёсико или +/- — изменить бликовость материала
  • Ctrl + колёсико или +/- — изменить размер светового пятна
  • Пробел — следующая текстура

Надеюсь, что меня наконец-то отпустит и это будет последний пост в этом году :)
С наступающим Новым годом!

Собираем логи

27.12.2007 Квиринг Алексей

Закончили систему сбора и просмотра логов. Проблема анализа логов была очень актуальной, так как у нас несколько типов серверов — игровой, ресурсный, генератор.Тем более на этапе тестирования сообщения от клиентов также потребуют обработки.

Архитектура

Сервер логгирования основан на OSGI платформе. Получение логов по RMI с использованием авторизации JAAS (для Log4j был написан appender). Сохранение логов с помощью Hibernate в базу данных PostgreSQL. Для просмотра логов были написаны плагины к Eclipse. Основные возможности — фильтрация логов по различным критериям и сохранение произвольного количества фильтров для последующего изучения.

Пользуясь случаем, поздравляем Волкова с днем рождения. Превед!

Параллакс-эффект

27.12.2007 Антон Волков

Если кроме карты нормалей использовать карту высот, то можно добиться так называемого параллакс-эффекта, когда текстура изменяется в зависимости от угла зрения. Не думаю, что эту технику стоит внедрять в 3D-движок по крайней мере до выхода Flash Player 10. Там появится возможность писать скрипты-обработчики текстур на продвигаемом Adobe языке Hydra, которые, как обещают, в дальнейшем будут использовать аппаратное ускорение. Что-то наподобие пиксельных шейдеров.

Параллакс-эффект
Размер: 1Мб

Управление:

  • Мышь — перемещение
  • Клик — изменение цвета освещения
  • Колёсико или +/- — изменить бликовость материала
  • Пробел — следующая текстура

Карты нормалей для освещения спрайтов

26.12.2007 Владимир Бабушкин

Карты нормалей можно использовать для освещения спрайтовых объектов внутри игры. Их, конечно, придётся рендерить или рисовать руками, но эффект стоит того.

Карты нормалей для спрайтов

Управление:

  • Мышь — перемещение источника света
  • Колёсико или стрелки вверх/вниз — изменить бликовость материала

Рельеф с помощью карт нормалей

26.12.2007 Антон Волков

Разобрался с построением рельефного освещения при помощи карт нормалей. Суть метода в том, что, используя специально сформированное изображение, можно передать движку информацию об изменении кривизны поверхности. При этом геометрия поверхности не детализируется (например, сбоку эти искажения видно не будет), но специальные механизмы дают возможность сымитировать рельеф.

Пока система в 3D-движок не внедрена, т.к. ещё идёт работа над текстурированием, но уже можно потестировать качество/скорость отрисовки.

Карты нормалей
Размер: 1.6Мб

Управление:

  • Мышь — перемещение источника света
  • Клик — изменение цвета освещения
  • Колёсико — изменить бликовость материала
  • Пробел — следующая текстура

Динамическое BSP-дерево

19.12.2007 Антон Волков

Завершён один из самых сложных этапов в разработке движка 5.0 — динамическое перестроение BSP-дерева. Напомню, что BSP позволяет нам хранить все соответствия “кто за кем” между полигонами. Благодаря этому мы смогли сколь угодно сложно рассекать объекты, и при этом получать отличную производительность при сортировке (при изменениях камеры или объектов на сцене).

Для сравнения мы взяли модель с ландшафтом и домиком из демки движка 3.0.

Динамическое BSP-дерево

Управление:

  • Стрелки — перемещение
  • Таскать мышью — смотреть вокруг
  • Колёсико или +/- — изменить перспективу
  • Пробел — вкл/выкл анимацию
  • Enter — изменить BSP-приоритет
  • Q — изменить качество
  • B — визуализация BSP-дерева

Результаты интеграции

14.12.2007 Квиринг Алексей

Закончена большая часть работы по интеграции: готовы редакторы 3D мира, пользователи бегают и общаются, участки мира догружаются и выгружаются, сделана система воздействия на предметы.

Дальнейшая интеграция будет после разработки 3D-движка 5.0.

Полноразмерные скриншоты:

Результаты интеграции Результаты интеграции Результаты интеграции

Работа по интеграции сервера с клиентом идет полным ходом

06.12.2007 Иван Зыков

Секретный и малопонятный скриншот действа:

screen_admin.gif

Первые результаты 3D-движка 5.0

05.12.2007 Антон Волков

Для тех, кто не хочет вникать в технические тонкости, сообщаю, что работа над 3D-движком 5.0 двигается нормально. Не так быстро как хотелось бы, т.к. нам пришлось полностью переосмыслить архитектуру. Однако теперь уже видно, что это было сделано не зря. Многие участки ещё требуют серьёзной доработки и оптимизации, но уже можно оценить:

Первая демка Alternativa3D 5

Управление:

  • Стрелки — перемещение
  • Таскать мышью — смотреть вокруг
  • Колёсико — изменить перспективу

На данный момент сделано:

  • система сигналов (теперь в случае простоя процессор вообще не нагружен),
  • перспективная коррекция (изометрия тоже осталась, не потеряв оптимизации),
  • мульти-камерность (можно смотреть на сцену с разных ракурсов одновременно),
  • корректная обрезка невидимых граней,
  • BSP-сортировка (сколь угодно сложные пересечённые формы теперь сортируются очень быстро).