Рейтинг@Mail.ru
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Сейчас на сайте
Гостей: 6

Пользователей: 1
BigSerpent

Всего пользователей: 1,270
Новый пользователь: valentin_13

Основы работы в Ramen

Про композитинг вообще

Компо́зитинг (от англ. compósiting — компоновка) — создание целостного изображения путём совмещения двух и более слоёв отснятого на кино- или видеоплёнку материала, а также CGI (Генерированные Компьютерные Объекты) и анимации. Широко применяется в современной компьютерной технологии для создания визуальных эффектов в кино, на телевизионном производстве, в рекламе, когда необходимо идеально симулировать реальную действительность. Примерами композитинга можно назвать такие широко известные фильмы, как «Терминатор-2», «Титаник», «Матрица», «Властелин Колец», рекламные кино-ТВ ролики «Coca-Cola», «Toyota», «BMW», и др. (источник)

Проще говоря, это технология склеивания и фильтрации движущихся картинок.

Композеры можно разделить на две группы:

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

В мире достаточно хороших, дорогих и не очень, проприетарных решений. Навскидку:

  • Apple Shake;
  • The Foundry Nuke;
  • Autodesk Combution;
  • Eyeon Fusion;
  • Adobe After Effects.

У пользователей свободного ПО с выбором похуже. Из существующих решений можно отметить следующие:

  • Blender: его встроенный композер с виду хорош, но стоит лишь начать работать с ним, как сразу понимаешь, в какое болото ты попал. Это и очень медленная работа, и постоянная необходимость создавать узлы Viewer (и кто это только придумал?), и ужасные средства для анимации композиции: узел Time и Translate, который не умеет двигать картинку на полпиксела. Кроме того, обрезается картинка, залезшая за пределы области рендеринга. Я уж не говорю об отсутствии человеческих средств для ротоскопинга (векторные маски). Да и ещё много других подводных камней.
  • Synfig Studio: хоть эта программа делалась вовсе не для композитинга, а для векторной анимации, но с некоторыми задачами композитинга она справляется на «ура». Поскольку главное в ней — векторная анимация, с ротоскопингом вообще нет никаких проблем. Кроме того, движок визуализации Synfig очень неплохо справляется с большими разрешениями. Основные недостатки — скромный набор эффектов и неспособность работать с дополнительными каналами (каналы глубины, скорости и прочие хитрые вещи). Synfig организует элементы в виде дерева, так что при желании программу можно использовать как своеобразную замену Adobe After Effects.
  • Cinelerra: работает по слоям, есть более-менее функциональный ротоскопинг, неплохие фильтры. Но о том, чтобы делать что-то сложное, даже думать страшно.
  • GAP: Gimp Animation Package тоже может это делать, но разрушающе, поскольку после применения фильтра изменяется исходное изображение. Кроме того, он сам по себе несколько неудобен.

И тут откуда ни возьмись — Ramen.

Как и почему

Спасителем выступил Эстебан Товальяри (Esteban Tovagliari) — человек, имеющий более чем десятилетний опыт работы композером в рекламе и компьютерной графике. Увлёкшись программированием ещё в 15 лет, в своей профессиональной деятельности он позднее разработал ряд сложных инструментов для обработки изображений, которые здорово ему помогли. Однако эти инструменты имели интерфейс командной строки и были неудобны: приходилось экспортировать изображения, обрабатывать, импортировать обратно, проверять и повторять этот процесс снова и снова. И тогда Эстебан начал разрабатывать Ramen.

Приблизительно год назад Эстебан раздал пару копий своей программы друзьям и сослуживцам, а потом рассудил, что сделав исходный код открытым, он сделает свой вклад в open source. Особенно учитывая намерение Apple похоронить Shake и уход Adobe и Autodesk в сторону от решения насущных задач.

Установка

Сразу отмечу, что пользователи самой популярной операционной системы пока могут не беспокоиться: сборка для Windows возможна, и первые шаги для этого сделаны, но у Эстебана нет времени на то, чтобы устанавливать третью систему и поддерживать сборку для неё. Сейчас вы можете скачать готовые сборки для Linux и Mac. Как раз к выпуску статьи Эстебан выложил новые предварительные сборки 0.5, так что свежесть гарантирована.

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

Исходный код можно получить из репозитория SVN на SourceForge:

svn checkout https://ramenhdr.svn.sourceforge.net/svnroot/ramenhdr/trunk ramenhdr

