Працювати над Avatar, Games of Thrones та Avengers: чим сфера CGI/VFX цікава для IT-спеціалістів

Привіт, мене звати Остап. У сфері VFX (Visual Effects) я працюю близько 10 років. Починав у одній з найвідоміших у СНД компаній — Terminal FX, а зараз займаюсь технічною організацією FX департаменту у Weta Digital у Новій Зеландії. Це студія, яка робила візуальні ефекти до фільмів «Avatar», «Games of Thrones», «Alita: Battle Angel» та ін.

У цій статті я розповім, чим цікава сфера CGI/VFX для програмістів, особливо для тих, хто хотів би змінити напрям, щоб мати трохи більше творчості у своїй роботі.

VFX — це технології, без яких візуалізація у сучасних блокбастерах була б зовсім не такою, як ми її бачимо зараз, або й цілком неможлива. Часто visual effects плутають зі special effects, які передбачають механічні та оптичні ефекти. Visual effects — це комп’ютерне опрацювання зображень, яке використовується у іграх, VR та телебаченні.

З кожним роком сфера VFX/CGI усе більше переймає від суміжних галузей. Такі слова, як DevOps, Scrum, Artificial Neural Networks, Big Data тут уже стають нормою, а отже й поле діяльності для спеціалістів розширюється. Але про все по порядку.

Як я потрапив у VFX

Для мене усе почалося з перегляду фільмів із захопливою графікою і питанням: «Як вони це зробили?». Ще навчаючись у львівському кінотехнікумі, пробував освоїти CGI/VFX самостійно, однак це далося нелегко: 10 років тому інформації було обмаль. Тоді я пішов працювати у львівський регіональний телеканал: робив заставки, усілякі рекламки. Але через півроку звільнився, бо розчарувався у тому, що побачив: рутинність завдань, відсутність перспектив і росту як спеціаліста.

У той же період (це, здається, був 2007 рік) у Львові стрімко розвивалися аутсорсингові IT-компанії. Я пройшов курси з програмування на Python, потім ще трохи знайомився з Java. Навіть запросили на роботу розробником в одну з компаній. Проте, пам’ятаючи свій досвід програмування в університеті, я відмовився. Зараз навіть дещо шкодую про це, але у виші ми програмували на Basic. Я взагалі не розумів, що ми робимо і який має бути кінцевий результат, і тому отримав хибне уявлення про те, що таке програмування.

Отож, думаючи, що я гуманітарій і точні науки не для мене (а, як виявилось, істина десь посередині), вирішив спробувати свої сили ще раз у комп’ютерній графіці, але тепер уже в Києві, де ринок CGI розвинений. Там одразу потрапив у вир подій і уже затримався на декілька років аж до переходу в одну із легендарних компаній у СНД — Terminal FX. Там я нарешті взяв участь у створенні VFX контенту, який собі уявляв. Я вдячний цьому колективу за те, що мав змогу бути його частиною.

Згодом захотілось побачити, що за обрієм, як люди працюють там. Почалися переїзди у різні країни: Польща, Австралія. 2018 року приїхав у Нову Зеландію. Зараз я працюю у студії Weta Digital у Веллінгтоні і займаюсь технічною організацією FX департаменту. Ця позиція називається FX Pipeline TD. Основне моє завдання — автоматизація процесів і написання інструментів, які б допомогли FX художникам «безтурботно жити» та без зайвих зусиль обмінюватись даними з іншими департаментами. За час роботи у Weta Digital вдалося долучитися до розробки «Alita: Battle Angel», «Pan» (2015), «Mortal Engines». Під час написання цього тексту завершуємо роботу над «Avengers: Endgame».

Про роботу в Terminal FX

У Terminal FX я починав з цілковито художньої позиції — compositing artist. Займався композицією, кольорами, інтегрував комп’ютерну графіку в реальне середовище. Потім перейшов на більш технічну роботу: дописував невеличкі скрипти, які полегшували життя іншим художникам, пробував автоматизовувати їхню роботу.

Потім почав займатися ефектами: вогонь, вода, повітря, хмари. Для цього вже необхідно було вивчати фізику тіл, закони Ньютона, як відбувається взаємодія, як горять речі, як відбувається окислення та ін. Трохи згодом знову перейшов у більш технічний напрям — допомагав це все автоматизовувати. А потім уже займався винятково розробкою інструментів, які б допомагали створювати такі феномени.

