Автор: MastaMan
Дата: Квітень 3, 2023
Оновлено: Липень 25, 2023
Ви читаєте частину: 1 2 3 4 5

Вступ

У цій серії уроків (5 частин) ми додамо інтерактивність у вже існуючий проект SVOYA Apartment на Playcanvas.

Навіть якщо ви не читали попередні частини, всі прийоми, описані в цьому уроці, можна застосувати до будь-якого проекту інтер'єру на Playcanvas.

Попередні частини

У цьому уроці ми торкнемося наступних важливих тем:

  • Створення відеотектури для матеріалу TV, а також можливість керувати Play/Pause за допомогою UI-кнопки;
  • Зміна кольорів шаф за натисканням UI-кнопки;
  • Створення матеріалів для дивана, що імітує Falloff, зміна матеріалів дивана за натисканням UI-кнопки;
  • Адаптація під мобільні пристрої, додавання Joystick;
  • Поліпшення loading.js для адаптації під мобільні пристрої.

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

Було витрачено багато часу на пошук робочих варіантів скриптів для можливості використання такого типу проектів. Тому я дуже сподіваюся на вашу підтримку Patreon.

Patreon

Переглянути Playcanvas проект онлайн.

View Playcanvas Project Online



Створення відеотектури для матеріалу TV

На жаль у Playcanvas немає підтримки відеотекстур, так як це реалізовано наприклад у Unreal Engine. Тим не менш, це можливо з використанням спеціальних скриптів.

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

Обмеження

Ось кілька обмежень, про які потрібно знати одразу:

  • Не рекомендується використовувати відео роздільною здатністю вище 720p. Я використовував відео з шириною 640 пікселів. Чим вище роздільна здатність, тим сильніше гальмує перегляд на екрані користувача. Навіть якщо все працює без проблем на ПК, це може створювати неприємні враження на мобільних пристроях.
  • Формат відео має бути MP4. Його можна завантажити як частину проекту або вказати посилання на інший веб-ресурс. Але потрібно пам'ятати, що деякі хостинги та сайти забороняють запуск відео, і ви можете зіткнутися з помилкою Cross-Origin-Access. Тому рекомендую завантажувати відео в сам проект.
  • Розмір відео має бути якнайменше. Моє відео триває 30 секунд та має розмір 3 Мб.
  • Не варто завантажувати занадто довгі відео, оскільки користувач не дивитися їх повністю. Якщо розмір проекту вже становить 40 Мб, додавання відео вагою 100 Мб не дуже логічно. Я рекомендую не перевищувати розміру відео 5 Мб.
  • Використовуйте відео без звуку, оскільки музичний супровід не завжди потрібний, а без нього розмір відео буде меншим.
  • Якщо у проекті багато відео, то не обов'язково включати все. Завжди треба думати про оптимізацію.

Відеотекстура

Щоб працювати з відео, зайдіть в папку "scripts" на панелі "Assets" і створіть в ній папку "video". В ній будуть зберігатися всі необхідні файли для відео.

video screen material
Loading...

Завантажте відео в цю папку. Важливо вимкнути опцію "Preload" для відео, щоб воно не завантажувалося разом із усім проектом, а завантажувалося потоково після запуску проекту.

upload video
Loading...
uploaded video properties
Loading...

Додайте в папку "scripts" два скрипти: "video-texture.js" та "tv-screen.js". Код цих скриптів буде наведено нижче. Щоб скачати скрипт, прокрутіть сторінку до тексту "view raw" праворуч, натисніть праву кнопку миші, потім виберіть "Save link as...".

how to save scripts
Loading...

Скрипт "video-texture.js".



Скрипт "tv-screen.js".



Виділіть наш TV у в'юпорті. Застосуйте матеріал для екрана, створений новий “VideoScreen”. Також додайте компонент “Script” та додайте два скрипти “videoTexture” та “tvScreen”.

apply videotexture and tvscreen scripts to entity
Loading...

Параметр "Play Event" повинен бути однаковим для обох скриптів. За промовчанням значення “tv:play”. Якщо у вас у сцені кілька TV, тоді необхідно перейменовувати ці Events, наприклад, на “tv2:play”.

Отже, для “videoTexture” вкажіть раніше завантажене відео у форматі MP4 у параметрі “Video Asset”. А для "tvScreen" необхідно вибрати матеріал "VideoScreen" у параметрі "Video Asset".

Примітка!
Ви можете вказати посилання на ваше відео у параметрі “Video Url”, але врахуйте, що ваш хостинг-провайдер може не дозволяти програвання відео та викликати помилку “Cross-Origin-Access”!

У моєму випадку, на жаль UVW розгортка екрану TV була неправильна, я трохи підкоригував позицію та розмір текстури у “Texture Transform” матеріалу “VideoScreen”.

video screen material texture tiling
Loading...

Результат виконаної роботи.

result video texture in playcanvas
Loading...

Управління відео, кнопки Play/Pause

Налаштування UI елементів

Додайте дві картинки Play та Pause у папку “scripts/video”.

pause
Loading...
play
Loading...

Додайте наступний скрипт.

Скрипт "play-pause-button.js".



add files for play pause ui elements
Loading...

Чудово. Давайте створимо кнопку Play/Pause. Для цього створіть папку “UI” у “Hierarchy”, потім додайте новий “Entity” під назвою “Button” з категорії “User Interface”.

add button ui element to hierarchy
Loading...

Виділіть об'єкт “Text” та змініть його тип на “Image”.

ui element text
Loading...
change type text to image
Loading...

Далі я назвали кнопку PlayPlay, картинку назвав PlayImage.

Налаштування для “PlayPause” кнопки.

settings for play pause buttons
Loading...
Важливо!
Обов'язково перенесіть кнопку в шар “World”, інакше вона просвічуватиметься через стіни!

Налаштування для “PlayImage”.
Не забудьте вибрати іконку “play.png” у розділі “Texture”!

play image settings
Loading...

Далі дублюємо “PlayImage”, називаємо “PauseImage” і змінюємо іконку на “pause.png” у розділі “Texture”!

play pause button in hierarchy view
Loading...

Переміщуємо кнопку під TV, у в'юпорт це виглядає ось так.

result play pause button under tv
Loading...

Застосування та налаштування скрипту playPauseButton

Використовуйте скрипт “playPauseButton” до нашого TV. Виберіть “Entity” для кнопки та відповідних картинок.

play pause script buttons settings
Loading...

Якщо ви зробили все правильно, відео на TV ви зможете ставити на паузу або програвати і відповідно змінюється іконка кнопки.

result tv with video and play pause controls
Loading...

Висновок

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

Для передплатників Patreon буде можливість переглядати проект SVOYA Apartment у режимі читання, а також швидке копіювання-вставка необхідних ассетів та скриптів у свій особистий проект.

Для всіх інших все необхідне знайдете на сторінці цього уроку.

Patreon


Ви читаєте частину: 1 2 3 4 5
{{commentsMsg}}
  

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