«Big Buck Bunny» изнутри. Введение. Структура проекта.

Введение



У Blender-сообщества есть одно прекрасное преимущество: мы имеем возможность изучать исходные рабочие файлы к законченным короткометражным мультфильмам «Elephants Dream» («Мечты слонов», 2007 г.) и «Big Buck Bunny» («Большой Зай», 2008 г.), созданных в рамках «The Orange Open Movie Project» и «The Peach Open Movie Project» соотвественно. Эти файлы выложены в свободном доступе в интернете, и каждый желающий может их скачать. 

http://www.elephantsdream.org/

 

 

http://www.bigbuckbunny.org/

 При этом, как известно, Blender-сообщество разделилось на две категории людей: на тех, кому больше нравится мультфильм «Elephants Dream» и тех, кто фанатеет от «Big Buck Bunny». Первые (и их большинство), как правило, являются сторонниками реализма и фотореализма, монстроподобных и человекоподобных персонажей. А вторые больше тяготеют к мультяшной стилизации и упрощению. 

Так или иначе, но как бы ни было обидно первой категории людей, а изучать мы будем файлы к мультфильму «Big Buck Bunny». Во-первых, потому что они меньше по объёму (суммарно 1 гигабайт против 7 гигабайт в «Elephants Dream»), в связи с чем их проще скачать из интернета. Во-вторых, они не отягощены огромного размера текстурами и быстро загружаются в память компьютера. И, в-третьих, поскольку это был уже второй проект у Blender Foundation, то он основывается на большем опыте и использует возможности более современных версий Blender. 

Цель данной статьи — не просто рассмотреть «внутренности» этого мультфильма, но также попытаться понять ход мыслей профессионалов и разобраться, почему они всё сделали так, а не иначе. В связи с этим предупреждаю, что предлагаемый вам материал больше ориентирован не на начинающих пользователей Blender, а на «продолжающих», и поэтому в них не будут описываться очевидные вещи вроде того, как пользоваться Blender и где искать тот или иной инструмент. Для этого придётся обратиться либо к документации, либо к соответствующей литературе. Например, прочитать книгу группы авторов «Essensial Blender» или, если дела совсем уж плохи, можно даже попытаться осилить букварь по Blender для «чайников» под недвусмысленным названием «Blender Basics», который наши доблестные отечественные пользователи совместными усилиями перевели на русский язык. 

В общем, всё в ваших руках, а мы постараемся, чтобы ни один кролик за время изучения файлов «Big Buck Bunny» не пострадал. :) 



Часть 1. Структура проекта

 

Всякий раз, когда мы начинаем что-то создавать в Blender, мы сохраняем свои гениальные потуги в файл. Если наша работа осложнена присутствием текстур, либо ещё каких-то дополнительных файлов, то мы создаём на компьютере отдельную папку и сбрасываем в неё рабочий .blend-файл со всем, что к нему прилагается. Как правило, одной папки нам хватает надолго, но только до тех пор, пока мы не задумаем сделать что-то очень большое и сложное — например, мультфильм уровня «Elephants Dream» или «Big Buck Bunny». И как только нам приходит в голову эта сумасшедшая мысль, то сразу же становится понятно, что одним только файлом с расширением .blend мы не отделаемся. Кроме того, что самих .blend-файлов будет, как минимум, десяток, не считая промежуточных версий, появятся ещё файлы с текстурами (что само собой разумеется), со сценарием, скетчами, референсами, раскадровками, аниматиками, тестовыми рендерами, финальными рендерами, python-скриптами и звуком. Конечно же, никому и в голову не придёт держать всё это в одной большой куче. И чтобы всё это добро как следует распределить, придётся сначала составить структуру проекта, а потом создать для него дерево папок. 


В отличие от программ, вроде Autodesk Maya или Autodesk XSI, Blender не создаёт автоматически дерево папок для проекта, и поэтому мы вольны сами решать, как это дерево должно выглядеть. Увы, изучая файлы к «Big Buck Bunny», мы не сможем увидеть в них структуру рабочего проекта — мы увидим только структуру законченного проекта. В ней уже нет папок для сценария, раскадровок и рендеров. И чтобы хоть как-то возместить этот пробел, прежде чем двигаться дальше, обратимся сперва к опыту бывалых людей — а это будет Роланд Хесс (Roland Hess). 