Звісно, можна ще додати багато градацій у професійному зростанні. Terminal FX — невелика компанія (20-30 людей), і тут спеціалісти охоплюють одразу багато обов’язків. А у великих компаніях (1000-2000 осіб) є безліч більш вузьких спеціалізацій. Наприклад, лише в одному R&D відділі можуть бути ті, хто переважно допомагають художникам і взаємодіють з ними, ті, хто більше займаються математикою, ті, хто частіше програмує, ті, хто займаються архітектурою програм. Є спеціалісти, які налаштовують потік даних з одного віділу у інший, є ті, які відповідають за паралельні обчислення, і ще багато інших.

У Terminal FX ми працювали над «Universal Soldier: Day of Reckoning», «Dragonheart 3» і багатьма іншими фільмами. Моїм першим проектом у компанії був фільм «Высоцкий. Спасибо, что живой» — зміна обличчя актора.

Завдання було досить зрозуміле: зробити з Безрукова Висоцького. От ми й робили :) Переглянули багато варіантів облич Висоцького і створили певну модель, базові правила, за умови дотримання яких інше обличчя було б максимально схожим на Висоцького. Потім уже пробували підігнати обличчя Безрукова під цю модель. Це, звичайно, не робиться так, як у фотошопі: 21-й, 22-й, 23-й кадр і підмальовуєте їх. Ми продивлялися кадри, знаходили в них щось спільне та підбирали алгоритм, намагались автоматизовувати. Але, звичайно, було багато нюансів, які підганяли вручну, адже, наприклад, були кадри з різних камер, хоч і в тому самому середовищі, і модель уже не працювала. Через складність проекту над цим фільмом взагалі працювала не одна компанія, а декілька.

Щодо інших цікавих розробок у Terminal FX, вони зробили власний унікальний продукт для менеджменту саме у сфері FX. З його допомогою режисери можуть відслідковувати прогрес у роботі, коментувати роботу художників, робити помітки на відео. Здається, в Microsoft є схожий більш універсальний аналог для проджект-менеджерів, який так і називається — Microsoft Project. Із менших задач, які ми вирішували, — бувало, деякі програми не підтримували потрібний нам формат зображення. Тоді ми їх дописували, адаптовували. Багато часу витрачали також на розробку пайплайну, щоб дані переходили максимально безпроблемно з одного відділу до іншого. Це система, яка допомагає художникам з різних відділів працювати над шотом, зберігає версії, автоматизує рутинні системні процеси. Таким чином, усі співробітники працюють в одній системі, обмінюються між собою даними, коментують і т. д.

Ринок CGI/VFX у світі й в Україні

На мою думку, у сфері VFX існує три основні компанії — лідери за інноваційністю, міні-світи, де створюють майже все власне. Вони мають великий штат розробників, часто співпрацюють з університетами і тому пропонують передові рішення в комп’ютерній графіці. Перші дві — це Disney, де взагалі винайшли комп’ютерну графіку, — Pixar, Industrial Light & Magic (одна з найстаріших компаній світу, заснована 1975 року, яка розробляла другого «Термінатора», «Парк Юрського періоду» ) і третя — Weta Digital. Остання з них наймолодша, заснована у 1993 році.

Звісно, є ще й інші немаленькі компанії. Можна розглянути ось таку світову карту VFX/Animation компаній, правда, вона трохи застаріла, і список компаній із пострадянських країн.

Загалом, якщо порівнювати з глобальним IT-сектором, то цей ринок менший, але він розвивається. Відкриваються нові компанії, Disney розвиває нові напрямки і шукає під них людей, «спалахами» бувають цілі кампанії з наймання спеціалістів.

На українському ринку компанії працюють на високому рівні, навіть якщо порівнювати їх зі світовими конкурентами. Не вистачає, можливо, масштабів і людей. Є компанії, які працюють лише на український ринок, і є ті, які співпрацюють із закордонними вендорами. Postmodern (підрозділ FILM.UA), Terminal FX — одні з найбільших.

Найчастіше їм віддають комп’ютерну графіку на аутсорс. Це щось подібне до аутосорсу в IT, але комп’ютерна графіка навіть більше підходить для цього, аніж програмні продукти, адже їх ще потрібно, наприклад, сапортити. А тут немає ніяких підводних каменів. І вендорам простіше довіряти графіку, адже вони можуть легко перевірити якість: якщо робота виконана погано, це одразу видно. А от у програмних продуктах замовник може виявити якісь критичні баги вже після продакшену. Звичайно, є в цій сфері і так звані «продуктові» компанії, які роблять лише великі проекти під ключ. Pixar, мало того, навіть самі пишуть сценарії, режисери постійно працюють разом з художниками.

