View on GitHub

videoCreator

Генерация видео в 3D-формате (стереопара) для визуализации технологических процессов

Презентация

Презентация была подготовлена специально для публичного выступления. Здесь написан краткий конспект, которому следует команда. Презентацию и ролик из неё можно найти здесь. Официальный репозиторий проекта - Video Creator.

Сокращения

  1. GUI - graphical user interface, графический интерфейс пользователя
  2. API - Application Programming Interface, программный интерфейс приложения / интерфейс прикладного программирования, контракт, который предоставляет программа
  3. ПО - программное обеспечение
  4. JSON - JavaScript Object Notation, простой формат обмена данными, удобный для чтения и написания как человеком, так и компьютером
  5. 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 является симуляцией реального мира. Максимально быстрый движок (еще наз. “движок в реальном времени”). Никакой трассировки лучей нет.

Принцип рендеринга:

  1. Процессор вычисляет положение всех вершин объектов в сцене. И впоследствии передает эту информацию видеокарте, чтобы она производила отображение граней гораздо быстрее.
  2. Далее уже сама видеокарта генерирует непосредственно 2Д изображение, которое мы видим в окне 3д вида (вид от камеры). Хотя и кажется, что эти объекты трехмерные, на самом деле они двухмерные.
  3. Затем, с помощью глубины, так называемого Z-буфера, видеокарта определяет, какие вершины ближе, какие дальше. И если какая-то вершина находится позади объектов, которые уже были отрисованы, рисовать его она не станет и будет двигаться дальше.
  4. Для теней (которые тоже не трассируются) создается текстура, которая впоследствии рендеринга накладывается и на объекты, и на само окружение в сцене.

Замечание

И в Cycles, и в EEVEE можно получить один и тот же результат! То есть в EEVEE можно настроить достаточно реалистичные сцены, а в Cycles добиться достаточно быстрых рендеров без потери качества изображения.

Workbench

Встроенный рендер Workbench (новый) был разработан для таких задач, как макет сцены, моделирование и лепка. Он отвечает за работу режимов отображения Wireframe и Solid. Является “движком в реальном времени”.