Автор: MastaMan
Дата: Червень 12, 2022
Оновлено: Липень 25, 2023
Ви читаєте частину: 1 2 3 4 5 6 7 8 9 10

Частина 2

Це Частина 2 із серії уроків зі створення Lamborghini Urus за допомогою WebGL/PlayCanvas.

Отже, в попередній частині ми ознайомилися з тим, що таке WebGL, спробували на практиці ігровий веб-рух PlayCanvas, створили проект і почали налаштування оточення.

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

Для тих, хто не читав попередніх частин, ось демонстративне відео.



У цій частині уроку ми продовжимо створення оточення і розберемося, як замінити тло іншою.

У цій серії уроків ми не вдаватимемося до стороннього софту, крім Autodesk 3Ds Max для підготовки моделі. Всі інструменти – це безкоштовні веб-сервіси: PlayCanvas, Photopea, Matheowis та інші...

Ну що готові? Тоді, починаємо...

Підготовка фону

Доступ до матеріалів, такі як: моделі у форматі "FBX", текстури, запечені карти "AO" та інше, ви можете отримати підписку на Patreon.

Patreon - 3DGROUND

Перше, що необхідно зробити, це замінити фон. Він відразу надасть розуміння, як необхідно поставити світло і загалом задасть загальний настрій картинки.

Головна ідея, яку хотів реалізувати, - це машина, що їде по висохлому озеру, де на десятки кілометрів попрощається безкрайній пісок і десь у дали видно гори. Це мало створити ілюзію усамітнення і сконцентрувати погляд на авто. А головне, це досить просто реалізувати ????

Написавши в Google запит "Sand Pit HDRI", за першим посиланням знайшов відповідну безкоштовну HDRI на DeviantArt.

Salt Pit - Free HDri AS-Dimension-Z на DeviantArt
https://www.deviantart.com/as-dimension-z/art/Salt-Pit-Free-HDri-755583634
sand pit hdri
Loading...

Оскільки PlayCanvas "не товаришує" зі сферичними картами, нам необхідно перетворити цю HDRI на кубічну.

Написавши в Google запит "HDRI to cubemap online" за першим посиланням переходимо на сайт:

https://matheowis.github.io/HDRI-to-CubeMap/

Як ви можете бачити зі скріншоту нижче, інтерфейс сервісу дуже простий. Натискаємо "Upload HDRI", вибираємо наш "SandPit_10000x5000.hdr" і чекаємо на завантаження.

hdri to cubemap
Loading...

Не змінюючи жодних налаштувань, натискаємо "Save" і вибираємо опцію розміру "4096" та "png".

convert hdri to cubemap
Loading...

І третій варіант розкладки, де кожен бік буде окремим файлом. Натискаємо "Process", а після обробки - "Save", у цьому ж діалоговому вікні.

Відразу ж, про всяк випадок збережемо ще проміжні варіанти, з розмірами "512" та "256". Пізніше ми будемо використовувати ці cubemap для відображення.

Варіанти на "512" та "256" зробимо розмитими, для імітації розмитих відблисків. Можна було звичайно використовувати функцію Prefilter для автоматичної генерації атласів прямо в PlayCanvas, з різними ступенями розмитості, але мені такий варіант не підійшов, тому я просто зробив вручну ще 2 варіанти розмитих фонів.

nx
Loading...

Наприклад варіант на "512" я розмив до такого стану. Процес простий, потрібно всі картинки завантажити в Photopea зайти в меню "Filter", далі "Gaussian Blur" і поставити значення "5.0px".

https://www.photopea.com/
photopea gaussian blur
Loading...

Потім зберегти кожну картинку. Цей процес треба зробити і для варіанта з розміром "256", тільки зробити ще більш розмитим у 2-3 рази.

Процес нескладний, тому не будемо докладно на ньому зупинятись.

На цьому етапі підготовки фону закінчено і переходимо до завантаження його в PlayCanvas.

Додавання фону до PlayCanvas

Переходимо в PlayCanvas і насамперед видаляємо все непотрібне. Вибираємо папки cube та cubemap в панелі "Assets" і видаляємо за допомогою контекстного меню. Аналогічно надаємо і з об'єктом "playcanvas" в панелі "Hierarchy".

playcanvas remove objects and cubemaps
Loading...

У нас має залишитися папка scripts в панелі "Assets" і два об'єкти в панелі "Hierarchy" - камера та світло.

Створимо папку "env" і в ній підпапку "cubemap", таким чином:

playcanvas create folder
Loading...

Для перейменування папки необхідно вибрати її і в панелі "Inspector" праворуч, ввести нове ім'я.

playcanvas created folders
Loading...

Переконаємося, що у нас обрана папка "cubemap", потім просто перетягуванням, завантажуємо наступні файли в PlayCanvas. Зверніть увагу, ми завантажуємо варіант із розміром "4096".

load cube map
Loading...

Після перетягування, через деякий час у списку з'являться шматочки cubemap.

playcanvas loaded cubemap
Loading...

Ось так просто відбувається будь-яке завантаження ассетів у PlayCanvas. Необхідно лише стежити за порядком у проекті та правильно розділяти на папки, для зручнішого пошуку та навігації у проекті.

Наступним кроком, ми створимо шейдер "CubeMap", для цього викличте контекстне меню в панелі "Assets", потім "New Asset" і зі списку можливих ассетів виберіть "CubeMap". Як ви могли здогадатися, саме цей шейдер і братиме участь як фон в налаштуваннях "Rendering".

playcanvas create cubemap
Loading...

Називаємо шейдер "Sky" і перетягуємо шматочки картинок у потрібні слоти "Faces".

playcanvas shader cubemap
Loading...

Я намалював схему, які імена мають відповідати кожній стороні куба.

cubemap unwrap
Loading...

В результаті, у вас має вийти так.

playcanvas assigned cubemap textures
Loading...

Тепер, переходимо в "Settings", сувій "Rendering" і простим перетягуванням, призначаємо шейдер "Sky" як "Skybox".

playcanvas assign cubemap as env
Loading...

Запускаємо проект кнопкою "Play". Чудово! Ми тепер бачимо панораму пустелі, все спрацювало!

playcanvas runtime view env
Loading...

Підготовка інших CubeMap

У нас ще залишилися інші cubemap з розмірами "512" та "256". За аналогією з попереднім розділом, створимо папки "cubemap_blurred" та "cubemap_superblurred".

У кожну папку додамо відповідні текстури cubemap, створимо шейдери в кожній папці з назвою "cubemap_blurred" та "cubemap_superblurred".

playcanvas cubemap blurred
Loading...

Продублюю ще раз розкладку "Faces".

cubemap unwrap
Loading...

І для варіанта з розміром "256" буде ось так.

playcanvas cubemap superblurred
Loading...

Висновок

У наступній частині уроку ми закінчимо роботу над оточенням, не пропустіть!



Ви читаєте частину: 1 2 3 4 5 6 7 8 9 10
{{commentsMsg}}
  

Ніхто не залишив коментарів
{{comment.lastname}} {{comment.name}} {{comment.date}}
{{comment.text}}
Sponsored content