3D Battle CGEvent 2018 (Москва). Разбор работ

1-2 декабря 2018-го года в Москве прошёл CGEVENT. Мероприятие прошло как всегда бурно и атмосферно. Около 2000 участников конференции посетило более сотни докладов. Всё было круто, впрочем как всегда. Для тех, кто хочет получить эксклюзивную информацию в области компьютерной графики, лучше места не придумать.

По традиции на CGEVENT проводятся различные конкурсы и конечно же 3D Battle. В ходе этого соревнования участники выполняют на скорость задание в одном из 3D-пакетов на выбор. В этом году это были 3DS MAX, Maya, Blender и новичок этого сезона Cinema4D.

Поскольку в предыдущие годы задания на битву были больше ориентированы на моделирование, то в этом году мы предложили участникам создать короткую моушн-графику. Собственно вот референс:

Референс был заранее опубликован на сайте конференции, так что все желающие могли приготовиться дома, тем более, что правилами разрешается пользоваться записями и даже советами окружающих. Некоторые компании участников поочерёдно участвовали в соревновании и подсказывали друг другу параметры и давали советы. Было весело.

Этот обзор — взгляд со стороны организатора и члена жюри. Традиционное обоснование вынесенного решения. В общем, читайте, кому интересно вспомнить как проходило мероприятие.

Для тех, кому «много букв», скажу сразу: победил Игорь Серенков (Maya) со временем 12:06.

День -1. Подготовка

CGEVENT проходит в стенах Holiday Inn Moscow Sokolniki. Это удобная гостиница с большим количеством конференц-залов. Развёртывание ивента начинается в пятницу вечером и продолжается до победного. Мы прибыли на место чтобы проверить технику, волонтёры расставляли столы, распаковывали ящики с техникой. В этом году технику для баттла предоставила компания Lenovo. Это были хорошие, мощные графические станции, с ксеонами на борту и 32 Гб оперативной памяти. Особую зависть вызывали мониторы — тонкие, изящные, с прекрасной цветопередачей и углами обзора. В общем, отличные машины. Вот только один небольшой нюанс: на тачках стоит немецкий Windows и клавиатуры, собственно, тоже немецкие.

Для тех, кто думает, что немецкая клавиатура не слишком большая проблема, учтите:
1) На клавиатуре нет русского языка совсем (на стадии регистрации участника это важно)
2) На клавиатуре отличается расположение клавиш (в частности весёлые умлауты на месте квадратных скобок).
3) И наконец самый вынос мозга — клавиша Z находится примерно там, где на привычной клавиатуре находится Y. Так что нажатие Ctrl + Z не работает!

Не работающий Ctrl + Z стал последней каплей. Мы представили как весело было бы провести конкурс именно с такими клавами, проржались и приняли решение закупить чего-нибудь родного и привычного. Утром всё было как надо.

День 1. Притаившиеся драконы

День начался с того, что я застал на стенде баттла человека, который что-то загружал в приготовленные и проверенные тачки. Исполненный праведного гнева я направился к потенциальному нарушителю правил соревнования. Оказалось, что это официальный представитель Lenovo — Сергей, и он накатывает на немецкие виндовсы русский языковой пакет, чтобы винда стала как родная. Один из компов увидев неограниченный интернет тут же ломанулся за обновлениями windows и долго на немецком просил его не трогать. Безжалостным движением Сергей прервал идиллию обновляющейся тачки, так что к времени официального начала баттла всё было готово.

С точки зрения событий первый день был достаточно ровным, компьютеров желающим хватало. Всё работало как часы, программы не падали. Делали, правда задание в среднем довольно долго. Мало кто справлялся быстрее 20 минут.

За первый день в баттле приняло участие 15 человек. Большинство увидели задание уже непосредственно на стенде, поэтому отложили участие на второй день. В результате в воскресенье мы приняли ещё 25 участников. Это было уже хардкорно, тачки были заняты до последнего, мы крепко подустали.

Задание на Баттл

Напомню основную концепцию заданий для баттла. Они выбираются исходя из следующих соображений:

  • Задание представляет собой законченную работу
  • Оно не должно занимать у среднего участника слишком много времени (в среднем предполагается 10-15 минут, верхний лимит 30-40 минут, иначе не все желающие смогут принять участие)
  • Желательно, чтобы существовало несколько путей решения задачи

От концепции до конечного референса задание претерпело немало изменений. В первоначальном варианте ступеней было десять, потом их стало восемь. Но уже ближе к дате публикации я решил, что даже 8 ступеней — неоправданно много. Ведь сделать такое количество вручную просто муторно, но никак не характеризует мастерство участника. Поэтому в финале ступеней стало шесть. Удачный компромисс между рутиной и представительностью эффекта.

