Створення сцени з Star Wars в Unreal Engine 4


Всі зображення в статті клікабельні

Введення
Привіт, мене звуть Джейсон Льюїс (Jason Lewis). Думаю, що мене можна назвати керівником цього групового проекту. Я головний художник оточенням Obsidian Entertainment. Інші художники, які зі мною працювали над цим проектом, теж працюють в Obsidian. Це помічники головного художника, художники середнього класу і джуниоры. Навіть люди з відділу QA доповнили сцену своїми художніми навичками. Всього в роботу різною мірою внесли свій внесок 17 осіб. Це був наш особистий проект, ми створювали його тільки тому, що всі ми - великі фанати «Зоряних воєн». Дивлячись на сучасні роботи по Star Wars, ми вирішили, що настав час взяти участь і створити якісний фанатський арт-проект. Крім того, що ми прихильники Star Wars, деякі з нас хотіли під хорошим приводом вивчити Unreal 4.











Сам я працюю в ігровій індустрії вже більше 20 років, і побував у багатьох студіях, від невеликих стартапів на початку кар'єри до найбільших видавців і розробників, таких як Sony і EA. Протягом цих років я створив безліч ігор, найпомітнішими з них стали Enter the Matrix і The Matrix Path of Neo [Shiny Entertainment], SOCOM 4 [Zipper Interactive і Sony Computer Entertainment], Medal of Honor Warfighter, DLC Battlefield 4 [EA] і Armored Warfare [Obsidian Entertainment]. У 1999 і 2000 роках я трохи відпочив від ігор, попрацювавши над телевізійним анімаційним серіалом Starship Troopers. Як я сказав вище, над проектом працювали і інші художники, більшість з них мають вже більше 10 років досвіду. Я хочу згадати деякі з них. Це Террі Хесс (Terry Hess), ще один головний художник, що працював над декількома іграми Call of Duty. Він також створював Medal of Honor і Battlefield 4 в EA. Крейг Маршке (Craig Marschke), теж головний художник серії Call of Duty з надовго запам'яталася ери Novalogic. Кен Лесэнт (Ken LeSaint) і Тед Клевенджер (Thad Clevenger), ще двоє головних художників з різних галузей індустрії. Брайан Леле (Brian Leleux), один з основних художників з висвітлення в Obsidian, та інші.



Проект Star Wars
Наша сцена з Star Wars почалася з того, що я просто хотів відтворити 3D «Тисячолітній сокіл». Я великий фанат «Зоряних воєн», і я завжди хотів змоделювати «Сокола» в комп'ютерній графіці, але до недавнього часу у мене не було такої можливості. Спочатку він був простою моделлю 3ds Max, але потім я подумав, що було б непогано подивитися на нього в реальному часі. Тоді у мене не було досвіду роботи з Unreal 4, і я вирішив, що це буде відмінним проектом для знайомства з UE4. Тому моєю метою стало створення самої высокодетализированной моделлю «Сокола» в реальному часі, і мені здається, у мене вийшло. Винятком може стати модель з останньої VR-демо ILM X-Labs, показаної на GDC кілька місяців тому. Можливо, їх сцена трохи більш деталізована, або наші сцени йдуть «ніс у ніс», але, наскільки я можу судити по відео в Інтернеті, їх корабель більш точно повторює оригінальну модель. Я ж допускав вольності деталізації, щоб модель краще виглядала на сцені.









Спочатку «Тисячолітній сокіл» повинен був стояти в стикувального відсіку 94, щоб гравець міг переміщатися навколо нього в реальному часі. Потім я подумав, що непогано б додати інтер'єр відсіку, і, може бути, частина навколишнього міста Мос-Эйсли. Вже після цього я подумав, що можна додати бар з Мос-Эйсли. В цей момент я усвідомив, що з таким обсягом проекту я не зможу завершити його поодинці, тому я запросив кілька художників, які працюють зі мною в Obsidian, допомогти у вільний час з проектом. Отримавши безліч захоплених відгуків, я розділив роботу між волонтерами, виходячи з передбачуваних витрат часу і праці.

