Презентация
Презентация была подготовлена специально для публичного выступления. Здесь написан краткий конспект, которому следует команда. Презентацию и ролик из неё можно найти здесь. Официальный репозиторий проекта - Video Creator.
Сокращения
- GUI - graphical user interface, графический интерфейс пользователя
- API - Application Programming Interface, программный интерфейс приложения / интерфейс прикладного программирования, контракт, который предоставляет программа
- ПО - программное обеспечение
- JSON - JavaScript Object Notation, простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером
- MIT (лицензия) - Massachusetts Institute of Technology, Массачу́сетский технологи́ческий институ́т
1 Вступительный слайд - Ирэна
Здесь есть техническая информация о презентации, а также ссылка на её конспект.
2 Заголовок - Ирэна
Наш проект называется “Генерация видео в 3D формате для визуализации технологических процессов”.
3 Идея - Ирэна
Год за годом растут объёмы данных, и чем их больше, тем сложнее их читать. Чтобы повысить эффективность работы с ними, их часто визуализируют.
Но проблема в том, что на текущий момент нет “мостика” между математическими моделями и их визуализацией. Конечно, можно визуализировать “вручную”, но это затратный процесс. Нам нужно было создать штуку, которая решит эту проблему и позволит создать 3D видео автоматически на основе данных.
Это будет полезно любому, кто желает визуализировать что-либо в 3D (физические процессы, рельефы, статистические данные, графики, изображения и далее).
4 Цели - Ирэна
Итак, обдумав эту задачу, мы установили себе цели. А именно: готовое ПО и его тестирование, удобный формат входных данных, а также технический долг. Нам предстояло самостоятельно придумать, каким образом будут храниться данные в файле для визуализации.
5 Решение - Анатолий
Для решения задачи мы используем Blender - бесплатный 3D редактор. В нем есть возможность создания аддона на языке программирования Python. У нас он сделан так, что любой человек может легко им воспользоваться при помощи графического интерфейса. Наш аддон позволяет автоматически создать 3D видео с объектами, информация о которых передается в специальном файле. Давайте, рассмотрим основную рабочую область Blender.
6 Пояснение решения - Анатолий
На заднем фоне вы видите окно 3D вида, в нем можно просмотреть анимацию перед рендером. Сама же панель с аддоном представлена на слайде справа. Сверху меню MAIN SETTINGS - это область, с которой пользователь точно будет взаимодействовать. Для генерации видео достаточно выгрузить специальный файл в JSON-формате и нажать 2 (пару) кнопки. Все, что ниже кнопки render animation - это дополнительные настройки. Таким образом, при всем удобстве использования аддона сохраняется большая функциональность.
7 Логическая схема проекта - Данила (Анатолий)
Схематично работа с аддоном выглядит так: данные для визуализации преобразуются в специальный файл вручную или при помощи генератора, и мы генерируем видео, взаимодействуя с графическим движком поминимуму.
8 Формат данных JSON - Данила (Ирэна)
Мы используем JSON для файла с информацией об анимации. У JSON есть ряд преимуществ. Во-первых, он читаем человеком. Во-вторых, для работы с ним, есть много библиотек. Это упрощает и ускоряет создание такого файла.
9 Генератор данных - Данила (Ирэна)
Вручную создавать этот файл слишком долго. Поэтому нужны генераторы. Здесь, например, из картинок генератор создает тот самый файл, а из него в Blender получается видео объемной тепловой карты.
10 Заказчик - Анатолий
Перед тем как подвести итоги, отметим, что летом мы съездили на предприятие заказчика на экскурсию. Они занимаются производством специального оборудования для 3D визуализации, и им очень не хватает контента в 3D.
11 Итоги - Данила (Максим)
В итоге проект удался, это было круто и интересно. Технически мы зависим от Blender - отсюда и ограничения. Главной проблемой для нас было отсутствие документации по API Blender. Важно отметить, что проект - это эксперимент - мы пробовали создать универсальный подход для визуализации.
12 Лого - Максим
1
И да, у нас есть свое лого.
2
В проекте ПО написано под Blender на Python. Он опубликован на GitHub под лицензией MIT. Мы работали, используя все возможности систем контроля версий, каждая итерация кода проходила тесты.
13 Технический долг - Максим
А это наш технический долг - чтобы результатами проекта можно было пользоваться, их нужно оформить. Github избавил нас от рисков потери кода и улучшил коммуникацию. Также мы написали подробную документацию.
14 Резюме - Максим
Итак, мы смогли создать совокупность технических решений, которая осуществляет промежуточный переход от данных к видео на основе этих данных. То есть, мы реализовали идею и показали, что такое действительно возможно, вот что важно.
15 Команда - Максим
представление участников
В нашей команде всего 4 участника, во главе с руководителем - это я. Нам было комфортно работать, делегируя задачи. У каждого была своя область ответственности. Мы еженедельно собирались онлайн, работали над проектом и общались с заказчиком.
16 Ссылка - Максим
То, что мы сделали претендует на уникальность, а все, кто создает уникальный продукт, вносят положительный вклад в прогресс. Ведь отчасти именно такие проекты, написанные под специфичные нужды, и толкают технологии вперед, демонстрируя миру новые идеи. Этим мы и занимались в проекте - мы двигали прогресс.
По ссылке вы можете найти наш репозиторий. Благодарим за внимание и надеемся, что было здорово!
Служебные слайды
Далее следуют служебные слайды, которые планируется использовать как дополнительные.
API
API - это специальный интерфейс для общения приложений друг с другом. Формат входных данных, который мы разработали, и является API, соединяющим данные и их визуальное представление.
Движки
Cycles - реализм
Cycles является трассировщиком лучей. Максимально физически корректный движок. Самый долгий, но самый фотореалистичный рендер.
Принцип рендеринга:
Cycles трассирует путь, который проходит луч. Только делает это в обратном направлении относительно того, как это происходит в реальном мире: лучи в реальном мире попадают на объекты со всех сторон, как-то с ними взаимодействуют, отражаются и уже впоследствии, когда лучи после отражения от объекта попадут к нам в глаза или объектив фотокамеры, мы видим результат. В Cycles происходит все с точностью до наоборот - все лучи исходят из камеры, а не из мира, просто потому что это проще с точки зрения вычисления.
EEVEE - быстрота
EEVEE является симуляцией реального мира. Максимально быстрый движок (еще наз. “движок в реальном времени”). Никакой трассировки лучей нет.
Принцип рендеринга:
- Процессор вычисляет положение всех вершин объектов в сцене. И впоследствии передает эту информацию видеокарте, чтобы она производила отображение граней гораздо быстрее.
- Далее уже сама видеокарта генерирует непосредственно 2Д изображение, которое мы видим в окне 3д вида (вид от камеры). Хотя и кажется, что эти объекты трехмерные, на самом деле они двухмерные.
- Затем, с помощью глубины, так называемого Z-буфера, видеокарта определяет, какие вершины ближе, какие дальше. И если какая-то вершина находится позади объектов, которые уже были отрисованы, рисовать его она не станет и будет двигаться дальше.
- Для теней (которые тоже не трассируются) создается текстура, которая впоследствии рендеринга накладывается и на объекты, и на само окружение в сцене.
Замечание
И в Cycles, и в EEVEE можно получить один и тот же результат! То есть в EEVEE можно настроить достаточно реалистичные сцены, а в Cycles добиться достаточно быстрых рендеров без потери качества изображения.
Workbench
Встроенный рендер Workbench (новый) был разработан для таких задач, как макет сцены, моделирование и лепка. Он отвечает за работу режимов отображения Wireframe и Solid. Является “движком в реальном времени”.