Кстати, из-за уменьшения числа ступеней в референсе немного съехали тайминги и оказалось, что в одном из кадров геометрия ступени всё-таки пересекается. Забавный факт для действительно внимательных 🙂

К заданию прилагалось и техническое задание, в котором особо отмечались моменты на которые будет обращать внимание жюри:

1) В анимации чётко должны быть разделены этапы: вылет проступей, вылет подступенков, каскадный переворот проступей, выход камеры в верхнюю точку.
Причина такого уточнения в том, чтобы упредить появление «казённой» анимации. Ею часто грешат технические специалисты, когда в анимации нет ни акцентов ни пауз.

2) Картинка на плитках должна читаться в финальном положении после разворота
Собственно текстура в задании обеспечивает переход от построения объекта к фирменной символике. Это конечно же потребовало от участников навыков текстурирования. Как показал опыт эта задача многим давалась тяжело. А для некоторых и вовсе имела драматические последствия.

3) У анимации камеры в верхней точке есть небольшой overshoot (камера налетает на объект, и тут же мягко отходит чуть назад).
Это требование появилось из-за того, что моушн-дизайн часто является результатом технической анимации, в котором не остаётся возможностей для анимационных приёмов. Точнее мы не можем требовать от участников, чтобы они тщательно прорабатывали анимацию отдельных ступеней — это было бы слишком долго и сложно, поэтому единственное, что можно проанимировать по классике — это камера.

Немного статистики

В баттле приняло участие 40 человек. Закончили задание 32 человека. Не заканчивали задание по разным причинам: кто-то не мог справиться с текстурированием, синьщики часто сталкивались с тем, что в R20 поменялся функционал и они просто не могли настроить эффекты, поскольку не знали как это делается в новой версии. Среди не закончивших было трое синьщиков, по двое максистов и бленеровцев, и один майщик. Учитывая общую статистику это абсолютно нормальный результат.
Медианное время выполнения составило: 30:41
Среднее время не приводим, поскольку оно не имеет практического смысла. Практический смысл медианного времени прост: все кто сделали задание быстрее чем 30:41 были выше среднего, это хороший результат.
Невооружённым взглядом видно, что время выполнения вдвое больше того, что обычно бывает на баттле. Это лишь подтверждает тот факт, что задание было достаточно сложным.

Пакет Количество участников
3ds Max 7
Maya 4
Blender 11
Cinema4D 18
ВСЕГО 40

Таблица времени выполнения (без штрафов)

N Имя участника Время Пакет
1 Александр Гл****** 00:05:43 Cinema 4D
2 Дмитрий Ро*** 00:06:30 Cinema 4D
3 Ярослав Со*** 00:06:40 Cinema 4D
4 Дмитрий Дм****** 00:07:45 3DS MAX
5 Илья Ко***** 00:09:04 Blender
6 Игорь Серенков 00:12:06 Maya (Победитель)
7 Эдуард Ур****** 00:13:00 3DS MAX
8 Кирилл Св******* 00:17:12 Blender
9 Сергей Ме******** 00:17:51 Blender
10 Александр Те******* 00:18:27 Cinema4D
11 Константин Ти******* 00:20:24 Cinema4D
12 Степан Ко***** 00:22:25 Blender
13 Александр Ев******* 00:23:42 Cinema4D
14 Алексей Пе******** 00:28:20 Cinema4D
15 Иван Шу*** 00:29:37 Cinema4D
16 Виктор Ус********* 00:29:52 Cinema4D
17 Денис Ко****** 00:30:41 3DS MAX
18 Геннадий По***** 00:31:55 Blender
19 Андрей Ли******** 00:32:55 Blender
20 Алексей Ев****** 00:33:43 Blender
21 Егор Ом******** 00:33:59 Cinema4D
22 Владислав Ан**** 00:35:27 Cinema4D
23 Евгений Кл***** 00:37:05 3DS MAX
24 Артём Ад****** 00:40:37 3DS MAX
25 Елена Ве****** 00:41:28 Maya
26 Иван Уш**** 00:44:23 Cinema4D
27 Ефим Пи***** 00:44:33 Cinema4D
28 Георгий Хо******* 00:45:10 Maya
29 Татьяна Бр********* 00:48:33 Cinema4D
30 Александр Во**** 00:56:41 Cinema4D
31 Екатерина Бл******** 01:02:52 Blender
32 Максим Та*** 01:05:12 Blender

Выбор победителя

Самая сложная стадия — это всегда выбор победителя. Честно говоря, глядя на таблицы данных мы были уверены, что победит Cinema 4D. Поэтому мы стали двигаться по стандартному алгоритму: начиная с самых быстрых мы ищем «идеальную работу», т.е. исполнение, которое полностью удовлетворяет заданию. Без оговорок, без прищуриваний, без поблажек.