В своей книге «Animating with Blender. How to Create Short Animations from Start to Finish» («Анимация при помощи Blender. Как создавать короткометражные мультфильмы от начала до конца») он предлагает следующую структуру проекта: 

Разберём, что здесь для чего нужно. 

export – папка для видеофайлов с финальной или тестовой анимацией. 

models – модели для всего, что появится в мультфильме — от персонажей до реквизита. Если и того, и другого много, то Роланд рекомендует использовать дополнительные подпапки для этих категорий. Позже мы увидим, как это реализовано в файлах к «Big Buck Bunny». 

renders – финальные и тестовые рендеры. Причём, для каждого шота создаётся отдельная подпапка. 

scenes – .blend-файлы с анимацией. Для каждого шота — отдельный файл. 

script – папка для сценария. Особенно полезна тем, кто любит, чтобы он был. :) 

sets – .blend-файлы, содержащие в себе все модели, составляющие место действия, то есть комната со всем, что в ней есть, луг или поляна в лесу с травой и деревьями. В таких файлах, как правило, нет никаких своих объектов — в них содержатся только ссылки на библиотеки с моделями. 

sound – не буду переводить, догадайтесь сами. :) 

storyboards – раскадровка. Опять же для тех, кто считает очень важным её создание. 

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

tests – тестовые .blend-файлы для проведения различных экспериментов и испробования новых или старых фич в Blender. 

textures – не хотелось бы вас разочаровывать, но это папка для текстур. :) 

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

А теперь посмотрим, как выглядит дерево законченного проекта в «Big Buck Bunny»: 

Здесь всё немного не так, как предлагает Роланд. Первое, что бросается в глаза, — отсутствует напрочь папка models. Вместо неё есть отдельные папки с моделями, которые лежат прямо в корне проекта. Это chars – персонажи, envs – окружение, mattes – задние фоны (как рисованные, так и .blend-файлы, создающие атмосферу с холмами), props – реквизит и sets – сборочные файлы для мест действий.
Следующее, что бросается в глаза, — в каждой из этих папок есть подпапка textures, куда сбрасываются текстуры конкретного типа. То есть те, что относятся к персонажам, — будут в папке с персонажем; те, что приготовлены для реквизита — в папке с реквизитом и т. д. В общем-то говоря, подход удобный, но всё же для рабочего проекта не мешало бы скинуть папки chars, envs, mattes и props в отдельную папку models, как рекомендует Роланд, иначе наше корневое дерево будет слишком длинным. 

Кстати, хотелось бы ещё заметить об одном тонком различии между envs и props, потому что если взглянуть в .blend-файлы в этих папках, то на первый взгляд может показаться, что в них находятся модели одного типа, и не совсем ясно, чем они различаются. Так вот, envs и props (окружение и реквизит) — это с точки зрения моделлера одно и то же. И если бы мы создавали не анимацию, а большую модель для рендеринга одной картинки, то не стали бы их разделять. Различие между ними возникает тогда, когда с моделями начинает взаимодействовать персонаж, либо эти модели каким-то образом анимируются. Тогда всё, что остаётся неподвижным в кадре — это окружение, а всё, что анимируется и берётся в руки персонажем — реквизит. 

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

Верхний столбец — envs, окружение, а нижний — props, реквизит:

Папка scripts в «Big Buck Bunny» и папка script в структуре по версии Роланда Хесса — это также не одно и то же. Если у Роланда в ней хранится файл со сценарием, то в «Big Buck Bunny» — скрипты на языке Python. Вот так. В английском языке для этого используется одно и то же слово-синоним, и сценарии к фильмам часто называют скриптами. Ну, а вы, если не будете использовать скрипты на Python или не станете писать сценарий к мультфильму, то можете у себя эту папку так и оставить с таким названием. А если и то, и другое — да, тогда придётся привлекать на помощь фантазию и изобретать различающиеся слова. :) 