Зараз ми закінчили проект приблизно на 90%, наша мета - завершити проект і викласти його в Інтернет для вільного скачування. Це насправді не гра, а, швидше, інтерактивний мистецький об'єкт. Користувач може побігати по околицях з бластером (або з секретною зброєю, яке потрібно знайти). Нам не вдалося заручитися допомогою художників по персонажам, тому єдині персонажі в оточенні, крім вас - це купа дроїд-механіків і кілька дроїд харчування. Також ми працюємо над VR-версією, тому що деякі учасники групи вже познайомилися з VR-пристроями Oculus і Vive. Ми вирішили, що буде здорово створити версію, що працює в VR, тому зараз намагаємося завершити і її теж.



Створення сцени з Star Wars
Ця сцена - справжній експеримент, що показує, наскільки деталізовані сцени (з точки зору деталізації полігонів і текстур) можна запускати на сучасному комп'ютерному графічному обладнанні з прийнятною частотою кадрів. В результаті нам вдалося досягти досить високого кількості полігонів і розмірів текстур. Ми застосували модульність, але на макрорівні. Будівлі - це екземпляри об'єктів, весь стикувальний відсік тричі повторно використаний рівні, кілька разів використані деякі пропсы, але ми не створювали модулів на мікрорівні (немає наборів стін, стель, сходів і т. д.), майже всі ассеты унікальні. Для створення композиції ми вивчили кілька сцен з четвертого епізоду Star Wars і спробували якомога краще скопіювати їх з урахуванням обмежень, що накладаються вільною навігацією в реальному часі. Але основний упор в оточенні ми зробили на стикувальних відсіках і кораблях всередині.



З точки зору споживання ресурсів сцена досить «важка». Один мій «Сокіл», «важить» приблизно 700 000 трикутників, ще близько 500 000 пішло на стикувальний відсік і навколишні його пропсы. Є кілька частин міста, в яких кількість полігонів зашкалює за мільйон. Поки ми тестували використання ОЗУ графічних карт з обсягом до 4,1 ГБ з максимальними налаштуваннями. З-за тимчасових обмежень у нас не вистачило часу на створення LOD, тому ми передаємо дані з пам'яті в пам'ять невеликими частинами (чанками) на підставі положення гравця. Незважаючи на велику кількість полігонів і розмір текстур, з усіма протестованими графічними процесорами сцена працювала досить добре. Зараз ми отримуємо 45-60 FPS на GeForce GTX 970, 980 та Titan X. Якщо зменшити розмір пулу пам'яті та забезпечити більш «агресивний» міп-текстурування, вийде досягти прийнятної частоти кадрів і на GTX 760 з 2 ГБ.





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









Ассеты
Наша сцена містить величезну кількість ассетов, і мені здається, що завдяки цьому вона виглядає такою унікальною і захоплюючою. Ми розбили ассеты на три категорії: будівлі та структури, кораблі і пропсы. Як я і говорив, ми розділили їх між добровольцями з урахуванням часу і сил, які вони хочуть вкласти в роботу. Для ассетов пропсов я з самого початку підготував робочий процес, щоб досягти високоякісного результату з малими витратами часу. Більшість учасників скористалося моїм процесом. Майже всі ми користуємося 3ds Max, тому процес коротко виглядав так:

  1. Створення фінальної низкополигональной сітки.
  2. Створення высокополигональной сітки для запікання (високополігональних сітки зазвичай використовувалися тільки для генерування граней зі скосами в карти нормалей. Дрібні деталі карт микронормалей малювалися або вылепливались скульптингом Zbrush, Quixel або Substance Painter).
  3. Запікання карт нормалей Tangent Space/карт Ambient Occlusion і Curvature Maps.
  4. Додавання микродеталей в карти нормалей, AO і Curvature Maps.
  5. Фінальний прохід текстурування (більшість з нас використовує Quixel Suite, деякі - Substance Painter)
