Big Buck Bunny» зсередини
Запровадження
Blender-спільнота має одну чудову перевагу: ми маємо можливість вивчати вихідні робочі файли до закінчених короткометражних мультфільмів «Elephants Dream» («Мрії слонів», 2007 р.) та «Big Buck Bunny» («Великий Зай», 2008 р.). , створених у рамках The Orange Open Movie Project і The Peach Open Movie Project відповідно. Ці файли викладені у вільному доступі в інтернеті, і кожен бажаючий може їх скачати.
Загалом все у ваших руках, а ми постараємося, щоб жоден кролик за час вивчення файлів «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. Він пропонує наступну структуру проекту:
Розберемо, що тут навіщо потрібно.
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 штук, і для кожної сцени виділено окрему папку, а в кожній папці для кожного шота виділено окремий файл.
Загалом кажучи, не обов'язково створювати окремий файл для кожного шота. Можна створити в одній сцені кілька камер, проанімувати все, що рухається, перемикаючись на одну камеру, то на іншу, і потім за один прохід все відрендерити. Проте всі, хто стикався зі створенням мультфільмів, настійно рекомендують розбивати сцену на шоти. Частково це пов'язано з тим, що різні шоти по-різному композяться, і тому буде дуже складно працювати з 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. Решта підключаються до них через систему лінкування. А як це робиться, буде розказано вже в наступному розділі. :)