codefest 2013. Дурдин Д. — Трехмерная графика не для игр
TRANSCRIPT
![Page 1: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/1.jpg)
Трехмерная графика не для игр
Дурдин Денис,2ГИС
![Page 2: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/2.jpg)
Обо мне
Являюсь руководителем группы разработки ПО, тимлидом команды «3D Карта», которая разрабатывает графические движки для всей линейки продуктов 2ГИС.
Участвовал в разработке:
Графических движков
Систем обработки видео
Биллинговых систем
Решений в области защиты информации
Работал в компаниях:
2ГИС
Fortess
Softomate
![Page 3: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/3.jpg)
Графический движок для мобильного приложения 2ГИС
![Page 4: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/4.jpg)
2ГИС только для десктоп?
![Page 5: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/5.jpg)
Требования и ограничения мобильных платформ:
Кроссплатформенный растеризатор
Отделение логики отображения от остального кода
Слабые CPU
Дефицит ОЗУ
Дефицит ПЗУ
Разные дисплеи и разрешения
![Page 6: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/6.jpg)
Модуль «3D Карта»
3D Карта3D Карта
Carto API
![Page 7: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/7.jpg)
Кроссплатформенные игровые движки
![Page 8: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/8.jpg)
Что такое графический движок?
![Page 9: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/9.jpg)
Геймдев: игровой движок
Схема движка id Tech 4 (Doom 3):
![Page 10: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/10.jpg)
Часть 2. Устройство движка
![Page 11: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/11.jpg)
Подсистема «движок рендеринга»
За основу взята шейдерная модель OpenGL 2.0 ES:
![Page 12: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/12.jpg)
Подсистема «движок рендеринга»
Vertex ShaderPixel Shader
Софтварный рендеринг:
Очередь рендеринга
![Page 13: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/13.jpg)
Арифметика на ARM-процессоре
tmMath
![Page 14: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/14.jpg)
Сцена: пространственно организованный набор данных
![Page 15: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/15.jpg)
Сцена: требования к организации данных
Эффективность отрисовки данных
Оперативная память
Дисковая память
Эффективность управления объектами
Подготовка сцены к рендерингу
![Page 16: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/16.jpg)
Техника рендеринга полупрозрачных 3D объектов
![Page 17: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/17.jpg)
id Tech: BSP-деревья
Компиляция сцены Рендеринг
![Page 18: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/18.jpg)
id Tech: BSP-деревья
Проблемы:
1. Сшитие деревьев в real-time
2. Потребление памяти
3. Размер баз
![Page 19: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/19.jpg)
Техника рендеринга полупрозрачных 3D объектов
Подход:
1. Все 3D объекты разбиваются на выпуклые полигоны на этапе подготовки данных
2. Определение перекрытий на экранной сетке
3. Сортировка в плоской проекции
![Page 20: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/20.jpg)
Верхний уровень: система Условных Знаков
Гибкая система управления внешним видом объектов:
Задает геометрическое преобразование
Задает цвета, ширину линий, технику рендера.
Анимирует объект
![Page 21: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/21.jpg)
Верхний уровень: масштаб карты
Обеспечивает большую информативность на больших экранах
Не перегружает карту деталями на маленьких экранах с высоким DPI.
![Page 22: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/22.jpg)
Верхний уровень: масштаб карты
iPad
iPhone
![Page 23: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/23.jpg)
Что еще предоставляет API движка?
Взаимодействия с пользователем
Гео-поиск
Управления динамическими объектами карты
Определение пересечений и расстояний между объектами
Конструктивная геометрия (CSG)
![Page 24: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/24.jpg)
Как мы решали что должно быть и чего не должно быть в движке? Данные, которые нужны для выполнения
задачи.
Существующий код, который используется для реализации функциональности.
Ответственность команды за код.
![Page 25: CodeFest 2013. Дурдин Д. — Трехмерная графика не для игр](https://reader035.vdocuments.site/reader035/viewer/2022062708/55878921d8b42a47318b4646/html5/thumbnails/25.jpg)
Графический движок - это фреймворк