Будівлі і великі структури моделювалися у фінальному низкополигональном стані і імпортувалися в UE4 без запікання, тому що в основному на них накладалися повторювані (tileable) текстури штукатурки або металу. У більшості матеріалів будівель використовуються текстури, спроектовані в просторі світу, що дозволяє позбавитися від витратного по часу роботи з UV. Необхідний тільки швидкий і простий прохід UV для запікання освітлення.





З «Тисячолітнім соколом» зовсім інша історія. По-перше, нам потрібно було розбити цей знаменитий корабель на кілька частин, у кожній з яких був свій унікальний матеріал. Фінальний «Сокіл» складається з 50 унікальних сіток. З-за великого розміру і високого рівня деталізації описані вище процеси текстурування тут не підходять, тому що повторюються матеріали не забезпечать потрібного рівня чіткості, якого я намагався досягти. Проте накладення на кожну з цих 50 частин унікальною текстури швидко б завантажила графічний процесор навіть з 4 ГБ або 6 ГБ пам'яті, тому що всі вони повинні мати дозвіл 4K, щоб щільність текселей не руйнувалася при близькості камери гравця до корабля. Щоб вирішити ці проблеми, я вирішив спробувати застосувати систему шарів матеріалів Unreal 4. Якщо ви не знайомі з системою Layered Material, поясню: вона дозволяє створювати основні матеріали з повторюваними текстурами, що визначають різні типи поверхонь. В єдиному базовому матеріалі можна з'єднати і змішати такі основні матеріали через маски, що знаходяться в просторі сіток 0-1 UV. Це вирішує проблему з пам'яттю графічного процесора завдяки використанню повторюваних текстур розміром 1K для визначення всіх типів поверхонь, і однією текстурної маски розміром 4K для кожної частини «Сокола» замість трьох текстур 4K для кожної частини корабля. Накладення повторюваних матеріалів шарами з масками змішування забезпечує набагато кращий рівень чіткості порівняно з результатами застосування традиційних повторюваних матеріалів. Недолік системи шарів матеріалів полягає в більшій порівняно з традиційною налаштуванням матеріалів витраті ресурсів на піксель, що призводить до підвищення навантаження на графічний процесор.







Матеріали
Вище я злегка торкнувся створення матеріалів, і зараз ми розглянемо його більш докладно. Процес роботи над матеріалами в основному залежить від того, до якої категорії віднесена його сітка (структури/кораблі/пропсы). Для будівель і структур ми використовуємо повторювані матеріали з текстурами в просторі світу. Система прив'язки в просторі світу UE4 працює досить добре і дозволяє нам створювати такі ассеты швидше. При цьому не витрачається час на складні UV, які вимагають дуже обережного налаштування, щоб при накладенні не було багато швів. Проектування в просторі світу відмінно змішує вигнуті поверхні. Звичайно ж, іноді виникають випадкові шви, але вони не викликають проблем. Переваги в швидкості набагато переважують виникають випадкові шви або помилки проектування. На додаток до повторюваних матеріалами всі текстури також змішуються з глобальною картою нормалей і картою AO, що визначають базову форму і силует кожної із структур.









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

У ассетах пропсов використовуються досить прості налаштування матеріалів: базова дифузна мапа/карта нормалей і одна текстура в градаціях сірого шорсткості, металевого блиску, AO і карти відбиттів. У шейдер ми помістили множники для відображень і шорсткості, щоб налаштовувати значення матовості/глянцевості будь текстури без повернення до переробки текстур. Крім того, ми використовуємо на рівні безліч випромінювальних матеріалів, що створюють красиві області яскравого світла, що доповнюють дійсне освітлення. Також для матеріалів ми часто використовували трюк з вузлом flipbook UE4. Можна створити текстурний атлас анімованих спрайтів, повідомити flipbook, скільки рядків і стовпців в атласі, і він буде циклічно змінювати ці кадри спрайтів. За допомогою сайту множення можна налаштувати швидкість відтворення цих спрайтів вузлом flipbook. Я використовував flipbook для всього анімованого освітлення на панелях управління і консолях.