Далее внимательно читаем список зависимостей и способ сборки в файле INSTALL.txt. На тот момент, когда писался этот обзор, в файле не было написано, что при сборке с GCC 4.4 вам потребуется свежая библиотека boost версии 1.42.

Если вы пользуетесь Ubuntu, вам повезло, потому что есть PPA с ночными сборками.

Кроме того, для запуска вам потребуется нормальная (не Intel) и относительно новая видеокарта. На моем GForce 8200 всё работает замечательно.

Первое знакомство

Если вы никогда не имели дело с программами такого рода, вероятно, вам сначала захочется узнать общий принцип составления композиции. Он примерно таков:

  1. Сначала создаются один или несколько источников изображений, таких как узлы Color, Color Bars, Gradient, Image (поддерживает форматы tif, sgi, tga, png, jpg, hdr, exr, dpx и cin), Mandelbort (фрактал), Noise (полезен для подмешивания шума) или Quick Shape (векторная маска для ротоскопинга).
  2. Затем создаётся некоторое количество фильтрующих и смешивающих узлов.
  3. После этого создаётся нужное количество выходных узлов Image (поддерживает те же форматы что и входной узел Image).
  4. Наконец, входы и выходы узлов соединяются проводами.

Сразу после старта Ramen выглядит примерно так:

0000_tn.png

Большую часть экрана занимает окно просмотра композиции. Внизу располагаются два окна собранные во вкладки: окно просмотра дерева композиции (активно) и окно редактирования кривых анимации. В правой части располагается окно параметров выделенного узла.

Узлы добавляются через меню Create в верхней части и связываются между собой перетаскиванием курсора от входа/выхода одного узла до выхода/входа другого узла. Для разрыва связи достаточно щёлкнуть по проводу между узлами с зажатой клавишей Control. Выход узла обозначается жёлтым квадратиком, основной вход — зеленым, вторичный вход — красным, matte — синим:

Активный узел, отображаемый в редакторе параметров, отмечен красной рамкой. Узел отображаемый в окне просмотра — синей. Выделенные узлы имеют жёлтый фон.

Для активации узла щёлкните по нему два раза.

По умолчанию в окне просмотра отображается активный узел. Для того чтоб просматривать один узел, а редактировать другой, нужно переключить режим Active на Context в окне просмотра.

После активации режима Context щёлкните два раза с зажатой клавишей Control на интересующий вас узел. В окне просмотра появится изображение с выхода этого узла.

Кроме того, вам пригодятся следующие горячие клавиши:

  • , and . — приблизить и отдалить соответственно; объект увеличения зависит от того, где вы в последний раз щёлкнули мышью.
  • Backspace — удалить выделенные узлы или точки на кривой анимации
  • Alt + Left Mouse Button — панорамирование

Просмотрите меню, в котором также указаны горячие клавиши.

Первая проба

Идея ролика

Идея проста. В начале мы видим брутальную linux консоль, после чего она заливается цветными кляксами, ну и в конце — логотип сайта linuxgraphics.ru.

Исходные материалы

Консоль загружающейся системы была записана при помощи VirtualBox и xvidcap. На экране примечательный дистрибутив SliTaz.

Кляксы сделаны при помощи туши, пипетки, бумаги, сканера и растрового редактора GIMP.

Экранная демонстрация загрузки

Приводим расположение элементов к более привычному вам виду и начинаем собирать картинку:

0001_tn.png

Ramen в данный момент не может показать, где находятся края кадра, поэтому используем старый как мир трюк. Берём яркий задник (узел color) нужного размера, и кладем поверх него свою картинку. Сразу становится ясно, куда и насколько её растягивать.

0002_tn.png

Кляксы

Добавляем заранее заготовленные кляксы. Ramen определяет их как последовательность кадров. Это не то, что нам нужно, однако, в свойствах узла image_in есть полезное поле Slip и функция Lock. Они позволяют указать нужный кадр последовательности и выключить смену кадров.

0003_tn.png

Далее делаем так: инвертируем картинку узлом invert, при помощи узла setch заворачиваем канал Red в канал Alpha (в инспекторе на картинке ниже), затем перемножаем получившуюся картинку с желаемым цветом при помощи узла layer. При этом нужно будет для узла color указать размеры картинки так, чтоб в неё полностью умещалась наша кляксомаска.

0004_tn.png

Теперь добавляем узел move2d для того, чтобы можно было подкрутить положение клякс на картинке, и кидаем эти кляксы поверх видеоконсоли.

Чтобы было красивее, немножечко изменяем положение узлов:

0005_tn.png

