Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

Створення фільмів

Godot може записувати не в реальному часі відео та аудіо з будь-якого 2D або 3D проекту. Цей тип запису також називається автономним рендерингом. Є багато сценаріїв, коли це корисно:

  • Запис трейлерів ігор для рекламного використання.

  • Запис роликів, які displayed as pre-recorded videos у фінальній грі. Це дозволяє використовувати параметри вищої якості (ціною розміру файлу), незалежно від апаратного забезпечення програвача.

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

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

Завдяки анімаційним функціям Godot, таким як вузол AnimationPlayer, Tweeners, частинки та шейдери, його можна ефективно використовувати для створення будь-яких типів 2D та 3D анімацій (і нерухомих зображень).

Якщо ви вже звикли до робочого процесу Godot, ви можете виявити, що ви зможете працювати продуктивніше, використовуючи Godot для рендерингу відео порівняно з Blender. Тим не менш, рендерери, призначені для використання не в реальному часі, такі як Cycles і Eevee, можуть призвести до кращих візуальних ефектів (ціною довшого часу рендерингу).

Порівняно із записом відео в реальному часі деякі переваги запису не в реальному часі включають:

  • Використовуйте будь-які налаштування графіки (включаючи надзвичайно вимогливі налаштування) незалежно від можливостей вашого обладнання. Вихідне відео завжди матиме ідеальну частоту кадрів; він ніколи не демонструватиме випадання кадрів або заїкання. Швидше апаратне забезпечення дозволить вам відтворити певну анімацію за менший час, але візуальний результат залишиться ідентичним.

  • Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана, без необхідності покладатися на спеціальні інструменти драйвера, такі як Dynamic Super Resolution від NVIDIA або Virtual Super Resolution від AMD.

  • Візуалізація з вищою частотою кадрів, ніж цільова частота кадрів відео, а потім post-process to generate high-quality motion blur. Завдяки цьому ефекти, які збігаються в кількох кадрах (наприклад, тимчасове згладжування, SDFGI та об’ємний туман), виглядають краще.

Попередження

Ця функція не призначена для зйомки кадрів у реальному часі під час гри.

Гравцям слід використовувати щось на зразок OBS Studio або SimpleScreenRecorder для запису ігрового відео, оскільки вони роблять набагато краще роботу з перехоплення композитора, ніж Godot може виконати за допомогою Vulkan або OpenGL.

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

Увімкнення режиму Movie Maker

Щоб увімкнути режим Movie Maker, клацніть кнопку «мультфільм» у верхньому правому куті редактора перед запуском проекту:

Режим Movie Maker вимкнено, клацніть піктограму «кінороліка», щоб увімкнути

Режим Movie Maker вимкнено, клацніть піктограму «кінороліка», щоб увімкнути

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

Режим Movie Maker увімкнено, ще раз клацніть піктограму «кінороліка», щоб вимкнути його

Режим Movie Maker увімкнено, ще раз клацніть піктограму «кінороліка», щоб вимкнути його

Статус Movie Maker не зберігається під час виходу з редактора, тому за потреби потрібно повторно ввімкнути режим Movie Maker після перезапуску редактора.

Примітка

Перемикання режиму Movie Maker під час виконання проекту не матиме ефекту, доки проект не буде перезапущено.

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

Налаштування проекту Movie Maker (з увімкненим перемикачем Advanced)

Налаштування проекту Movie Maker (з увімкненим перемикачем Advanced)

Крім того, ви можете встановити шлях вихідного файлу для кожної сцени, додавши метадані рядка з назвою movie_file до кореневого вузла сцени. Це використовується лише тоді, коли для основної сцени встановлено відповідну сцену або під час запуску сцени безпосередньо натисканням F6 (Cmd + R на macOS).

Перегляд інспектора після створення метаданих ``movie_file`` типу String

Перегляд інспектора після створення метаданих movie_file типу String

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

Коли ви налаштуєте та ввімкнете режим Movie Maker, він автоматично використовуватиметься під час запуску проекту з редактора.

Використання командного рядка

Movie Maker також можна ввімкнути з command line:

godot --path /path/to/your_project --write-movie output.avi

Якщо вихідний шлях є відносним, то він відносно теки проекту, а не поточного робочого каталогу. У наведеному вище прикладі файл буде записано в /path/to/your_project/output.avi. Ця поведінка подібна до аргументу командного рядка --export-release.

Оскільки вихідна роздільна здатність Movie Maker встановлюється розміром вікна перегляду, ви можете змінити розмір вікна під час запуску, щоб змінити його, якщо проект використовує disabled або canvas_items stretch mode:

