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.

Creare film

Godot può registrare video e audio non in tempo reale da qualsiasi progetto 2D o 3D. Questo tipo di registrazione è anche chiamato rendering offline. Sono molti gli scenari in cui può rivelarsi utile:

  • Registrare trailer di gioco per uso promozionale.

  • Registrare cutscene che verranno visualizzati come video preregistrati nel gioco finale. Questo consente di utilizzare impostazioni di qualità più elevate (a scapito delle dimensioni del file), indipendentemente dall'hardware del giocatore.

  • Registrazione di animazioni generate proceduralmente o motion design. L'interazione con l'utente rimane possibile durante la registrazione video e può essere incluso anche l'audio (anche se non sarà possibile ascoltarlo durante la registrazione).

  • Comparing the visual output of graphics settings, shaders, or rendering techniques in an animated scene.

Grazie alle funzionalità di animazione di Godot, come il nodo AnimationPlayer, i Tweener, le particelle e gli shader, è possibile creare effettivamente qualsiasi tipo di animazione 2D e 3D (e immagini fisse).

Se hai già familiarità con il flusso di lavoro di Godot, potresti scoprire di essere più produttivo utilizzandolo per renderizzare video rispetto a Blender. Detto questo, i renderer progettati per l'utilizzo non in tempo reale, come Cycles ed Eevee, possono produrre risultati visivi migliori (a scapito di tempi di rendering più lunghi).

Rispetto alla registrazione video in tempo reale, alcuni vantaggi della registrazione non in tempo reale includono:

  • Use any graphics settings (including extremely demanding settings) regardless of your hardware's capabilities. The output video will always have perfect frame pacing; it will never exhibit dropped frames or stuttering. Faster hardware will allow you to render a given animation in less time, but the visual output remains identical.

  • Renderizzare a una risoluzione superiore a quella dello schermo, senza dover ricorrere a strumenti specifici dei driver come Dynamic Super Resolution di NVIDIA o Virtual Super Resolution di AMD.

  • Render at a higher framerate than the video's target framerate, then post-process to generate high-quality motion blur. This also makes effects that converge over several frames (such as temporal antialiasing, SDFGI and volumetric fog) look better.

Avvertimento

Questa funzionalità non è progettata per catturare riprese in tempo reale durante il gioco.

Players should use something like OBS Studio or SimpleScreenRecorder to record gameplay videos, as they do a much better job at intercepting the compositor than Godot can do using Vulkan or OpenGL natively.

