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.
Checking the stable version of the documentation...
Introduzione al 3D
Creare un gioco 3D può essere impegnativo. Quella coordinata Z in più implica che molte delle tecniche comuni che hanno contribuito a semplificare i giochi 2D non funzionano più. Per facilitare la transizione, vale la pena ricordare che Godot utilizza API simili per il 2D e il 3D. La maggior parte dei nodi è la stessa e sono presenti in versione 2D e 3D. Infatti, Vale la pena consultare il tutorial sui piattaforme 3D o i tutorial sui personaggi cinematici 3D, che sono quasi identici alle loro controparti 2D.
Godot Third Person Shooter (TPS) Demo, available on the Github repository or the Asset Library.
In 3D, la matematica è un po' più complessa che in 2D. Per un'introduzione alla matematica pertinente scritta per sviluppatori di videogiochi, non per matematici o ingegneri, consultate Matematica vettoriale e Utilizzare le trasformazioni 3D.
Spazio di lavoro 3D
La modifica delle scene 3D avviene nello spazio di lavoro 3D. Questo spazio di lavoro si può selezionare manualmente, ma verrà selezionato automaticamente quando si seleziona un nodo Node3D.
Similmente al 2D, le schede sotto il selettore dello spazio di lavoro servono per passare da una scena all'altra o per crearne una nuova premendo il pulsante più (+). I pannelli sinistro e destro dovrebbero essere familiari dalla introduzione all'editor.
Sotto il selettore di scena è visibile la barra degli strumenti principale e, sotto la barra degli strumenti principale, si trova la viewport 3D.
Barra degli strumenti principale
Alcuni pulsanti nella barra degli strumenti principale sono gli stessi di quelli nello spazio di lavoro 2D. Una breve spiegazione è fornita insieme alla scorciatoia da tastiera se il cursore del mouse si trova su un pulsante per un secondo. Alcuni pulsanti possono avere funzionalità aggiuntive se si preme un altro tasto. Di seguito è riportato un riepilogo delle funzionalità principali di ciascun pulsante con la relativa scorciatoia predefinita, da sinistra a destra:
Transform Mode (Q): Enables a combined move + rotation mode for the selected nodes.
Modalità Sposta (W): Abilita la modalità di spostamento (o traslazione) per i nodi selezionati. Consultare Gizmo di spazio e di manipolazione per più dettagli.
Modalità Ruota (E): Abilita la modalità di rotazione per i nodi selezionati. Consultare Gizmo di spazio e di manipolazione per più dettagli.
Modalità Scala (R): Abilita la scalatura e visualizza i gizmo di scalatura su assi diversi per i nodi selezionati. Consultare Gizmo di spazio e di manipolazione per più dettagli.
Select Mode (Q): Allows selection of nodes in the viewport. Left clicking on a node to select one. Left clicking and dragging a rectangle selects all nodes within the rectangle's boundaries, once released. Holding Shift while selecting adds more nodes to the selection. Clicking on a selected node while holding Shift deselects the node. In this mode, you can use the gizmos to perform movement or rotation.
Mostra l'elenco dei nodi selezionabili nella posizione cliccata: come suggerisce la descrizione, questo fornisce un elenco dei nodi selezionabili nella posizione in un menu contestuale, se c'è più di un nodo nell'area cliccata.
Blocca (Ctrl + L) i nodi selezionati, impedendone la selezione e lo spostamento nella viewport. Cliccando nuovamente sul pulsante (o premendo Ctrl + Maiusc + L) si sbloccano i nodi selezionati. I nodi bloccati si possono selezionare solo nell'albero di scene. Sono facilmente identificabili da un lucchetto accanto al nome del nodo nell'albero di scene. Anche cliccando su questo lucchetto si sbloccano i nodi.
Raggruppa nodo(i) selezionato(i) (Ctrl + G). Questo permette di selezionare il nodo radice se è selezionato uno qualsiasi dei nodi figlio. Premendo Ctrl + G i nodi vengono separati. Inoltre, cliccando sul pulsante di separazione nell'albero di scene si effettua la stessa azione.
Modalità Righello (M): se abilitata, si puoi cliccare e trascinare per misurare una distanza nella scena in metri.
Usa spazio locale (T): se abilitato, i gizmo di un nodo si disegnano utilizzando l'angolo di rotazione del nodo attuale anziché gli assi globali della viewport.
Use Snap (Y): If enabled, movement, and rotation snap to grid. Snapping can also temporarily be activated using Ctrl while performing the action. The settings for changing snap options are explained below.
Use Trackball (U): When enabled, dragging the center of a node (represented by a subtle ray disc highlight) will rotate the node like a physical trackball.
Preserve Children Transform (P): When enabled, transforming a node will preserve the global transform of its children.
Commuta l'anteprima della luce solare: se nella scena non è presente alcun DirectionalLight3D, è possibile usare un'anteprima della luce solare come sorgente di luce. Consultare Anteprima di ambiente e di luce per maggiori dettagli.
Commuta l'anteprima dell'ambiente: Se nella scena non è presente alcun WorldEnvironment, è possibile usare un'anteprima dell'ambiente come segnaposto. Consultare Anteprima di ambiente e di luce per maggiori dettagli.
Modifica le impostazioni del sole e dell'ambiente (tre puntini): apre il menu per configurare le impostazioni di anteprima della luce solare e dell'ambiente. Consultare Anteprima di ambiente e di luce per maggiori dettagli.
Menu Trasforma: ha tre opzioni:
Scatta oggetto sul suolo: aggancia un oggetto a un pavimento solido.
Modale di trasformazione: apre una finestra di dialogo per regolare manualmente i parametri di trasformazione (traslazione, rotazione, scala e trasformazione).
Impostazioni dello scatto: consente di cambiare le impostazioni di trasformazione, rotazione (in gradi) e scala dell'aggancio (in percentuale).
Menu Vista: controlla le opzioni di visualizzazione e abilita viewport aggiuntive:
In questo menu è anche possibile mostrare/nascondere le griglie, che normalmente sono grandi 1x1 metro, e l'origine, dove si intersecano le linee degli assi blu, verde e rosso. Inoltre, in questo menu è possibile cambiare la visibilità di specifici tipi di gizmo.
Un occhio aperto significa che il gizmo è visibile, un occhio chiuso significa che è nascosto. Un occhio semiaperto significa che è visibile anche attraverso superfici opache.
Cliccando su Impostazioni in questo menu Vista, viene aperta una finestra per modificare i parametri Campo visivo verticale (VFOV) (in gradi), Z-Near e Z-Far.
Accanto al menu Vista, potrebbero apparire ulteriori pulsanti. Nell'immagine della barra degli strumenti all'inizio di questo capitolo, appare un ulteriore pulsante Mesh perché è selezionata una MeshInstance3D. Questo menu fornisce alcune azioni rapide o strumenti per lavorare su un nodo specifico o su una selezione.
Sistema di coordinate
Godot utilizza il sistema metrico per tutto ciò che è in 3D, dove 1 unità equivale a 1 metro. La fisica e altre aree sono calibrate per questa scala. Pertanto, tentare di utilizzare una scala diversa è solitamente una cattiva idea (a meno che tu non sappia cosa stai facendo).
Quando si lavora con risorse 3D, è sempre meglio lavorare nella scala corretta (impostare l'unità di misura su metrica nel proprio software di modellazione 3D). Godot consente di cambiare la scala post-importazione e, sebbene funzioni nella maggior parte dei casi, in rare situazioni potrebbe introdurre problemi di precisione in virgola mobile (e quindi, glitch o artefatti) in aree delicate come il rendering o la fisica. Assicurati che gli artisti lavorino sempre nella scala corretta!
La coordinata Y è usata per "su". Riguardo agli assi orizzontali X/Z, Godot utilizza un sistema di coordinate destro. Ciò significa che per la maggior parte degli oggetti che necessitano di allineamento (come luci o telecamere), l'asse Z è utilizzato come direzione di "puntamento". Questa convenzione significa approssimativamente che:
X sono i lati
Y è su/giù
Z è davanti/dietro
Consulta questa tabella per un confronto con altri software 3D:
Immagine di Freya Holmér
Gizmo di spazio e di manipolazione
Lo spostamento, la rotazione e il ridimensionamento degli oggetti nella viewport 3D si effettuano tramite i gizmo manipolatori. Ogni asse è rappresentato da un colore: rosso, verde e blu rappresentano rispettivamente X, Y e Z. Questa convenzione si applica anche alla griglia e ad altri gizmo (e anche al linguaggio shader, all'ordinamento dei componenti per i Vector3, Color, ecc.).
Alcune utili combinazioni di tasti:
Per agganciare il posizionamento o la rotazione, premere Ctrl durante lo spostamento, il ridimensionamento o la rotazione.
Per centrare la vista sull'oggetto selezionato, premere F.
Nella viewport, è possibile cliccare e tenere premute le frecce per spostare l'oggetto lungo un asse. È possibile cliccare e tenere premuti gli archi per ruotare l'oggetto. Per bloccare un asse e spostare liberamente l'oggetto lungo gli altri due assi, è possibile cliccare, tenere premuti e trascinare i rettangoli colorati.
Se la modalità di trasformazione passa da Modalità selezione a Modalità scala, le frecce saranno sostituite da cubi, che si possono trascinare per ridimensionare un oggetto come se l'oggetto venisse spostato.
Utilizzare le scorciatoie di trasformazione in stile Blender
A partire da Godot 4.2, è possibile abilitare scorciatoie in stile Blender per traslare, ruotare e cambiare la scala dei nodi. In Blender, queste scorciatoie sono:
G per traslare
R per ruotare
S per cambiare la scala
Dopo aver premuto un tasto di scelta rapida mentre la viewport dell'editor 3D è focalizzata, muovere il mouse o digitare un numero per spostare i nodi selezionati della quantità specificata in unità 3D. È possibile limitare lo spostamento a un asse specifico specificando l'asse come lettera, quindi la distanza (se si digita un valore tramite tastiera).
Ad esempio, per spostare la selezione verso l'alto di 2,5 unità, immettere la seguente sequenza in ordine (Y+ è verso l'alto in Godot):
G-Y-2-.-5-Enter
Per utilizzare le scorciatoie di trasformazione in stile Blender in Godot, vai alla scheda Scorciatoie delle Impostazioni dell'editor, quindi nella sezione "Spatial Editor":
Associa Inizia trasformazione di traslazione a G.
Associa Inizia trasformazione di rotazione a R.
Associa Inizia trasformazione di scala a S.
Infine, disassocia Modalità scala in modo che la scorciatoia non entri in conflitto con Inizia trasformazione di rotazione.
Suggerimento
Ulteriori scorciatoie sono disponibili nella pagina Editor 3D / Spatial.
Nodo Node3D
Node2D è il nodo base per il 2D. Control è il nodo base per tutto ciò che riguarda l'interfaccia grafica. Seguendo questo ragionamento, il motore 3D utilizza il nodo Node3D per tutto ciò che è 3D.
I Node3D hanno una trasformazione locale, che è relativa al nodo padre (purché anche il nodo padre sia di, o erediti da, il tipo Node3D). Questa trasformazione è accessibile sotto forma di una trasformazione 3×4 (Transform3D), oppure come 3 elementi Vector3 che rappresentano posizione, rotazione di Eulero (angoli X, Y e Z) e scala.
Contenuto 3D
A differenza del 2D, dove caricare il contenuto di un'immagine e disegnarla è semplice, in 3D è un po' più complesso. Il contenuto si deve creare con appositi strumenti 3D (chiamati anche strumenti DCC, ovvero Digital Content Creation) ed esportato in un formato file di scambio per essere importato in Godot. Ciò è necessario perché i formati 3D non sono standardizzati come le immagini.
Geometria generata
È possibile creare geometrie personalizzate usando direttamente la risorsa ArrayMesh. È sufficiente creare i propri array e utilizzare la funzione ArrayMesh.add_surface_from_arrays(). È disponibile anche una classe ausiliare, SurfaceTool, che fornisce un'API più intuitiva per indicizzare, generare normali, tangenti, ecc.
In ogni caso, questo metodo è pensato per generare geometria statica (modelli che non saranno aggiornati spesso), poiché creare array di vertici e inviarli all'API 3D ha un impatto notevole sulle prestazioni.
Nota
Per saperne di più sulla prototipazione all'interno di Godot o sull'utilizzo di strumenti esterni, consultare Prototipazione dei livelli con CSG.
Geometria immediata
Se, invece, è necessario generare una geometria semplice che sarà aggiornata spesso, Godot fornisce una risorsa ImmediateMesh speciale che si può utilizzare in un nodo MeshInstance3D. Questa fornisce un'API in modalità immediata in stile OpenGL 1.x per creare punti, linee, triangoli, ecc.
2D in 3D
Sebbene Godot sia dotato di un potente motore 2D, molti tipi di giochi usano il 2D in un ambiente 3D. Attraverso una telecamera fissa (ortogonale o prospettica) che non ruota, è possibile utilizzare nodi come Sprite3D e AnimatedSprite3D per creare giochi 2D che usufruiscono di sfondi 3D, effetti di parallasse più realistici, luci/ombre, ecc.
Lo svantaggio è, naturalmente, la maggiore complessità e le prestazioni ridotte rispetto al semplice 2D, nonché la mancanza di riferimenti quando si lavora in pixel.
Ambiente
Oltre a modificare una scena, spesso è necessario modificare anche l'ambiente. Godot fornisce un nodo WorldEnvironment che permette di cambiare il colore di sfondo, la sua modalità (ad esempio, inserendo uno skybox) e di applicare diversi tipi di effetti integrati di post-elaborazione. Gli ambienti si possono anche sovrascrivere nella telecamera.
Anteprima di ambiente e di luce
Normalmente, qualsiasi scena 3D che non abbia un nodo WorldEnvironment o un nodo DirectionalLight3D avrà un'anteprima attivata per illuminare la scena con ciò che manca.
La luce e l'ambiente di anteprima saranno visibili nella scena solo quando ci si trova nell'editor. Se si esegue la scena o si esporta il progetto, non influiranno sulla scena.
È possibile attivare o disattivare la luce e l'ambiente di anteprima dal menu in alto, cliccando sulle rispettive icone.
Il menu a discesa con i tre punti accanto a queste icone serve per regolare le proprietà dell'ambiente e della luce di anteprima, se abilitati.
Per ogni scena dello stesso progetto sono usati lo stesso sole e ambiente di anteprima. Pertanto, regola solo quello che si applicherebbe a tutte le scene per le quali ci sarà bisogno di una luce e ambiente di anteprima.
Telecamere
Non importa quanti oggetti sono posizionati nello spazio 3D, nulla sarà visualizzato a meno che non sia aggiunta alla scena anche una Camera3D. Le telecamere possono funzionare sia in proiezione ortogonale che prospettica:
Le telecamere sono associate a una viewport genitore o una viewport nonno (e visualizzano solo su di essa). Poiché la radice dell'albero di scene è una viewport, le telecamere visualizzeranno su di essa normalmente, ma se si desiderano viewport secondarie (come obiettivi di rendering o picture-in-picture), esse avranno bisogno delle proprie telecamere figlio affinché si visualizzino.
Quando si gestiscono più telecamere, per ogni viewport sono applicate le seguenti regole:
Se non sono presenti telecamere nell'albero di scene, la prima che ci entra diventerà la telecamera attiva. Le telecamere successive che entrano nella scena saranno ignorate (a meno che non siano impostate come current).
Se una telecamera ha la proprietà "current" impostata, sarà utilizzata a prescindere da qualsiasi altra telecamera nella scena. Se la proprietà è impostata, si attiverà, sostituendo la telecamera precedente.
Se una telecamera attiva esce dall'albero di scene, la prima telecamera in ordine di albero prenderà il suo posto.
Luci
L'ambiente di sfondo emette un po' di luce ambientale che appare sulle superfici. Tuttavia, senza sorgenti luminose nella scena, la scena apparirà piuttosto scura, a meno che l'ambiente di sfondo non sia molto luminoso.
La maggior parte delle scene all'aperto ha una luce direzionale (il sole o la luna), mentre le scene al chiuso hanno tipicamente diverse luci posizionali (lampade, torce, ecc.). Consultare Luci e ombre 3D per maggiori informazioni su come configurare luci in Godot.