This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold è, alla base, un motore 3D. Anche quando lavori soltanto con contenuti 2D, tutto il rendering avviene in 3D, ma viene proiettato ortograficamente sullo schermo. Defold ti permette di utilizzare contenuti interamente 3D includendo asset 3D, o modelli (Model), nelle tue collezioni. Puoi creare giochi esclusivamente in 3D con soli asset 3D, oppure combinare contenuti 3D e 2D come preferisci.
I componenti modello si creano come qualsiasi altro componente di un oggetto di gioco. Puoi farlo in due modi:

Una volta creato il modello, devi specificare alcune proprietà:
Oltre alle proprietà Id, Position e Rotation, sono disponibili le seguenti proprietà specifiche del componente:
Oltre alle proprietà precedenti, è presente anche un campo per assegnare un materiale a ciascuna mesh del modello:
In base al materiale, saranno presenti una o più proprietà per le texture:
Una volta aggiunto il componente modello, puoi modificare e manipolare il componente e/o l’oggetto di gioco che lo contiene con i normali strumenti dello Scene Editor, per spostare, ruotare e ridimensionare il modello come preferisci.
Puoi manipolare i modelli durante l’esecuzione tramite diverse funzioni e proprietà (consulta la documentazione API per le istruzioni d’uso).

Defold offre un potente supporto per il controllo delle animazioni durante l’esecuzione. Trovi maggiori informazioni nel manuale delle animazioni dei modelli:
local play_properties = { blend_duration = 0.1 }
model.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)
Il cursore di riproduzione dell’animazione può essere animato manualmente oppure tramite il sistema di animazione delle proprietà:
-- set the run animation
model.play_anim("#model", "run", go.PLAYBACK_NONE)
-- animate the cursor
go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_LINEAR, 10)
I modelli possono utilizzare anche animazioni glTF con forme di destinazione. I pesi delle forme di destinazione vengono animati con model.play_anim() come le altre animazioni dei modelli e possono essere letti o sovrascritti durante l’esecuzione tramite model.get_blend_weights() e model.set_blend_weights(). Per i dettagli, consulta la sezione sulle forme di destinazione nel manuale delle animazioni dei modelli.
Un modello dispone inoltre di diverse proprietà che puoi modificare utilizzando go.get() e go.set():
animationhash) (SOLA LETTURA). Puoi cambiare l’animazione utilizzando model.play_anim() (vedi sopra).cursornumber).materialhash). Puoi modificarlo utilizzando una proprietà di risorsa materiale e go.set(). Consulta il riferimento API per un esempio.playback_ratenumber).textureNhash). Puoi leggere queste proprietà con go.get() e modificarle utilizzando una proprietà di risorsa texture e go.set(). Defold supporta al massimo 16 texture per chiamata di disegno, ma il numero utilizzabile da uno shader può essere inferiore con adattatori grafici che hanno un limite più basso di campionatori di texture.I software 3D consentono generalmente di impostare proprietà sui vertici degli oggetti, come il colore e le texture. Queste informazioni vengono inserite nel file glTF .gltf o .glb che esporti dal software 3D. In base ai requisiti del tuo gioco, dovrai selezionare e/o creare materiali appropriati e efficienti per i tuoi oggetti. Un materiale combina programmi shader con un insieme di parametri per il rendering dell’oggetto.
Sono disponibili diversi materiali integrati che puoi utilizzare come punto di partenza:
I materiali integrati per i modelli usano lo spazio locale dei vertici. Per i modelli con deformazione scheletrica, lo spazio locale dei vertici consente al vertex shader di eseguire la deformazione sulla GPU tramite una texture delle matrici delle ossa; lo spazio locale dei vertici è necessario anche per l’istanziazione dei modelli. Un materiale personalizzato destinato a modelli con deformazione scheletrica sulla GPU o con istanziazione deve quindi utilizzare l’impostazione Local per lo spazio dei vertici.
La cache delle matrici delle ossa utilizza una texture RGBA32F. Se l’adattatore grafico attivo non supporta questo formato di texture, Defold non può creare un componente modello animato che utilizza un materiale nello spazio locale. Su OpenGL ES 2.0 e WebGL 1.0, il supporto dipende quindi dall’estensione dell’adattatore per le texture in virgola mobile. Per la compatibilità con un adattatore che ne è privo, utilizza un materiale personalizzato nello spazio del mondo, che esegue la deformazione scheletrica sulla CPU e non può utilizzare l’istanziazione dei modelli. Puoi regolare le dimensioni della cache nelle impostazioni del progetto per i modelli.
Se devi creare materiali personalizzati per i tuoi modelli, consulta la documentazione sui materiali. Il manuale degli shader contiene informazioni sul funzionamento dei programmi shader.
Il materiale predefinito del componente model ha le seguenti costanti, che puoi modificare con go.set() o go.animate() (consulta il manuale sui materiali per maggiori dettagli). Esempi:
go.set("#model", "tint", vmath.vector4(1,0,0,1))
go.animate("#model", "tint", go.PLAYBACK_LOOP_PINGPONG, vmath.vector4(1,0,0,1), go.EASING_LINEAR, 2)
tintvector4). Il vector4 rappresenta la tinta, con x, y, z e w corrispondenti alle componenti rosso, verde, blu e alfa.Lo script di rendering predefinito è progettato specificamente per i giochi 2D e non funziona con i modelli 3D. Tuttavia, copiando lo script di rendering predefinito e aggiungendovi poche righe di codice, puoi abilitare il rendering dei tuoi modelli. Per esempio:
function init(self)
self.model_pred = render.predicate({"model"})
...
end
function update()
...
render.set_depth_mask(true)
render.enable_state(graphics.STATE_DEPTH_TEST)
render.set_projection(stretch_projection(-1000, 1000)) -- orthographic
render.draw(self.model_pred)
render.set_depth_mask(false)
...
end
Consulta la documentazione sul rendering per i dettagli sul funzionamento degli script di rendering.