1. Первый кандидат Александр с феноменальным временем 5:43.
Как видно на картинке Александр забыл про переворот проступей на 180 градусов.

2. Второй кандидат Дмитрий с временем 6:30.
Хорошая работа, но первые два этапа ролика происходят одновременно, хотя в ТЗ четко написано, что «раз — вылетают проступи, два — подступенки…» Вдобавок камера начинает своё движение слишком рано. Понятно, что всё это можно исправить, но соревнование есть соревнование.

3. Третий кандидат Ярослав с временем 6:40.
Собственно два замечания: 1) объекты не лежат на плоскости, а висят друг над другом и 2) текстура на ступенях сжата по вертикали, из-за чего логотип деформирован.

4. Четвёртый кандидат Дмитрий с временем 7:45.
Очень хорошая работа, добавившая нам седых волос. Всё сделано хорошо, в работе только один косяк: текстура на ступенях сжата по вертикали.
Тут стоит пояснить, что исходное изображение с логотипом, которое мы предложили участникам было квадратным. Соответственно участникам нужно было решить эту проблему путём корректного проецирования. Возможно некоторые просто не обратили на это внимание, поскольку торопились (уверяю вас, в ситуации острого цейтнота люди часто допускают такие ошибки).
Наши сомнения были столь велики, что мы пошли искать кого-нибудь из продюсеров (благо с ними на CGEVENT перебоев не бывает), чтобы послушать точку зрения непредвзятого наблюдателя. Как только мы показали ролик, наш визави немедленно воскликнул: а логотип-то почему сплющен? Мы даже не успели ему объяснить наши сомнения, он сам всё сказал. Не может в качественной работе быть такого промаха, это классика.

5. Пятый кандидат Илья с временем 9:04.
Работа в целом содержит все требуемые аспекты, но стадия переворота проступей не является каскадной. Мы специально покадрово отсматривали и обнаружили, что переворот ступеней начинается у всех одновременно, а вот окончание поворотов разнесено по времени. Понятно, что это можно поправить двигая стартовые ключи, но в соревновании работа должна быть законченной.

6. И, наконец, победитель Игорь Серенков со временем 12:06.
Идеальная работа, без замечаний. Всё четко и аккуратно. Открыв его сцену мы с удивлением обнаружили, что всё сделано простой ключевой анимацией. Супер!

Выводы по процессу

Это соревнование заставило нас задуматься о более четкой формулировке правила выбора победителя. Победитель тот, кто сделал работу, удовлетворяющую требованиям, быстрее других. Если какие-то требования не выполнены — работа не может претендовать на победу. Такой критерий позволяет выделить и поощрить более чем одного участника (организатору придётся выделить больше призов :), но оно того стоит). Так что в будущем мы будем придерживаться именно такой стратегии. В этом году мы не стали явно выделять, но в пределах 20 минут было ещё как минимум 5 работ, которые могли бороться за победу.

А что с ошибками?

Обычно я драконил участников своими комментариями по поводу допущенных ошибок моделирования или тактике. В этот раз похоже задание было настолько непростым, что даже методы решения вычленить по сценам было затруднительно.

Основные подходы, которые демонстрировали участники:
1) Прямое моделирование геометрии отдельных элементов и прямая же последовательная анимация
2) Моделирование финальной лестницы и её последовательный разбор, т.е. анимация задом наперёд
3) Автоматизация первых двух пунктов с помощью скриптов (почему-то это было популярно среди блендеровцев)
4) Процедурная анимация (в основном в Cinema 4D)

Фактически, подводя итоги по работам можно сказать, что создание процедурной анимации подобной референсу с сохранением возможности настройки и коррекции эффектов требует поддержки соответствующих средств со стороны 3D-пакета. Так что неудивительно, что было так много участников в Cinema4D и среднее время у них было меньше. Напротив, майщики игнорировали возможности MASH. Блендеровцы вслух сокрушались, что нельзя доставлять аддоны (тот же Animation Nodes). Пользователи 3ds Max хотели больше моделинга в задании.

Однако же, отметим, что победитель оказался просто аккуратным специалистом, который чётко выполнил задание способом, доступным во всех 3D-пакетах. Просто ключевая анимация, просто прямые руки. Спасибо, Игорь! 🙂

Александр Миловский, 3D Master
Организатор и член жюри 3D Battle
Куратор секции Opensource CGEvent

образец сертификата Autodesk студии 3D Master
Сертификат Autodesk выдается
по окончании авторизованных
курсов Autodesk. Подробнее…

Искусственный
интеллект