Detto questo, se il gioco viene eseguito a velocità quasi reale durante la registrazione, puoi comunque utilizzare questa funzionalità (ma non avrà la riproduzione audio, poiché l'audio viene salvato direttamente nel file video).

Abilitare la modalità Movie Maker

Per abilitare la modalità Movie Maker, clicca sul pulsante a "bobina di filmato" nell'angolo in alto a destra dell'editor prima di avviare il progetto:

La modalità Movie Maker è disabilitata, clicca sull'icona a "bobina di filmato" per abilitarla

La modalità Movie Maker è disabilitata, clicca sull'icona a "bobina di filmato" per abilitarla

Verrà visualizzato un menu con le opzioni per attivare la modalità Movie Maker e per accedere alle impostazioni. L'icona assume uno sfondo che corrisponde al colore d'accento quando la modalità Movie Maker è abilitata:

La modalità Movie Maker è abilitata, clicca nuovamente sull'icona a "bobina di filmato" per disabilitarla

La modalità Movie Maker è abilitata, clicca nuovamente sull'icona a "bobina di filmato" per disabilitarla

La modalità Movie Maker non è mantenuta alla chiusura dell'editor, quindi, se ce ne bisogno, è necessario riabilitare la modalità Movie Maker dopo aver riavviato l'editor.

Nota

L'attivazione/disattivazione della modalità Movie Maker durante l'esecuzione del progetto non avrà alcun effetto fino al riavvio del progetto stesso.

Prima di poter registrare video eseguendo il progetto, è necessario configurare il percorso del file risultante. È possibile impostare questo percorso per tutte le scene nelle Impostazioni del progetto:

Impostazioni del progetto per Movie Maker (con impostazioni avanzate abilitate)

Impostazioni del progetto per Movie Maker (con impostazioni avanzate abilitate)

In alternativa, è possibile impostare il percorso del file risultante per ogni singola scena aggiungendo un metadato di tipo String con il nome movie_file al nodo radice della scena. Questa opzione viene utilizzata solo quando la scena principale è impostata sulla scena in questione, oppure quando si esegue la scena direttamente premendo F6 (Cmd + R su macOS).

Vista nell'Ispettore dopo aver creato un metadato ``movie_file`` di tipo String

Vista nell'Ispettore dopo aver creato un metadato movie_file di tipo String

Il percorso specificato nelle impostazioni del progetto o nei metadati può essere assoluto o relativo alla cartella principale del progetto.

Una volta configurata e attivata la modalità Movie Maker, questa sarà utilizzata automaticamente all'avvio del progetto dall'editor.

Utilizzo tramite riga di comando

È possibile abilitare la modalità Movie Maker anche dalla riga di comando:

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

Se il percorso di output è relativo, allora è relativo alla cartella del progetto, non alla cartella attuale di lavoro. Nell'esempio precedente, il file verrà scritto in /path/to/your_project/output.avi. Questo comportamento è simile all'argomento della riga di comando --export-release.

Poiché la risoluzione di output di Movie Maker è definita dalle dimensioni della viewport, è possibile regolare le dimensioni della finestra all'avvio per sovrascriverla se il progetto usa la modalità di stiramento disabled o canvas_items:

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

Si noti che le dimensioni della finestra sono limitate dalla risoluzione dello schermo. Consultare Renderizzare a una risoluzione superiore alla risoluzione dello schermo se bisogna registrare un video a una risoluzione superiore a quella dello schermo.

È possibile anche sovrascrivere gli FPS di registrazione dalla riga di comando, senza dover modificare le Impostazioni del progetto:

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

Nota

Gli argomenti della riga di comando --write-movie e --fixed-fps sono entrambi disponibili nei progetti esportati. La modalità Movie Maker non si può cambiare mentre il progetto è in esecuzione, ma è possibile utilizzare il metodo OS.execute() per eseguire una seconda istanza del progetto esportato che registrerà un file video.

Scegliere un formato di output

I formati di output sono forniti dalla classe MovieWriter. Godot ha 3 classi MovieWriter integrate, e altre si possono implementare tramite estensioni:

AVI

Contenitore AVI con MJPEG per video e audio non compresso. Offre una compressione video con perdita di dati, che risulta in file di medie dimensioni e una codifica rapida. La qualità della compressione si può regolare modificando Editor > Movie Writer > Qualità video.

È possibile visualizzare il file risultante nella maggior parte dei lettori video, ma deve essere convertito in un altro formato per la visualizzazione sul web o da Godot con il nodo VideoStreamPlayer. MJPEG non supporta la trasparenza. L'output AVI è attualmente limitato a un file grande massimo 4 GB.

Per utilizzare il formato AVI, specificare il percorso di un file .avi da creare nell'impostazione del progetto Editor > Movie Writer > File del filmato.

PNG

Sequenza di immagini PNG per il video e WAV per l'audio. Offre compressione video senza perdita di dati, a scapito di file grandi e codifica lenta. È progettato per essere codificato in un file video con uno strumento esterno dopo la registrazione.

La trasparenza è supportata, ma la proprietà transparent_bg della viewport principale deve essere impostata su true affinché l'immagine risultante contenga la trasparenza. Ciò può essere ottenuto abilitando l'impostazione avanzata del progetto Rendering > Sfondo trasparente. È possibile abilitare facoltativamente Display > Finestra > Dimensioni > Trasparente e Display > Finestra > Trasparenza per pixel > Abilitata per vedere in anteprima la trasparenza durante la registrazione del video, ma non è necessario che siano abilitati affinché l'immagine risultante contenga la trasparenza.

Per utilizzare il formato PNG, specificare un file .png da creare nell'impostazione del progetto Editor > Movie Writer > File del filmato. Il file .wav generato avrà lo stesso nome del file .png (senza l'estensione).