В основному наші текстури створювалися процедурно з допомогою Quixel Suite (і невеликою допомогою Substance Painter). Більшість з нас добре володіє Quixel, тому що ми використовуємо його в Obsidian. Частина добровольців зробила для сцени Мос-Эйсли набір преднастроенных «розумних» матеріалів, яким ми поділилися з іншою командою, щоб ще більше прискорити створення текстур. Приблизно 70% текстур зроблено в Quixel/Substance, решта - це фототекстуры з Інтернету і особистих колекцій. Більшість повторюваних текстур для таких поверхонь, як стіни будівель, штукатурка, бруд, пісок і земля, взято з фотографічних карток.



Освітлення
Після першого грубого проходу освітлення у цій сцені я швидко усвідомив, що створення освітлення для цього оточення буде досить великим завданням. Тому коли один з наших художників з висвітлення в Obsidian запропонував зайнятися світлом, я відразу передав всю роботу по освітленню йому. Ось що він може сказати з висвітлення в сцені Мос-Эйсли:

Невеликі джерела світла в «Соколі», проходах, на панелях і т. д. використовують вузол матеріалу для керування силою bloom і запеченого глобального освітлення (Global Illumination, GI) кожного подматериала окремо. Тому освітлення вздовж проходів може мати велику силу відбиття світла порівняно з джерелами світла на панелях. Їх значення bloom занижено і для посиленого bloom при постпроцесі великих джерел, таких як сонце і вогні стикувального відсіку.