godot --path /path/to/your_project --write-movie output.avi --resolution 1280x720

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

FPS запису також можна змінити в командному рядку без необхідності редагувати параметри проекту:

godot --path /path/to/your_project --write-movie output.avi --fixed-fps 30

Примітка

Аргументи командного рядка --write-movie і --fixed-fps доступні в експортованих проектах. Режим Movie Maker не можна перемикати під час роботи проекту, але ви можете використовувати метод OS.execute() для запуску другого екземпляра експортованого проекту, який записуватиме відеофайл.

Вибір вихідного формату

Формати виводу надаються класом MovieWriter. Godot має 3 вбудовані класи MovieWriters, а інші можна реалізувати за допомогою розширень:

AVI

Контейнер AVI з MJPEG для відео та нестисненого аудіо. Має стиснення відео з втратами, що забезпечує середній розмір файлів і швидке кодування. Якість стиснення з втратами можна налаштувати, змінивши Редактор > Movie Writer > Якість відео.

Отриманий файл можна переглядати в більшості відеопрогравачів, але його потрібно конвертувати в інший формат для перегляду в Інтернеті або Godot за допомогою вузла VideoStreamPlayer. MJPEG не підтримує прозорість. Вихід AVI наразі обмежений розміром файлу не більше 4 ГБ.

Щоб використовувати AVI, вкажіть шлях до файлу .avi, який потрібно створити, у налаштуваннях проекту Редактор > Автор фільму > Файл фільму.

PNG

Послідовність зображень PNG для відео та WAV для аудіо. Функції стиснення відео без втрат за рахунок великих розмірів файлів і повільного кодування. Це призначено для encoded to a video file with an external tool after recording.

Прозорість підтримується, але для властивості transparent_bg у кореневому вікні перегляду має встановлено значення true, щоб прозорість була видимою на вихідному зображенні. Цього можна досягти, увімкнувши розширене налаштування проекту Відтворення > Прозорий фон. Дисплей > Вікно > Розмір > Прозорий і Дисплей > Вікно > Прозорість на піксель > Увімкнено можна додатково ввімкнути, щоб дозволити прозорість для попереднього перегляду під час запису відео, але їх не обов’язково вмикати для вихідне зображення містить прозорість.

Щоб використовувати PNG, укажіть файл .png, який потрібно створити, у параметрах проекту Редактор > Сценарист фільму > Файл фільму. Згенерований файл .wav матиме таку саму назву, що й файл .png (без розширення).

Кастом

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

Налаштування

У розділі Редактор > Сценарист фільму у параметрах проекту є кілька параметрів, які можна налаштувати. Деякі з них відображаються лише після ввімкнення перемикача Додатково у верхньому правому куті діалогового вікна налаштувань проекту.

  • Швидкість змішування, Гц: Швидкість змішування аудіо для використання в записаному аудіо під час написання фільму. Це може відрізнятися від швидкості змішування проекту, але це значення має ділитися на записану частоту кадрів в секунду, щоб запобігти десинхронізації звуку з часом.

  • Режим динаміка: Режим динаміка для використання в записаному аудіо під час написання фільму (стерео, об’ємний звук 5.1 або об’ємний звук 7.1).

  • Якість відео: Якість зображення, яка використовується при запису відео у файл OGV або AVI, від 0.01 до 1.0 (включно). Вищі значення якості забезпечують кращий вигляд вихідного файлу, але збільшують його розмір. Рекомендовані значення якості знаходяться в діапазоні від 0,75 до 0,9. Навіть при якості 1,0 стиснення залишається з втратами. Це налаштування не впливає на якість звуку і ігнорується при запису в послідовність зображень PNG.

  • Файл фільму: вихідний шлях для фільму. Це може бути абсолютним або відносним до кореня проекту.

  • Вимкнути V-Sync: якщо ввімкнено, під час написання фільму вимагається вимкнути V-Sync. Це може пришвидшити запис відео, якщо апаратне забезпечення достатньо швидке для рендерингу, кодування та збереження відео з частотою кадрів, вищою за частоту оновлення монітора. Цей параметр не діє, якщо операційна система або графічний драйвер примусово вмикає V-Sync, але програми не можуть вимкнути його.

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

  • Якість звуку: Якість звуку, яка використовується при запису відео в файл OGV, в діапазоні від -0.1 до 1.0 (включно). Більш високі значення якості забезпечують кращу якість звуку за рахунок незначного збільшення розміру файлу. Рекомендовані значення якості знаходяться в діапазоні від 0.3 до 0.5. Навіть при якості 1.0 стиснення залишається з втратами.

  • Швидкість кодування: Рівень швидкості, який слід використовувати під час запису відео у файл OGV. Вищі рівні швидкості мають меншу ефективність стиснення. Якість зображення залишається майже незмінною.

  • Інтервал ключових кадрів: також відомий як GOP (Group Of Pictures), максимальна кількість кадрів, що використовуються при записі в файл OGV. Більш високі значення можуть покращити ефективність стиснення без втрати якості, але за рахунок уповільнення пошуку відео.