Personalizzato

Se è necessario codificare direttamente in un formato diverso o inoltrare un flusso a software di terze parti, è possibile estendere la classe MovieWriter per creare i propri script di scrittura video. In genere, per motivi di prestazioni, è consigliabile utilizzare GDExtension a questo scopo.

Configurazione

Nella sezione Editor > Movie Writer delle Impostazioni del progetto, sono disponibili diverse opzioni configurabili. Alcune di esse appaiono solo dopo aver attivato l'interruttore Avanzate nell'angolo in alto a destra della finestra Impostazioni del progetto.

  • Mix Rate Hz: la frequenza di mixaggio audio da utilizzare nell'audio registrato durante la scrittura di un filmato. Può essere diversa dalla frequenza di mixaggio del progetto, ma questo valore deve essere divisibile per i FPS registrati per evitare che l'audio si desincronizzi nel corso del tempo.

  • Speaker Mode: la modalità di altoparlante da utilizzare nell'audio registrato durante la scrittura di un video (stereo, surround 5.1 o surround 7.1).

  • Qualità video: la qualità dell'immagine da utilizzare durante la scrittura di un video in un file OGV o AVI, compresa tra 0.01 e 1.0 (inclusi). Valori di qualità più elevati producono un risultato di migliore qualità a scapito di dimensioni maggiori del file. I valori di qualità consigliati sono compresi tra 0.75 e 0.9. Anche con una qualità di 1.0, la compressione rimane con perdita di dati. Questa impostazione non influisce sulla qualità audio ed è ignorata durante la scrittura in una sequenza di immagini PNG.

  • Movie File: il percorso di output per il video. Può essere assoluto o relativo alla cartella principale del progetto.

  • Disable V-Sync: se abilitata, richiede di disabilitare il V-Sync durante la scrittura di un filmato. Ciò può velocizzare la scrittura del video se l'hardware è veloce abbastanza da renderizzare, codificare e salvare il video a una frequenza di fotogrammi superiore alla frequenza di aggiornamento del monitor. Questa impostazione non ha effetto se il sistema operativo o il driver grafico impongono il V-Sync senza possibilità per le applicazioni di disabilitarlo.

  • FPS: The rendered frames per second in the output movie. Higher values result in smoother animation, at the cost of longer rendering times and larger output file sizes. Most video hosting platforms do not support FPS values higher than 60, but you can use a higher value and use that to generate motion blur.

  • Qualità audio: la qualità audio da utilizzare durante la scrittura di un video in un file OGV, compresa tra -0.1 e 1.0 (inclusi). Valori di qualità più elevati risultano in una migliore qualità audio a scapito di dimensioni leggermente maggiori del file. I valori di qualità consigliati sono compresi tra 0.3 e 0.5. Anche con una qualità di 1.0, la compressione rimane con perdita di dati.

  • Velocità di codifica: Il livello di velocità da utilizzare durante la scrittura di un video in un file OGV. Livelli di velocità più elevati comportano una minore efficienza di compressione. La qualità dell'immagine rimane pressoché invariata.

  • Keyframe Interval: Also known as GOP (Group Of Pictures), the maximum number of inter-frames to use when writing to an OGV file. Higher values can improve compression efficiency without quality loss but at the cost of slower video seeks.

Nota

Quando si usano le modalità di stiramento disabled o 2d, la risoluzione del file risultante è impostata dalle dimensioni della finestra. Assicurarsi di ridimensionare la finestra prima che la schermata di avvio sia terminata. A tale scopo, si consiglia di regolare le impostazioni avanzate del progetto Display > Finestra > Dimensioni > Sovrascrivi larghezza della finestra e Sovrascrivi altezza della finestra.

Consultare anche Renderizzare a una risoluzione superiore alla risoluzione dello schermo.

Uscire dalla modalità Movie Maker