Повторяем операцию несколько раз и получаем ураган цвета:

0006_tn.png

На этом этапе время рендеринга уже велико, поэтому трудно переоценить возможность понизить разрешение изображения (переключатель Full/Half/Third/Quarter на панели с изображением). В режиме Quarter композиция отрисовывается почти в реальном времени.

Далее делаем переход всей композиции в белый цвет. Этот переход хорош ещё тем, что можно зажать кнопку Ignore на узле layer и тем самым отбросить то, что мы только что нагородили с кляксами.

0007_tn.png

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

0008_tn.png

Анимируем параметр Offset узла correct. Узел layer_115 тут перемножает исходную маску с вновь созданной. Узел setch перенастраиваем для того, чтобы направлять канал Red во все каналы, а не дублировать в узле correct параметры на все каналы.

И получаем вполне неплохой результат.

blot_test.gif

Теперь нужно применить изменение ко всем кляксам с правильным таймингом. Тайминг лучше продумать заранее и на бумаге, поскольку Ramen пока не обладает достойными средствами ре-тайминга.

После применения этого приёма дерево подрастает:

0009_tn.png

После удвоения клякс оно уже перестаёт быть похожим на дерево:

0010_tn.png

Убедившись, что эта часть композиции работает как надо, отрендерив и посмотрев, выключаем узел layer, чтобы дальше работать на белом фоне.

0011_tn.png

Логотип

Исходник логотипа был в SVG, так что он был предварительно разбит на отдельные элементы в Inkscape, а для удобства сборки заодно экспортирован целиком.

Вставляем логотип. Поскольку Inkscape экспортирует формат PNG без умножения цвета на непрозрачность (premultiply), нам придётся сделать это в Ramen.

0012_tn.png

Раскидываем элементы по своим местам и получаем еще одну лесенку:

0013_tn.png

Остается только сделать анимацию, используя параметр Scale узлов move2d.

Для большей эффектности в момент перехода добавим размывание клякс:

0014_tn.png

Готовый ролик

И вот он — результат.

Test composition for an article от Alexandre Prokoudine на Vimeo.

Исходный файл в Ogg Theora можно скачать отсюда.

Исходники композиции

Исходники композиции можно загрузить отсюда.

Ramen использует абсолютные пути. Чтобы исправить эту проблему, я положил в архив маленький скрипт pathfix.py. Перейдите в директорию с распакованной композицией и запустите команду

$ python pathfix.py

После этого в Ramen можно открыть compos.rmn.

Итоги

Плюсы:

  • Есть вменяемые инструменты для ротоскопирования! УРА!
  • Удобный интерфейс.
  • Встроенный предпросмотр анимации (flipbook)
  • Высокая скорость работы, даже несмотря на заявление автора о том, что код не оптимизирован.
  • Полностью рабочая (не так как в Blender) система понижения разрешения предварительного просмотра.
  • Почти все параметры узлов могут быть анимированы.
  • Базовая поддержка OFX, что означает возможность использования плагинов для Nuke, Toxik, Fusion и т.д.; в готовых сборках временно отключено из-за недоделанности, но при самостоятельной сборке можно включить обратно;

Минусы:

  • Есть утечки оперативной памяти, приходится перезапускать программу для ее высвобождения (в данный момент Эстебан решает эту проблему).
  • Отсутствуют элементы управления непосредственно на изображении (но обещают скоро исправить).
  • Пока слабые возможности ретайминга (нет возможности масштабировать/передвигать несколько кривых разных узлов одновременно).
  • Отсутствие инструментов трекинга и мачмувинга.
  • Отсутствие палитры узлов, доставать их из меню не совсем удобно.

Замечательный старт. Быстрое развитие. Но пока еще не готовый продукт для внедрения в проекты с дедлайном. Тем не менее, Ramen сейчас ближе всех к взрослым композерам. Ещё пару умных голов, и как знать — может быть через год большим дяденькам придётся потесниться.

Планы на будущее

Перечисленные выше пункты относятся к редакции 128 дерева разработки. С каждым новым коммитом Ramen становится все лучше и лучше, поэтому стоит немного рассказать о том, чего ждать от проекта.

В ближайших планах Эстебана исправить наиболее досадные ошибки, сделать программу более надёжной и удобной, а также доработать поддержку OFX.

Что касается более отдалённых планов, Эстебан определяет их как реализацию функционала, сравнимого с функционалом Shake. Это означает motion tracking, хорошее ротоскопирование, векторный узел paint (как в Shake), возможность исполнения сценариев и различные оптимизации.