Примітка

Під час використання режимів disabled або 2d stretch, роздільна здатність вихідного файлу встановлюється розміром вікна. Обов’язково змініть розмір вікна до завершення заставки. Для цього рекомендується налаштувати додаткові параметри проекту Дисплей > Вікно > Розмір > Перевизначення ширини вікна та Перевизначення висоти вікна.

Дивіться також Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана.

Вихід із режиму Movie Maker

Щоб безпечно вийти з проекту, який використовує режим Movie Maker, скористайтеся кнопкою X у верхній частині вікна або викличте get_tree().quit() у сценарії. Ви також можете використовувати аргумент командного рядка --quit-after N, де N — це кількість кадрів, які потрібно відобразити перед виходом.

Натискання F8 (Cmd + . на macOS) або натискання Ctrl + C у терміналі, де працює Godot, не рекомендується, оскільки це призведе до створення неправильно відформатованого файлу AVI без інформації про тривалість. Для послідовностей зображень PNG, зображення PNG не будуть змінені, але пов'язаний файл WAV все одно не матиме інформації про тривалість. Файли OGV можуть мати дещо різну тривалість відео- та аудіодоріжок, але все одно залишатимуться дійсними.

Деякі відеопрогравачі все ще можуть відтворювати файли AVI або WAV із робочим відео та аудіо. Проте програмне забезпечення, яке використовує файли AVI або WAV, наприклад відеоредактори, може не відкрити файл. Using a video converter program може допомогти в таких випадках.

Якщо ви використовуєте AnimationPlayer для керування «основною дією» в сцені (наприклад, рухом камери), ви можете ввімкнути властивість Відео завершити після закінчення у відповідному вузлі AnimationPlayer. Якщо ввімкнено, ця властивість змусить Godot завершити роботу самостійно, коли відтворення анімації закінчено і система працює в режимі Movie Maker. Зауважте, що ця властивість не впливає на циклічні анімації. Тому вам потрібно переконатися, що анімація встановлена як незациклена.

Використання якісних графічних налаштувань

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

Цей тег функції також можна запитувати в сценарії, щоб збільшити параметри якості, встановлені в ресурсі середовища. Наприклад, для подальшого вдосконалення деталей SDFGI та зменшення витоку світла:

extends Node3D

func _ready():
    if OS.has_feature("movie"):
        # When recording a movie, improve SDFGI cell density
        # without decreasing its maximum distance.
        get_viewport().world_3d.environment.sdfgi_min_cell_size *= 0.25
        get_viewport().world_3d.environment.sdfgi_cascades = 8

Візуалізація з роздільною здатністю, вищою за роздільну здатність екрана

Загальну якість візуалізації можна значно покращити за допомогою візуалізації у високій роздільній здатності, наприклад 4K або 8K.

Примітка

Для 3D-рендерінгу Godot надає розширені параметри проекту Відтворення > Масштабування 3D > Масштаб, які можна встановити вище 1.0, щоб отримати згладжування супервибірки. Тоді 3D-візуалізація зменшується, коли вона малюється у вікні перегляду. Це забезпечує дорогу, але високоякісну форму згладжування без збільшення кінцевої роздільної здатності.

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

Якщо ви бажаєте відтворити 2D із вищою роздільною здатністю або якщо вам справді потрібна більша вихідна кількість необроблених пікселів для 3D-відтворення, ви можете збільшити роздільну здатність вище, ніж дозволяє екран.

За замовчуванням Godot використовує в проектах вимкнені stretch modes. Якщо використовується режим розтягування disabled або canvas_items, розмір вікна визначає роздільну здатність вихідного відео.