Per chiudere in tutta sicurezza un progetto che sta usando la modalità Movie Maker, premere il pulsante X in alto la finestra oppure chiamare get_tree().quit() in uno script. Si può anche usare l'argomento della riga di comando --quit-after N dove N è il numero di fotogrammi da renderizzare prima di uscire.

Premere F8 (Cmd + . su macOS) o Ctrl + C nel terminale in cui è in esecuzione Godot è sconsigliato, poiché si otterrà un file AVI formattato in modo errato e senza informazioni sulla durata. Per le sequenze di immagini PNG, le immagini PNG non saranno alterate negativamente, ma il file WAV associato non conterrà comunque informazioni sulla durata. I file OGV potrebbero presentare tracce video e audio di durata leggermente diversa, ma rimarranno comunque validi.

Alcuni lettori video potrebbero comunque essere in grado di riprodurre il file AVI o WAV con video e audio funzionanti. Tuttavia, i software che utilizzano file AVI o WAV, come gli editor video, potrebbero non essere in grado di aprirlo. In questi casi, può essere utile usare un programma di conversione video.

Se si sta usando un AnimationPlayer per controllare un'"azione principale" nella scena (come il movimento della telecamera), si può abilitare la proprietà Movie Quit On Finish sul nodo AnimationPlayer in questione. Quando questa proprietà è abilitata, Godot si chiuderà automaticamente al termine della riproduzione di un'animazione e il motore è in esecuzione in modalità Movie Maker. Si noti che questa proprietà non ha effetto sulle animazioni in ripetizione. Pertanto, bisogna assicurarsi che l'animazione non sia impostata per ripetersi.

Utilizzare impostazioni grafiche di alta qualità

Il tag di funzionalità movie si può usare per sovrascrivere impostazioni specifiche del progetto. Questo è utile per abilitare impostazioni grafiche di alta qualità che non sarebbero abbastanza veloci da eseguire in tempo reale sul proprio hardware. Ricordare che impostare ogni parametro al valore massimo può comunque rallentare la velocità di salvataggio del filmato, soprattutto quando si registra a risoluzioni più alte. Pertanto, si consiglia di aumentare le impostazioni grafiche solo se ciò fa una differenza significativa all'immagine risultante.

È possibile interrogare questo tag di funzionalità anche in uno script per aumentare le impostazioni di qualità definite nella risorsa Environment . Ad esempio, per migliorare ulteriormente il dettaglio dell'SDFGI e ridurre le perdite di luce:

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

Renderizzare a una risoluzione superiore alla risoluzione dello schermo

La qualità complessiva di rendering può essere migliorata significativamente utilizzando risoluzioni elevate come 4K o 8K.

Nota

For 3D rendering, Godot provides a Rendering > Scaling 3D > Scale advanced project setting, which can be set above 1.0 to obtain supersample antialiasing. The 3D rendering is then downsampled when it's drawn on the viewport. This provides an expensive but high-quality form of antialiasing, without increasing the final output resolution.

Consider using this project setting first, as it avoids slowing down movie writing speeds and increasing output file size compared to actually increasing the output resolution.

If you wish to render 2D at a higher resolution, or if you actually need the higher raw pixel output for 3D rendering, you can increase the resolution above what the screen allows.

Come predefinito, Godot usa le modalità di stiramento disabled nei progetti. Se si usa la modalità di stiramento disabled o canvas_items, la dimensione della finestra determina la risoluzione del video risultante.

D'altra parte, se il progetto è configurato per utilizzare la modalità di stiramento viewport, la risoluzione della viewport determina la risoluzione del video risultante. La risoluzione della viewport è impostata tramite le impostazioni del progetto Schermo > Finestra > Dimensioni > Larghezza della viewport e Altezza della viewport. Questo permette di renderizzare un video a una risoluzione più grande di quella dello schermo.

To make the window smaller during recording without affecting the output video resolution, you can set the Display > Window > Size > Window Width Override and Window Height Override advanced project settings to values greater than 0.

Per applicare una sovrascrittura della risoluzione solo durante la registrazione di un filmato, è possibile sovrascrivere tali impostazioni con il tag di funzionalità movie.