А ещё?

Эстебан ведёт блог, в котором рассказывает о новостях разработки (этот блог можно читать через аггрегатор Graphics Planet). По адресу https://sourceforge.net/apps/phpbb/ramenhdr/ в ближайшее время будет открыт пользовательский форум. Буквально на днях появилась тематическая группа на Vimeo. Вот, кстати, пример использования хрома-кея в Ramen:

Ramen Test от Eibriel Inv на Vimeo.

В этом году проект будет подавать заявку на участие в Google Summer of Code 2010. Список возможных проектов приведён здесь.


Автор: Ильдар "AkhIL" Ахметгалеев
Лицензия: cc-by 3.0

Комментарии
#1 | svm 03/03/2010 10:38
Ну, что же - это очень похоже на профессиональную работу.
Очень даже понравился интерфейс и то что можно сделать в ней.Smile
#2 | svm 03/03/2010 10:47
Еще бы что то подобное давно пора было сделать для нелинейного видеомонтажа.
А пока то что есть для монтажа - это или для "домохозяек", или стоит как самолет.
#3 | Avator 03/03/2010 11:34
Одна маленькая поправка:
официальный сайт Synfig Studio http://synfig.org/ а не
http://synfig.com/
#4 | prokoudine 03/03/2010 13:19
@svm: мне самому интересно, родится у Lumiera когда-нибудь что-то человеческое, или они так и будут спецификации писать Smile

Avator: Точно Smile Сейчас исправлю, спасибо.
#5 | Nameless 04/03/2010 02:42
blender... его встроенный композер с виду хорош, но стоит лишь начать работать с ним, как сразу понимаешь, в какое болото ты попал....
и автор как бэ не замечает что Blender в общем то программа не направленная на видеомонтаж или постообработку... я вам наверное открою СТРАУШНУЮ ТАЙНУ.. но blender это программа прежде всего ориентированнная на задачи 3d анимации.. и для этой цели его композер более чем достаточен.. но конечноо если вы со своими кривыми руками пытаетесь редактировать видео в программах для этого не предназначенных.. то да... Blender УГ... как впрочем и автор статьи...
#6 | prokoudine 04/03/2010 03:11
@Nameless: А комментатор не обратил внимание на то, что разбираемый простой пример использования — не о редактировании видео? А что на невозможность анимировать каждое свойство в Blender до старта ветки 2.5 ругались все кто только можно, многоуважаемый комментатор знает? Smile
#7 | hovado789 04/03/2010 12:52
я думаю что это большой прорыв в области видео монтажа в линуксе, огромная благодарность автору Wink
#8 | Wolf_the_Grey 04/03/2010 22:07
Прекрасная статья, спасибо за хорошую новость!
Интерфейс настолько здорово напоминает взрослые композеры, что ох. Буду пробовать. Очень хочется, чтобы автор снабдил его и всеми «ускорялками» работы типа часто используемых нод на хоткеях, быстрого подключения нод, Нюковский и Гудиньский функционал клавиши Tab...
#9 | xintrea 23/03/2010 16:19
Только я вижу в ролике на 26-й и 32-й секунде неслабые артефакты вокруг пистолета?
#10 | prokoudine 23/03/2010 20:35
@xintrea: окстись, кеингу в Ramen месяца два от силы Smile
#11 | Wolf_the_Grey 25/03/2010 06:50
Кеинг в Ramen, конечно, молод... Но он работает, особенно если воспользоваться преимуществами нодового редактора и, как все нормальные композитинг-артисты, корректировать альфа-канал не внутри ноды Key (хотя вспомнить тот же Primatte Smile), а снаружи, пользуясь всей мощью композера, а не ограниченными пятью рульками.
Кстати, когда спрашивают, в чем отличие нодового композера от табличного, люди опытные обычно в первую очередь рассказывают про зубодробительный многопроходный кеинг, для которого в том же Афтере понадобится куча прекомпозов, а в Nuke, Fusion, shake, и теперь еще в Ramen — десяток-другой узлов, которые все на виду и объединены логичной структурой связей.
Хотя, когда я пробовал кеинг, были странности, но о них надо говорить с картинками в руках, попробую воспроизвести проблему.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Отлично! Отлично! 100% [1 Голос]
Очень хорошо Очень хорошо 0% [Нет голосов]
Хорошо Хорошо 0% [Нет голосов]
Удовлетворительно Удовлетворительно 0% [Нет голосов]
Плохо Плохо 0% [Нет голосов]