З іншого боку, якщо проект налаштовано на використання режиму розтягування viewport, роздільна здатність вікна перегляду визначає роздільну здатність вихідного відео. Роздільна здатність вікна перегляду встановлюється за допомогою параметрів проекту Дисплей > Вікно > Розмір > Ширина вікна перегляду і Висота вікна перегляду. Це можна використовувати для відтворення відео з роздільною здатністю, вищою за роздільну здатність екрана.

Щоб зменшити вікно під час запису, не впливаючи на роздільну здатність вихідного відео, ви можете встановити Дисплей > Вікно > Розмір > Заміна ширини вікна і Window Height Override розширені параметри проекту на значення, що перевищують 0.

Щоб застосувати заміну роздільної здатності лише під час запису фільму, ви можете змінити ці параметри за допомогою movie feature tag.

Етапи постобробки

Нижче наведено кілька типових етапів постобробки.

Примітка

У разі використання кількох етапів постобробки спробуйте виконати їх усі в одній команді FFmpeg. Це заощадить час кодування та покращить якість завдяки уникненню кількох кроків кодування з втратами.

Конвертування відео OGV/AVI в MP4

Хоча деякі платформи, такі як YouTube, підтримують пряме завантаження файлу AVI, багато інших потребують попереднього перетворення. HandBrake (GUI) і FFmpeg (CLI) є популярними інструментами з відкритим кодом для цієї мети. FFmpeg має крутішу криву навчання, але він потужніший.

Наведена нижче команда перетворює відео OGV/AVI у відео MP4 (H.264) із постійним коефіцієнтом швидкості (CRF) 15. У результаті отримується відносно великий файл, але він добре підходить для платформ, які перекодують ваші відео для зменшення їх розміру (наприклад, більшість веб-сайтів для обміну відео):

ffmpeg -i input.avi -crf 15 output.mp4

Щоб отримати менший файл ціною якості, збільште значення CRF у наведеній вище команді.

Щоб отримати файл із кращим співвідношенням розмір/якість (ціною меншого часу кодування), додайте -preset veryslow перед -crf 15 у наведеній вище команді. Навпаки, -preset veryfast можна використовувати для досягнення швидшого кодування ціною гіршого співвідношення розмір/якість.

Перетворення послідовності зображень PNG + аудіо WAV у відео

Якщо ви вирішите записати послідовність зображень у форматі PNG із файлом WAV поруч, вам потрібно перетворити його на відео, перш ніж ви зможете використовувати його в іншому місці.

Ім’я файлу для послідовності зображень у форматі PNG, згенероване Godot, завжди містить 8 цифр, починаючи з 0 із доповненням до нуля. Якщо ви вкажете вихідний шлях folder/example.png, Godot запише folder/example00000000.png, folder/example00000001.png і так далі в цій папці. Аудіо буде збережено в folder/example.wav.

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

ffmpeg -r 60 -i input%08d.png -i input.wav -crf 15 output.mp4

Якщо ви записали послідовність зображень PNG із увімкненою прозорістю, вам потрібно використовувати відеоформат, який підтримує збереження прозорості. MP4/H.264 не підтримує збереження прозорості, тому ви можете використовувати WebM/VP9 як альтернативу:

ffmpeg -r 60 -i input%08d.png -i input.wav -c:v libvpx-vp9 -crf 15 -pix_fmt yuva420p output.webm

Нарізка відео

Ви можете обрізати частини відео, які не хочете зберігати після запису відео. Наприклад, щоб відкинути все до 12,1 секунди та залишити лише 5,2 секунди відео після цієї точки:

ffmpeg -i input.avi -ss 00:00:12.10 -t 00:00:05.20 -crf 15 output.mp4

Cutting videos can also be done with the GUI tool LosslessCut.

Зміна розміру відео

Наступна команда змінює розмір відео до 1080 пікселів у висоту (1080p), зберігаючи існуюче співвідношення сторін:

ffmpeg -i input.avi -vf "scale=-1:1080" -crf 15 output.mp4

Зменшення частоти кадрів

Наступна команда змінює частоту кадрів відео до 30 FPS, відкидаючи деякі вихідні кадри, якщо їх більше у вхідному відео:

ffmpeg -i input.avi -r 30 -crf 15 output.mp4

Створення накопичувального розмиття в русі за допомогою FFmpeg

Godot не має вбудованої підтримки розмиття руху, але його все одно можна створити у записаних відео.

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

Приклад із вихідним відео з частотою 240 кадрів/с, яке створює 4-кратне розмиття в русі та зменшує вихідну частоту кадрів до 60 кадрів/с:

ffmpeg -i input.avi -vf "tmix=frames=4, fps=60" -crf 15 output.mp4

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