Passaggi di post-elaborazione

Di seguito sono elencati alcuni passaggi comuni di post-elaborazione.

Nota

Quando si usano diversi passaggi di post-elaborazione, è consigliabile effettuarli tutti con un singolo comando FFmpeg. Questo consentirà di risparmiare tempo di codifica e migliorare la qualità, evitando molteplici passaggi di codifica con perdita di dati.

Convertire un video OGV/AVI in MP4

Mentre alcune piattaforme, come YouTube, consentono di caricare direttamente il file AVI, molte altre richiedono una conversione preliminare. HandBrake (GUI) e FFmpeg (CLI) sono strumenti open source molto diffusi per questo scopo. FFmpeg è più complesso da imparare, ma è anche più potente.

Il comando seguente converte un video OGV/AVI in un video MP4 (H.264) con un fattore di frequenza costante (CRF) di 15. Il risultato è un file relativamente grande, ma è adatto alle piattaforme che ricodificano i video per ridurne le dimensioni (come la maggior parte dei siti di condivisione video):

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

Per ottenere un file più piccolo a scapito della qualità, aumentare il valore di CRF nel comando precedente.

Per ottenere un file con un rapporto migliore di dimensione/qualità (a scapito di tempi di codifica più lunghi), aggiungere -preset veryslow prima di -crf 15 nel comando precedente. Al contrario, è possibile utilizzare -preset veryfast per ottenere una codifica più veloce a scapito di un rapporto peggiore di dimensione/qualità.

Convertire una sequenza di immagini PNG + audio WAV in un video

Se si sceglie di registrare una sequenza di immagini PNG con un file WAV associato, è necessario convertirla in video prima di poterla usare altrove.

Il nome di file per la sequenza di immagini PNG generata da Godot contiene sempre 8 cifre, a partire da 0 con numeri preceduti da zeri. Se si specifica un percorso di output come folder/example.png, Godot scriverà folder/example00000000.png, folder/example00000001.png e così via in quella cartella. L'audio verrà salvato in folder/example.wav.

Il valore di FPS viene specificato tramite l'argomento -r. Deve corrispondere al valore di FPS specificato durante la registrazione. Se no, il video apparirà rallentato o accelerato e l'audio non sarà sincronizzato con il video.

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

Se hai registrato una sequenza di immagini PNG con la trasparenza abilitata, devi utilizzare un formato video che supporti la memorizzazione della trasparenza. MP4/H.264 non supporta la memorizzazione della trasparenza, quindi puoi utilizzare WebM/VP9 come alternativa:

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

Ritagliare un video

Dopo la registrazione del video, è possibile tagliare le parti indesiderate. Ad esempio, è possibile eliminare tutto ciò che precede i 12.1 secondi e conservare solo i 5.2 secondi successivi:

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

Si possono tagliare video anche con lo strumento GUI LosslessCut.

Ridimensionare un video

Il seguente comando ridimensiona un video a un'altezza di 1080 pixel (1080p), mantenendo il rapporto di aspetto originale:

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

Ridurre il framerate

Il seguente comando cambia la frequenza dei fotogrammi di un video a 30 FPS, eliminando alcuni dei fotogrammi originali se ce ne sono di più nel video di input:

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

Generare sfocatura di movimento cumulativa con FFmpeg

Godot non ha supporto integrato per la sfocatura di movimento, ma è comunque possibile crearla nei video registrati.

If you record the video at a multiple of the original framerate, you can blend the frames together then reduce the frameate to produce a video with accumulation motion blur. This motion blur can look very good, but it can take a long time to generate since you have to render many more frames per second (on top of the time spent on post-processing).

Esempio con un video sorgente a 240 FPS, che genera un effetto motion blur 4x e riduce il frame rate risultante a 60 FPS:

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

This also makes effects that converge over several frames (such as temporal antialiasing, SDFGI and volumetric fog) converge faster and therefore look better, since they'll be able to work with more data at a given time. See Ridurre il framerate if you want to get this benefit without adding motion blur.