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

Компонент Model

Defold по сути является 3D движком. Даже когда работа ведется только с 2D-материалом, весь рендеринг выполняется в 3D, но проецируется на экран ортографически. Defold позволяет полноценно использовать 3D-контент, включая 3D-ассеты, или модели в коллекции. Игры могут быть созданы исключительно в 3D с использованием лишь 3D-ассетов, или же 3D и 2D контент может совмещаться в соответствии с целями разработчика.

Создание компонента Model

Модели создаются так же, как и любой другой компонент игрового объекта. Это можно сделать двумя способами:

  • Создайте файл модели, кликнув ПКМ в подходящем расположении в браузере Assets и выберите New... ▸ Model.
  • Создайте компонент, встроенный непосредственно в игровой объект, кликнув ПКМ по игровому объекту в представлении Outline и выбрав Add Component ▸ Model.

Model in game object

После того как модель создана, необходимо определить ряд ее свойств.

Свойства модели

Помимо свойств Id, Position и Rotation существуют следующие специфичные для данного компонента свойства:

Mesh
Данное свойство должно ссылаться на файл .dae (Collada), содержащий используемую сетку. Если файл содержит несколько сеток, считана будет только первая.
Material
Укажите в этом свойстве материал, подходящий для текстурированного 3D-объекта. Существует встроенный файл model.material, который можно использовать в качестве отправной точки.
Texture
Данное свойство должно указывать на файл текстуры, которую необходимо применить к объекту.
Skeleton
Данное свойство должно ссылаться на файл .dae (Collada), содержащий скелет, используемый для анимации. Следует иметь в виду, что Defold требует наличия одной корневой кости в иерархии.
Animations
Укажите в этом свойстве файл Animation Set, содержащий анимацию, требуемую для модели.
Default Animation
Это анимация (из набора анимаций), которая будет автоматически воспроизводиться в модели.

Манипулирование в редакторе

После того, как модель размещена, можно свободно редактировать и манипулировать этим компонентом и/или объемлющим игровым объектом с помощью обычных инструментов Scene Editor, перемещая, вращая и масштабируя модель по своему усмотрению.

Wiggler ingame

Манипулирование во время выполнения

Манипулировать моделями во время выполнения можно с помощью ряда различных функций и свойств (обращайтесь к документации по 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
Текстуры модели, где N — 0-7 (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

Обращайтесь к документации по рендеру за информацией о работе рендер-скриптов.

OSZAR »