Upload
codefest
View
214
Download
0
Embed Size (px)
Citation preview
Трехмерная графика не для игр
Дурдин Денис,2ГИС
Обо мне
Являюсь руководителем группы разработки ПО, тимлидом команды «3D Карта», которая разрабатывает графические движки для всей линейки продуктов 2ГИС.
Участвовал в разработке:
Графических движков
Систем обработки видео
Биллинговых систем
Решений в области защиты информации
Работал в компаниях:
2ГИС
Fortess
Softomate
Графический движок для мобильного приложения 2ГИС
2ГИС только для десктоп?
Требования и ограничения мобильных платформ:
Кроссплатформенный растеризатор
Отделение логики отображения от остального кода
Слабые CPU
Дефицит ОЗУ
Дефицит ПЗУ
Разные дисплеи и разрешения
Модуль «3D Карта»
3D Карта3D Карта
Carto API
Кроссплатформенные игровые движки
Что такое графический движок?
Геймдев: игровой движок
Схема движка id Tech 4 (Doom 3):
Часть 2. Устройство движка
Подсистема «движок рендеринга»
За основу взята шейдерная модель OpenGL 2.0 ES:
Подсистема «движок рендеринга»
Vertex ShaderPixel Shader
Софтварный рендеринг:
Очередь рендеринга
Арифметика на ARM-процессоре
tmMath
Сцена: пространственно организованный набор данных
Сцена: требования к организации данных
Эффективность отрисовки данных
Оперативная память
Дисковая память
Эффективность управления объектами
Подготовка сцены к рендерингу
Техника рендеринга полупрозрачных 3D объектов
id Tech: BSP-деревья
Компиляция сцены Рендеринг
id Tech: BSP-деревья
Проблемы:
1. Сшитие деревьев в real-time
2. Потребление памяти
3. Размер баз
Техника рендеринга полупрозрачных 3D объектов
Подход:
1. Все 3D объекты разбиваются на выпуклые полигоны на этапе подготовки данных
2. Определение перекрытий на экранной сетке
3. Сортировка в плоской проекции
Верхний уровень: система Условных Знаков
Гибкая система управления внешним видом объектов:
Задает геометрическое преобразование
Задает цвета, ширину линий, технику рендера.
Анимирует объект
Верхний уровень: масштаб карты
Обеспечивает большую информативность на больших экранах
Не перегружает карту деталями на маленьких экранах с высоким DPI.
Верхний уровень: масштаб карты
iPad
iPhone
Что еще предоставляет API движка?
Взаимодействия с пользователем
Гео-поиск
Управления динамическими объектами карты
Определение пересечений и расстояний между объектами
Конструктивная геометрия (CSG)
Как мы решали что должно быть и чего не должно быть в движке? Данные, которые нужны для выполнения
задачи.
Существующий код, который используется для реализации функциональности.
Ответственность команды за код.
Графический движок - это фреймворк