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:
gltf integrato per il rendering fisicamente basato delle proprietà dei materiali glTF, un materiale model integrato per lo shading generale dei modelli oppure un materiale personalizzato. Consulta le varianti dei materiali di seguito e il manuale PBR.In base al materiale, saranno presenti una o più proprietà per le texture:
Selezionare una Scene glTF o GLB, oppure modificarne la selezione Mesh, può far comparire la proposta di compilare le associazioni di materiali e texture. Auto Fill sostituisce le associazioni esistenti con quelle della sorgente; Keep Current conserva le tue associazioni applicando la nuova selezione di scena o mesh. Consulta il flusso di importazione dei modelli.
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.
I seguenti materiali integrati sono disponibili in /builtins/materials/:
| Tipo di modello | Shading generale dei modelli | Shading PBR glTF |
|---|---|---|
| Statico, senza istanze | model.material |
gltf.material |
| Statico, con istanze | model_instanced.material |
gltf_instanced.material |
| Con skinning (animato), senza istanze | model_skinned.material |
gltf_skinned.material |
| Con skinning (animato), con istanze | model_skinned_instanced.material |
gltf_skinned_instanced.material |
I materiali gltf forniscono un’illuminazione integrata metallic/roughness usando i dati dei materiali glTF importati. Consulta il manuale PBR per associazioni delle texture, luci e shader personalizzati.
Tutti questi materiali integrati usano lo spazio locale dei vertici. Per i modelli con skinning, lo spazio locale consente al vertex shader di eseguire lo skinning sulla GPU usando una texture di matrici delle ossa; lo spazio locale è necessario anche per le istanze dei modelli. Un materiale personalizzato destinato a modelli con skinning GPU o con istanze dovrebbe quindi usare 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 disegna i materiali con il tag model, compresi quelli integrati per modelli e glTF. Per renderizzarli in uno script personalizzato, crea un predicato corrispondente e disegnalo con una vista e una proiezione adatte alla scena. 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.