В решті частини сцени, оскільки вона на 95% знаходиться під відкритим небом (або являє собою інтер'єри з прорізами), я працював з одним домінуючим спрямованим світлом, прагнучи до значення освітлення реального світу з точними колірними температурами*. Як тільки домінуючий джерело світла був налаштований, я перейшов до роботи з налаштуваннями Lightmass (я використовував багато налаштування з форумних тем про архітектурної візуалізації, редактора і без змін файлів .ini). Зробивши перше запікання, я подивився, де потрібно розмістити додаткове освітлення для збільшення освітленості в кутах, а де треба ще більше глобального освітлення. Після завершення оточення я почав працювати над інтер'єрами. Основна частина джерел світла в сцені для оточення була статичною, бо мені потрібна була тільки їх колірна інформація (без відбиттів) для додаткового GI або для виділення різних областей. Всі джерела світла, що впливають на гравця, є статичними для додаткових запікаємих елементів, але з динамічними тінями для тих ассетов, яким вони потрібні. Динамічні GI або AO не використовувалися, тому що вони були досить проблематичними, коли я починав працювати з освітленням. Туман створювався з допомогою обох типів туману, наявних у UE4. Атмосферний туман добре спрацьовує, коли потрібно надати статичного скайбоксу більше глибини і кольору, пов'язаного з часом доби. Туман, заснований на висоті (height based fog), надає відчуття курній сцени, розташованої в низині. Цей туман ні до чого не прив'язаний і використовується у всій сцені, а також у парі обсягів деяких інтер'єрних просторів. У глобального туману вносилися зміни в зернистість, bloom, хроматичну аберацію, віньєтування, тональну компресію і витримку. В окремих інтер'єрних обсягах використовувалися ті ж налаштування з незначними змінами кольору і витримки.



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

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

  • Щоб швидко виконувати роботу і зберігати хороший темп, зосередьтеся спочатку на загальній картині. Широкими мазками пензля створіть форми і композицію, а вже потім переходите до дрібних деталей. В деталях легко заплутатися, і почавши з них, ви загальмуйте процес розробки і отодвинете у часі реалізацію своїх цілей! Знайдіть способи виробництва, подібні саме вам. Я бачив багато форумних постів про правильних і неправильних способах роботи, але краще ігноруйте їх. Немає нічого правильного чи помилкового у творчості. Будьте відкриті до інших методиках, яким вас вчать, тому що вони можуть підвищити ваші навички. Але в кінцевому підсумку, якщо процес підходить вам і результат має відповідний рівень якості, ви зрозумієте, що все робили правильно!
  • Розуміння фізично коректного візуалізації (PBR) може зробити все набагато простіше при складанні сцени. Використання будь-якого з сучасних інструментів для текстурування (таких як DDO або Substance Designer/Painter) значно прискорить процес текстурування і дозволить вам швидко отримати досить точні матеріали. Унифицирование і підстроювання матеріалів під сцену допоможе вам, коли настане час роботи з освітленням. Воно теж є надзвичайно важливим аспектом оточення (але тут я можу бути упереджений). Не бійтеся зануритися в технічну сторону створення оточень. Усвідомлення впливу освітлення на матеріали, різниці між двома проекціями кубічних карт, трьома типами джерел світла і створюваними ними різними типами тіньових карт зробить роботу з освітленням набагато менш болісною. При створенні освітлення також допомагає знання теорії кольору, тому що вона дозволяє поліпшити сцену завдяки використанню співвідношення кольорів у наявних ассетах текстур. Потрібного настрою сцени можна досягти просто поєднанням кольорів, не змінюючи інтенсивність освітлення.




  • Ми не радимо новачкам починати з проектів такого розмаху. Він може тільки придушити їх. Починайте з невеликих проектів, працюйте з друзями і колегами, щоб розподілити завдання. Навіть якщо кожен внесе в сцену один-два ассета, постарайтеся взяти від кожного елемента максимум. Розберіться з процесом створення справжніх PBR і використовуйте універсальні матеріали, прикрашені декалями, щоб вдихнути в них життя. Неефективна структура може заощадити ваш час, але тоді проект складніше буде запустити і на комп'ютерах середнього рівня. Якість і швидкість завжди в різних сторонах спектру, тому зробіть вибір на самому початку проекту і, відповідно, плануйте роботу.

  • Цитата художника, що працює над імперським човником: «Я працював над човником „Лямбда“ і вирішив зробити його трохи відрізняється від всіх інших. Я виконував більш традиційні высокополигональное і низкополигональное запікання. Озираючись назад, я впевнений, що можна повністю пропустити высокополигональный етап і з самого початку працювати над фінальної сіткою». Економія часу варто того, якщо ви не плануєте показувати красиву высокополигональную модель в своєму портфоліо. Для отримання хороших скосів, зазвичай досягаються запіканням высокополигональных моделей, можна використовувати різні інші техніки. В Maya і Max є способи використання шейдерів для отримання округлених кутів твердих поверхонь, які заощадять вам купу часу. Також існують приголомшливі нові інструменти, що дозволяють просто створювати скоси всіх твердих граней і швидко виготовляти високополігональних об'єкти.

  • Перевірте правильність пропорцій. Якщо вони не збігаються, ассет буде виглядати неправильним. Навіть якщо гравець не зможе точно сказати, в чому помилка, він буде усвідомлювати, що з ассетом щось не те.

    Нехай у ваших ассетов буде Історія. Потрібно не просто зробити двері і пофарбувати її червоним. Подумайте, що сталося з цими дверима. Якого кольору вона була раніше? Скільки разів її перефарбовували? Хто або що користувалося цими дверима? Їх одяг був з металу або з тканини? Двері відчинялися стусаном або акуратно? Все це створює історію двері. Вона зробить ваш ассет нескінченно цікавіше. При цьому ассеты разом створять набагато кращу композицію.
Дякую, що знайшли час ознайомитися з нашим проектом. Якщо вам цікаво, як проект еволюціонував з самого початку, у нас є про це стаття на polycount, показує, як виглядав проект на ранніх етапах.

Якщо ж вам захочеться завантажити його, посилання представлені нижче. Проект досить вимогливий до системи: для прийнятних FPS ми рекомендуємо не менше 16 ГБ системної ПАМ'ЯТІ і графічну карту не гірше Nvidia GTX760 (або аналогічної версії AMD). Для великих FPS і дозволів до 2560 x 1440 або 2560 x 1600, ми рекомендуємо використовувати як мінімум Nvidia GTX970 і вище (або їх аналог виробництва AMD).

Проект можна скачати тут:

Комплект скріншотів в надвисокому дозволі можна скачати тут.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.