На жаль зараз, наскільки я знаю, ситуація в Україні з відпливом кадрів трохи вдарила по комп’ютерній графіці загалом. Багато людей пороз’їжджались. Тому в компаніях відчувається гостра нестача спеціалістів. Але хочу підкреслити, що загалом українські компанії не є масштабними, мають невеликі штати людей, і тому просто не можуть витрачати ресурси на R&D-розробки для поліпшення картинки. Вони частіше наймають художників, аніж програмістів. Наприклад, у деяких закордонних компаніях співвідношення художників і програмістів може бути 10/2. Але знову ж таки, спеціалізацій багато, й вони часто перетинаються. Тому навпаки є можливість спробувати себе в новому напрямі.

З мого досвіду, оплата праці у цій сфері, на жаль, в середньому нижча, ніж у IT-секторі, але великою мірою це залежить від ринку країни. Деякі держави мають податкові преференції з боку держави на створення контенту для кіно — велику частину податку компаніям повертають, і вони мають можливість підвищити зарплату. Тоді фінансовий баланс між VFX і IT-сектором може вирівнюватись. Багато залежить від політики самої компанії, тому навіть в одному місті, але в різних компаніях, оплата праці може відчутно відрізнятись.

Канада (певні провінції), Австралія, Британія, Нова Зеландія борються за те, щоб представництво комп’ютерної графіки було саме в них. І, мені здається, Нова Зеландія — дуже активний представник такої боротьби. Ця країна має локації, де знімали фільми «The Lord of the Rings», які приваблюють велику кількість туристів. За один вхід у містечко Hobbiton просять близько 70 доларів. Ви заходите в усі ці будиночки, бачите, де і з яких ракурсів Пітер Джексон усе знімав, ви ходите по тих містках, по тому ж лісі. Навіть в аеропорту Веллінгтона, коли сідатиме літак, побачите напис хобітів «Middle of the Middle Earth». Нова Зеландія дістає великі бонуси за рахунок фільмів, тому й готова за них боротися. Без підтримки держави тут ніяк.

Джерело: learnz.org.nz

У Канаді, наприклад, вже інша ситуація. У цю країну найбільше аутсорсять комп’ютерної графіки. Напевно, важко знайти фільми, які б не створювалися в Канаді. Там величезна кількість малих компаній, які беруть замовлення по всьому світу, і країна заробляє саме на них.

Що потрібно знати

Сьогодні для тих, хто робить свої перші кроки у VFX, має бути простіше, адже інформація доступніша, середовище розвинуте і загалом усе більш впорядковане. Детально про VFX можна почитати на FX Guide. Там є багато інформації як з художніх тем, так і технічних.

Щодо знань, які потрібні для роботи, усе дуже залежить від спеціалізації і того, над чим ви працюєте. Наприклад, художник повинен розуміти, що таке композиція, колір, загалом володіти художніми якостями. Якщо ж хочете робити візуальні ефекти, необхідно розуміти, як відбуваються ці явища в реальному житті. Якщо ви йдете в анімацію, то маєте розумітися на анатомії, як людина рухається, як працюють м’язи, як людина може реагувати на різні ситуації, як відображаються емоції на її обличчі. Таких спеціалізацій багато, і вони дуже відрізняються.

Якщо ви йдете в більш технічну сферу, то там свої нюанси. Якщо це програміст, який займається рендером, то йому треба знати, наприклад, як проходить світло через різні об’єкти. Також у нашій роботі важлива ефективність, тому програмісти мають знати, як виконувати оптимізацію, зробити так, щоб процеси виконувались паралельно і швидко.

Художникам (маю на увазі людей, які створюють контент) перехід у VFX-галузь зазвичай дається простіше, ніж спеціалістам з IT-сектору, адже часто IT-шники просто не розглядають такі вакансії. Мені відомі декілька варіантів переходу:

  • Художник з VFX розказує знайомому програмісту про відкриті позиції у своїй компанії.
  • Програміст переїжає у місто, в якому є одна із провідних VFX компаній, і відповідно, вона на слуху.
  • Програміст випадково натрапляє на вакансію з VFX.

Також одна із явних перепон — це те, що великий VFX далеко від України і зазвичай необхідно переїжджати.

Вакансії і напрямки

Зазвичай, усіх, хто йде в цю сферу, об’єднує те, що їм подобається фінальний результат, візуалізація ідей. А займається вже кожен своїм напрямом. Чим складніші проекти, а, відповідно, і більші розміри компаній, тим більший спектр залучених спеціальностей.

