model.md 6.3 KB


title: Modele 3D w Defoldzie

brief: Ta instrukcja opisuje, jak wprowadzać modele 3D, szkielety i animacje do gry.

Modele 3D

Defold to od podstaw silnik 3D. Nawet gdy pracujesz tylko z materiałami 2D, całe renderowanie odbywa się w 3D, ale jest rzutowane ortograficznie na ekran. Defold pozwala na wykorzystywanie pełnej zawartości 3D poprzez dodawanie aktywów 3D lub Modeli do swoich kolekcji. Możesz budować gry wyłącznie w 3D, korzystając tylko z aktywów 3D, lub łączyć zawartość 3D i 2D, jak sobie życzysz. Komponent typu Model jest jednym z komponentów do obsługi elementów trójwymiarowych.

Tworzenie komponentu Modelu

Komponenty Modelu tworzy się tak samo jak każdy inny komponent obiektu gry. Możesz to zrobić na dwa sposoby:

  • Utwórz plik Modelu, klikając prawym przyciskiem myszy w przeglądarki Aktywów i wybierając opcję New... ▸ Model.
  • Utwórz komponent osadzony bezpośrednio w obiekcie gry, klikając prawym przyciskiem myszy w obiekcie gry w widoku Konspekt i wybierając Add Component ▸ Model.

Model w obiekcie gry

Po utworzeniu siatki musisz określić szereg właściwości (properties):

Właściwości Modeli

Oprócz właściwości Id, Position i Rotation istnieją następujące właściwości specyficzne dla komponentu typu Mesh:

Mesh : Siatka - ta właściwość powinna odnosić się do pliku glTF .gltf lub Collada .dae, który zawiera siatkę trójwymiarową, którą chcesz użyć. Jeśli plik zawiera wiele siatek, zostanie odczytana tylko pierwsza.

Material : Materiał - ustaw tę właściwość na materiał, który utworzyłeś i nadaje się do tekstur obiektu 3D. Dostępny jest wbudowany plik model.material, który można użyć jako punkt wyjścia.

Texture : Tekstura - ta właściwość powinna wskazywać na plik obrazu tekstury, który chcesz zastosować do obiektu.

Skeleton : Szkielet - ta właściwość powinna odnosić się do pliku glTF .gltf lub Collada .dae, który zawiera szkielet do użycia w animacji. Należy zauważyć, że Defold wymaga jednego korzenia hierarchii kostnej (root bone).

Animations : Animacje - ustaw to na Plik zestawu animacji (Animation Set), który zawiera animacje, które chcesz użyć na modelu.

Default Animation : Domyślna Animacja - to animacja (z zestawu animacji), która będzie najpierw automatycznie odtwarzana na modelu.

Manipulacja w Edytorze

Mając komponent Modelu, możesz swobodnie edytować i manipulować komponentem lub otaczającym obiektem gry za pomocą zwykłych narzędzi Edytora Sceny (Scene Editor), aby dostosować model do swoich potrzeb.

Wiggler w grze

Manipulacja w czasie rzeczywistym

Możesz manipulować modelami w czasie działania programu za pomocą różnych funkcji i właściwości (zobacz dokumentację API) w celu uzyskania informacji na temat użycia).

Animacja w czasie rzeczywistym

Defold oferuje wsparcie dla kontroli animacji w czasie działania programu. Więcej informacji można znaleźć w instrukcji dotyczącej animacji modelu:

local play_properties = { blend_duration = 0.1 }
model.play_anim("#model", "jump", go.PLAYBACK_ONCE_FORWARD, play_properties)

Kursor odtwarzania animacji można animować ręcznie lub za pomocą systemu animacji właściwości:

-- ustaw animację biegu
model.play_anim("#model", "run", go.PLAYBACK_NONE)
-- animuj kursor animacji
go.animate("#model", "cursor", go.PLAYBACK_LOOP_PINGPONG, 1, go.EASING_LINEAR, 10)

Modyfikacja właściwości Modelu

Model ma również wiele różnych właściwości, które można manipulować za pomocą funkcji go.get() i go.set():

animation : aktualna animacja modelu (typ hash) (TYLKO DO ODCZYTU). Zmieniasz animację, używając model.play_anim() (patrz wyżej).

cursor : znormalizowany kursor animacji (typ number).

material : materiał modelu (typ hash). Możesz to zmieniać za pomocą właściwości zasobów materiału i go.set(). Obejrzyj dokumentację API w celu uzyskania przykładu.

playback_rate : prędkość odtwarzania animacji (typ number).

textureN : tekstury modelu, gdzie N to 0-7 (typ hash). Możesz to zmieniać za pomocą właściwości zasobów tekstury i go.set(). Obejrzyj dokumentację API w celu uzyskania przykładu.

Materiały

Oprogramowanie 3D zwykle pozwala na ustawienie właściwości wierzchołków obiektu, takie jak kolor i nakładanie tekstur. Te informacje trafiają do pliku glTF .gltf lub Collada .dae, który eksportujesz z oprogramowania 3D. W zależności od wymagań gry będziesz musiał wybrać lub utworzyć odpowiednie i wydajne materiały dla swoich obiektów. Materiał łączy w sobie programy cieniowania (shadery) z zestawem parametrów do renderowania obiektu.

Dostępny jest prosty materiał modelu 3D w wbudowanym folderze materiałów. Jeśli potrzebujesz tworzyć niestandardowe materiały dla swoich modeli, zobacz dokumentację materiałów w celu uzyskania dalszych informacji. W dokumentacji shaderów znajdziesz informacje na temat działania takich programów cieniowania.

Stałe materiału

{% include shared/material-constants.md component='model' variable='tint' %}

tint : Kolor modelu (type vector4). Wektor 4-składnikowy jest używany do reprezentacji odcienia z wartościami X, Y, Z i W odpowiadającymi za czerwień, zielony, niebieski i kolor alfa (przezroczystości).

Renderowanie

Domyślny skryp renderowanie (render script) jest napisany pod gry 2D i nie działa dobrze z modelami 3D. Kopiując domyślny skrypt i dodając kilka lini kodu możesz szybko włączyć renderowanie obiektów trójwymiarowych dla Twoich Modeli. Na przykład:


  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

Zobacz dokumnetację renderowania w celu uzyskania dalszych informacji o skryptach renderowania.