Также в папке chars есть одна загадочная подпапка pyconstraints. Это тоже скрипты на Python, только предназначенные для управления персонажами с помощью констрейнов. Честно говоря, трудно предположить, для чего они понадобились, но, учитывая, что создание сложного мультфильма профессионального качества редко обходится без привлечения программистов для решения всяких нетривиальных задач, то, по-видимому, это один из таких случаев, когда без программистов какую-то проблему решить не удалась. 

Последнее, что нам осталось разобрать, — это папка scenes. Здесь хранятся файлы с анимацией. Мультфильм разбит на сцены — их 13 штук, и для каждой сцены выделена отдельная папка, а в каждой папке для каждого шота выделен отдельный файл. 

Шот (по англ. shot) — это отрезок видеозаписи от включения камеры до выключения. Если камера непрерывно что-то показывает 2 сек, то это будет двухсекундный шот, а если три часа, тогда трёхчасовой шот. Правда, в мультфильмах и кино редко бывают шоты длиной больше пяти минут. По-нашему они называются кадром (так же как и кадр для единичного снимка), но в компьютерную графику просочился термин «шот» и быстро закрепился как более удобный и не вызывающий путаницу с кадром. 

Вообще говоря, не обязательно создавать отдельный файл для каждого шота. Можно создать в одной сцене несколько камер, проанимировать всё, что движется, переключаясь то на одну камеру, то на другую, и потом за один проход всё отрендерить. Но, тем не менее, все, кто сталкивался с созданием мультфильмов, настоятельно рекомендуют разбивать сцену на шоты. Отчасти это связано с тем, что разные шоты по разному композятся, и поэтому будет слишком сложно работать с Node Editor. Другая причина — более простой рендеринг, особенно если файлы будут сдаваться на render-farm. Ну, и по части анимации одношотовые файлы становятся легче, быстрее загружаются, занимают меньше памяти, не замедляют работы и не «валят» Blender в критических ситуациях. 

Например, если заглянуть в папку 12_peach, то мы увидим следующее: 

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

Файлы здесь по большей части небольшого размера, иногда даже по 130-500 КБ, что достигается благодаря системе линкования. Файлы с шотами содержат в себе, основном, только ссылки на другие файлы с моделями, и основная находящяся в них информация — это данные об анимации подключенных к ней объектов. 

Нельзя также не заметить двух файлов с удивительными именами — 08_11_13.blend и 09_10.blend, к каждому из которых прилагается соотвественно файл 08_11_13.txt и 09_10.txt. Это тот случай, когда один длинный шот разрезается монтажом на части и затем перебивкой показывается вперемешку с другими шотами. Для этого случая аниматоры «Big Buck Bunny» не стали создавать отдельные файлы, а разрешили шоту отрендериться за один раз, указав в текстовых файлах диапазоны кадров, которые относятся к раздельным подшотам. 

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

 

В подпапке dvd находятся .blend-файлы для создания оболочки к DVD с финальным мультфильмом, а в подпапке elements — один .blend-файл с анимированным выводом на экран всей библиотеки моделей. 

Итак, если подытожить всё выше рассмотренное, то структура законченного проекта «Big Buck Bunny» состоит из следующего дерева папок: 

chars — здесь собраны модели всех персонажей мультфильма — кролика, бабочки, фиолетовой птицы и тройки борзых грызунов. 

envs — модели с библиотеками окружения — трава, цветы, камни, листья, деревья и т. д. 

mattes — задние фоны — в их числе как просто рисунки облаков и холмов на горизонте, так и .blend-файлы, создающие панорамные виды. 

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

scenes — пошотовые файлы с анимацией. 

script — программы на языке Python. 

sets — сборочные файлы с местами действий. 

Файлы со всех папок собраны в одну большую иерархию, на вершине которой находятся анимационные файлы шотов из папки scenes. Всё остальное подключаются к ним через систему линкования. А вот как это делается, будет рассказано уже в следующем разделе. :) 

Сайт автора: www.krre.inf.ua.
533 0 850 5
2
2014-07-30
глупый вопрос может спрошу, где взять исходники? перерыл весь http://www.bigbuckbunny.org/ , нашел только ссылки на разные разрешения видео, 3d видео, но исходников найти не смог...
2014-08-01
Нашел))) Заходим в раздел "download" и ищем следующий пункт

Production Repository From DVD

RENDER.RU