Нині є багато вакансій, які поєднують CGI і класичне IT. Ось приклади вакансій: Senior DevOps Production Engineer, Software Engineer — Procedural Geometry & Simulation C++, Sr. Software Engineer, Machine Learning Researcher, Senior C++ developer.

Якщо людина володіє Machine Learning і Big Data, їй буде дуже легко ввійти в комп’ютерну графіку навіть без якихось додаткових знань. Для С++ чи, наприклад, Python розробника усе дуже залежатиме від конкретної позиції, на яку він подається. Для деяких позицій все-таки треба знати базові поняття в комп’ютерній графіці. Якщо ви подаєтеся на розробку рендера, то важливо знати алгоритми взаємодії світла і об’єктів. Якщо подаєтеся на симуляцію, то спитають, наскільки ви знайомі з відповідними математичними формулами. Зазвичай ще симуляції пишуть під конкретні види феноменів (вогонь, рідина чи щось інше). І можуть запитати щось, пов’язане з цим.

Якщо це розробки, пов’язані з внутрішніми інструментами компанії, яким важко знайти аналоги, то нічого не будуть питати стосовно цих технологій, а лише банальні речі про С++. Можливо, й без прив’язки до комп’ютерної графіки. Компанія розуміє, що вона не може запитати про ті технології, які недоступні ніде. Уже коли спеціаліст прийде на роботу в компанію, вона буде витрачати час на те, щоб навчити його цих технологій.

Є багато завдань для програмістів і поза комп’ютерною графікою, пов’язаних з функціонуванням компанії. Наприклад, те, як і коли стирати дані, який час валідації має пройти, як вони мають перейти на сервер, коли вони мають заархівуватися. Усе це автоматизовано.

Особливості роботи у CGI/VFX

Особливість роботи програміста у VFX у тому, що він багато спілкується із замовниками. А замовниками є художники або інші технічні спеціалісти в цій самій студії, для яких ви пишете інструменти. Вони в свою чергу на базі цього можуть створювати інші нові інструменти. Студія працює як один організм, це замкнений цикл. Таким чином, комунікаційні якості стають по-справжньому важливими, як і особиста відповідальність.

При відсутності комунікації художники можуть не розуміти, на якій стадії розробки той чи інший інструмент, які складності виникають у розробці певного функціоналу, на якій компроміс ми можемо піти, а це все може вилитись у фінальний неякісний продукт. З іншої сторони, розробники мають можливість поглянути в реальному часі на те, як їхні інструменти допомагають (або ж ні) в досягненні поставлених цілей. Особливість цього процесу в тому, що розробники працюють не для віртуальних користувачів, а для тих, з ким спілкуються за ранковою кавою або ж ходять разом на футбол.

У студії VFX величезну увагу приділяють самому робочому процесу: як різні відділи обмінюються між собою даними, як, наприклад, переходить інформація з FX-відділу у анімаційний. Це чимось схоже на Git-репозиторій тільки зі структурованою схемою для різного контенту і, відповідно, для різних даних.

Якщо говорити про класичний метод розробки, то часто у студій немає типового відділу тестування, але автоматизованим тестам відводиться особлива увага, і зазвичай за це відповідає розробник (TDD методологія доволі популярна). Причиною тому є спеціалізованість завдань і, відповідно, вміння використовувати середовище та інструменти. Часто тут використовують систему плавного впровадження продукту, яка залежно від ітерації збільшує кількість залучених людей, а це допомагає виправити баги ще на перших етапах користування.

Ще одна особливість: наш головний продукт — саме фінальне зображення. При його перегляді, можливо, зовсім не видно workflow, не зрозуміло, які технології були використані. Там просто добре видно пікселі, які бігають. Навіть спеціалістам з комп’ютерної графіки важко розрізнити, де художник обійшовся без технологій, а де технологія добре допомогла.

У класичному IT, як я гадаю, більший контраст між спеціалістами: є Java розробник, а є тестувальник, наприклад. У комп’ютерній графіці простіше змінювати рівень технічності, перейти в більш художній напрям або навпаки. І різниця між розробниками і художниками взагалі не така чітка. Тому й перехід дається простіше. Компанії навіть додатково заохочують спеціалістів час від часу змінювати свої позиції, напрямки роботи, щоб попередити вигорання.

