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
O Defold é, no seu núcleo, uma engine 3D. Mesmo quando você trabalha apenas com material 2D, toda renderização é feita em 3D, mas projetada ortograficamente na tela. O Defold permite usar conteúdo 3D completo incluindo assets 3D, ou Models, nas suas coleções. Você pode criar jogos estritamente 3D com apenas assets 3D, ou misturar conteúdo 3D e 2D como quiser.
Componentes Model são criados como qualquer outro componente de objeto de jogo. Você pode fazer isso de duas formas:

Com o modelo criado, você precisa especificar algumas propriedades:
Além das propriedades Id, Position e Rotation, existem as seguintes propriedades específicas do componente:
Além das propriedades acima, também haverá um campo para atribuir um material a cada malha do modelo:
Dependendo do material, haverá uma ou mais propriedades de textura:
Com o componente model no lugar, você pode editar e manipular livremente o componente e/ou o objeto de jogo que o encapsula com as ferramentas normais do Scene Editor para mover, rotacionar e escalar o modelo como desejar.

Você pode manipular modelos em tempo de execução por meio de várias funções e propriedades diferentes (consulte a documentação da API para uso).
O Defold oferece suporte poderoso para controlar animação em tempo de execução. Mais no manual de animação de modelos:
local play_properties = { blend_duration = 0.1 }
model.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)
O cursor de reprodução da animação pode ser animado manualmente ou pelo sistema de animação de propriedades:
-- define a animação de corrida
model.play_anim("#model", "run", go.PLAYBACK_NONE)
-- anima o cursor
go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_LINEAR, 10)
Um modelo também tem várias propriedades diferentes que podem ser manipuladas usando go.get() e go.set():
animationhash) (SOMENTE LEITURA). Você altera a animação usando model.play_anim() (veja acima).cursornumber).materialhash). Você pode alterá-lo usando uma propriedade de recurso de material e go.set(). Consulte a referência da API para um exemplo.playback_ratenumber).textureNhash). Você pode alterá-las usando uma propriedade de recurso de textura e go.set(). Consulte a referência da API para um exemplo.Softwares 3D normalmente permitem definir propriedades nos vértices do seu objeto, como coloração e texturização. Essas informações vão para o arquivo glTF .gltf que você exporta do seu software 3D. Dependendo dos requisitos do seu jogo, você terá que selecionar e/ou criar materiais apropriados e performáticos para seus objetos. Um material combina programas de shader com um conjunto de parâmetros para renderização do objeto.
Há vários materiais integrados que você pode usar como ponto de partida:
Se você precisar criar materiais personalizados para seus modelos, consulte a documentação de Material para informações. O manual de Shader contém informações sobre como os programas de shader funcionam.
O material padrão model tem as seguintes constantes, que podem ser alteradas usando go.set() ou go.animate() (consulte o manual de Material para mais detalhes). Exemplos:
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). O vector4 é usado para representar o tint com x, y, z e w correspondendo ao tint vermelho, verde, azul e alfa.O script de renderização padrão é feito sob medida para jogos 2D e não funciona com modelos 3D. Mas, copiando o script de renderização padrão e adicionando algumas linhas de código ao script de renderização, você pode habilitar a renderização dos seus modelos. Por exemplo:
function init(self)
self.model_pred = render.predicate({"model"})
...
end
function update()
...
render.set_depth_mask(true)
render.enable_state(render.STATE_DEPTH_TEST)
render.set_projection(stretch_projection(-1000, 1000)) -- ortográfica
render.draw(self.model_pred)
render.set_depth_mask(false)
...
end
Veja a documentação de Render para detalhes sobre como scripts de renderização funcionam.