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 по сути является 3D движком. Даже когда работа ведется только с 2D-материалом, весь рендеринг выполняется в 3D, но проецируется на экран ортографически. Defold позволяет полноценно использовать 3D-контент, включая 3D-ассеты, или модели в коллекции. Игры могут быть созданы исключительно в 3D с использованием лишь 3D-ассетов, или же 3D и 2D контент может совмещаться в соответствии с целями разработчика.
Модели создаются так же, как и любой другой компонент игрового объекта. Это можно сделать двумя способами:
После того как модель создана, необходимо определить ряд ее свойств.
Помимо свойств Id, Position и Rotation существуют следующие специфичные для данного компонента свойства:
После того, как модель размещена, можно свободно редактировать и манипулировать этим компонентом и/или объемлющим игровым объектом с помощью обычных инструментов Scene Editor, перемещая, вращая и масштабируя модель по своему усмотрению.
Манипулировать моделями во время выполнения можно с помощью ряда различных функций и свойств (обращайтесь к документации по API).
Defold предоставляет мощную поддержку для управления анимацией во время выполнения. За подробностями обращайтесь к руководству по модельной анимации:
local play_properties = { blend_duration = 0.1 }
model.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)
Курсор воспроизведения анимации может быть анимирован как вручную, так и с помощью механизма анимации свойств:
-- 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)
Модель также имеет ряд различных свойств, которыми можно манипулировать с помощью go.get()
и go.set()
:
animation
hash
, только для чтения). Анимация изменяется с помощью model.play_anim()
(см. выше).cursor
number
).material
hash
). Это свойство можно изменить с помощью свойства ресурса Material и go.set()
. За примером обращайтесь к справочнику по API.playback_rate
number
).textureN
hash
). Может быть изменено с помощью свойства ресурса текстуры и go.set()
. За примером обращайтесь к справочнику по API.3D-программы обычно позволяют задавать свойства вершин объекта, такие как цвет и текстурирование. Эта информация попадает в файл Collada .dae, который экспортируется из 3D-программы. В зависимости от требований игры потребуется выбрать и/или создать подходящие и эффективные материалы для объектов. Материал сочетает в себе шейдерные программы с набором параметров для рендеринга объекта.
В папке встроенных материалов имеется простой материал для 3D-модели. Если необходимо создавать пользовательские материалы для моделей, обращайтесь к документации по материалам. Руководство по шейдерам содержит информацию о работе шейдерных программ.
The default model material has the following constants that can be changed using go.set() or go.animate() (refer to the Material manual for more details). Examples:
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)
tint
vector4
). Для представления оттенка с компонентами x, y, z и w, соответствующими красному, зеленому, синему и альфа оттенкам, используется тип vector4.Рендер-скрипт по умолчанию создан для 2D-игр и не работает с 3D-моделями. Но, скопировав этот стандартный рендер-скрипт и добавив в него несколько строк кода, можно включить рендеринг моделей. Например:
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)) -- orthographic
render.draw(self.model_pred)
render.set_depth_mask(false)
...
end
Обращайтесь к документации по рендеру за информацией о работе рендер-скриптов.
Did you spot an error or do you have a suggestion? Please let us know on GitHub!
GITHUB