Ще один цікавий бонус роботи в комп’ютерній графіці — це те, що ви ще до виходу фільму знаєте сюжет, які там були деталі, повороти, які режисер вирізав, і вони не увійшли в остаточну версію. Звісно, це вам буде цікаво, якщо цікавить сам фільм, над яким ви працюєте. Але розкривати ці подробиці публічно заборонено. Наприклад, у нас в компанії кожного місяця проводять додаткові курси, на яких розповідають, щоб ми були обережними з тим, що розказуємо про свою роботу. Не можна розповідати про технології виробництва і тим паче про сюжет. Компанія дуже ретельно слідкує за тим, щоб інформація не потрапила назовні.

Роздуми про майбутнє VFX

За останні декілька років можна прослідкувати, як VFX-компанії відходять від розвитку різносторонніх великих проектів. Студії не намагаються розробити свої варіанти графічних програм, наприклад, Maya чи Katana. Натомість вони застосовують свої R&D ресурси для розробки власних вузькоспрямованих продуктів, таких як оптимізація симуляції рідини, постпроцеси для усунення шуму з зображень. З їхньою допомогою можна підняти існуючий інструмент на новий рівень, а також поєднати декілька фреймворків в єдину екосистему. Як результат, новим спеціалістам не потрібно адаптуватись до цілком нової системи роботи в компанії, а розробники мають менш рутинні завдання.

Як і у багатьох сферах, у VFX проглядається тенденція до пошуків здешевлення та підняття якості виробництва. Один із останніх трендів — Machine Learning. Використовується в усунені шумності зображення, створенні масок певних об’єктів на основі відео (rotoscoping), анімації обличчя персонажа за допомогою лише звукової доріжки і т. д.

Ось невелика підбірка відео Machine Learning для CGI: «Neural network creates its own animation», «Disney’s AI Learns To Render Clouds», «Rotobot, bringing Machine Learning to Roto».

Ось ще цікаве відео із CppCon про техніку розробки в Houdini — одному із найкращих програмних комплексів для створення CGI.

У VFX-студіях все більш популярною стає спеціалізація Pipeline TD. Це свідчить про бажання оптимізувати процеси, що частково перегукується з IT сектором і DevOps (хоча, звісно, великі компаній мають окремі позиції DevOps і Pipeline TD).

Scrum, Agile є далеко не новими для IT, але у VFX це нова хвиля, яка вносить інший підхід до організації праці. Ось хороша стаття від української компанії з цієї теми. Хоча у тих реалізаціях Scrum, Agile, що я бачив, часто саме людські якості були слабкою ланкою.

Digital Doubles — необхідність в CGI дублерах індустрія відчувала вже давно, але до використання такого прийому вдавались лише за особливих обставин і обмежено. Інакше на це було важко дивитись. З кожним роком якість створених двійників покращувалась, але й кількість залучених працівників збільшувалась. Так тривало до тих пір, поки не з’явилися фальшиві відео Обами, які були створені за допомогою Machine Learning більш дешевим і швидким способом. Це відкриває поле для цілком нових проблем, для врегулювання яких необхідні нові правила або ж більш жорсткі існуючі. Можливо, цей спосіб створення двійників радикально змінить роботу актора у кінематографі, але поки що технологія не дає цілком реалістичного результату, і погано те, що такі дані важко піддаються корективі. Тому, хоч на дворі уже 2019 рік, VFX-студії в більшості випадків віддають перевагу класичним методам створення дублерів.

Висновки

Звісно, я описав лише невелику частину цікавого зі сфери CGI/VFX і в першу чергу для того, щоб нагадати, що тут теж є життя для розробників. Якщо у вас є власне бачення програмування і вам би хотілося мати трохи більше творчості в роботі, то, можливо, комп’ютерна графіка — те, що вам необхідно. У цій сфері можна самостійно обрати баланс між творчістю і технічною роботою і проявити себе завдяки великій кількості напрямків.


За допомогу у підготовці статті дякую редакції DOU.

Похожие статьи:
● Как выбрать инструментарий для работы с тест-кейсами, где вести тестовую документацию? Идем от обратного — что хотим получить...
На курсе рассматриваются основные типы моделей, используемые для поиска закономерностей в данных: регрессионный анализ,...
Олексій Зайченко — QA Lead у Daxx та співорганізатор в освітньому проекті Be QA Today. За 5 років він пройшов шлях від...
Компания BlackBerry, фактически, официально подтвердила выпуск Android-смартфона BlackBerry Priv, ранее он был известен как...
Оператор мобильной связи МТС объявил о снижении с сегодняшнего дня и до конца марта цены на несколько...
Яндекс.Метрика