Node3D

in polish •  2 months ago 

Node3D w Godot to podstawowy węzeł używany do pracy z obiektami w trójwymiarowej przestrzeni. Służy jako fundament dla wszystkich elementów 3D, takich jak modele, kamery, światła czy obiekty fizyczne. Każdy węzeł 3D dziedziczy właściwości Node3D, co pozwala na obsługę pozycji, rotacji oraz skali w przestrzeni 3D.

Kluczowe cechy Node3D:

  1. Transformacje przestrzenne (Transform): Węzeł Node3D zarządza swoją pozycją, rotacją i skalą w trójwymiarowej przestrzeni. Dzięki temu możesz swobodnie przemieszczać, obracać i zmieniać rozmiar obiektów w scenie 3D.
    • Position (pozycja) – określa współrzędne w przestrzeni 3D (x, y, z).
    • Rotation (rotacja) – pozwala obracać obiekty wokół osi.
    • Scale (skala) – zmienia rozmiar obiektu wzdłuż osi x, y, z.
  2. Hierarchia węzłów: Node3D, podobnie jak inne węzły w Godot, może być częścią drzewa węzłów. Oznacza to, że węzły mogą być zagnieżdżane, co pozwala tworzyć struktury zależności między obiektami. Na przykład, kamera może być dzieckiem postaci, co sprawi, że będzie podążać za ruchem postaci.
  3. Transformacje globalne i lokalne: Każdy węzeł Node3D ma lokalne i globalne współrzędne transformacji. Lokalna pozycja węzła zależy od jego rodzica, a globalna jest pozycją w świecie 3D. Można przeliczać współrzędne między tymi dwoma systemami, co jest przydatne np. przy określaniu pozycji obiektów względem siebie.
  4. Funkcjonalność fizyczna: Node3D jest bazą dla wszystkich obiektów, które mają fizyczne właściwości, takie jak RigidBody3D, KinematicBody3D czy CollisionShape3D. Węzły te umożliwiają interakcję z systemem fizyki w grze.
  5. Rendering i interakcje: Node3D jest używany do renderowania modeli 3D w grze. Do tego węzła można dodawać obiekty graficzne, takie jak MeshInstance3D (do wyświetlania siatek) czy Sprite3D (do wyświetlania obrazów w przestrzeni 3D). Można również zagnieżdżać kamery i światła.

Typowe węzły dziedziczące po Node3D:

  1. MeshInstance3D – Używany do wyświetlania modeli 3D, takich jak obiekty, postacie czy otoczenie.
var model = MeshInstance3D.new()
model.mesh = load("res://model.tres")
add_child(model)
  • Camera3D – Odpowiada za widok gracza w scenach 3D. Może podążać za postacią, obracać się lub być stacjonarna, zależnie od potrzeb projektu.
var kamera = Camera3D.new()
kamera.position = Vector3(0, 5, -10)
add_child(kamera)
  • Light3D – Węzły oświetlenia, które służą do generowania światła w scenie. Przykłady to DirectionalLight3D, SpotLight3D i OmniLight3D.
var light = OmniLight3D.new()
light.position = Vector3(0, 10, 0)
add_child(light)
  • RigidBody3D – Węzeł fizyki, który odpowiada za obiekty podlegające grawitacji i kolizjom w przestrzeni 3D.
var body = RigidBody3D.new()
add_child(body)

Przykład hierarchii Node3D w grze 3D:

Wyobraźmy sobie prostą scenę, w której mamy postać gracza, kamerę i źródło światła:

Player (Node3D)
├── MeshInstance3D (model postaci)
├── Camera3D (kamera podążająca za graczem)
└── OmniLight3D (światło oświetlające gracza)

W tym przykładzie węzeł Player kontroluje pozycję i rotację całej postaci, a kamera i światło są zagnieżdżone jako dzieci, co oznacza, że będą automatycznie podążać za postacią, ponieważ są w tej samej hierarchii.

Transformacje:

Transformacje w Node3D są zarządzane przez macierz transformacji, która zawiera informacje o pozycji, rotacji i skali węzła. Można je zmieniać za pomocą metod, takich jak translate(), rotate() czy scale(). Oto przykład kodu, który obraca obiekt o 90 stopni wokół osi Y:

func _process(delta):
    rotate_y(deg2rad(90 * delta))

Kolizje i interakcje:

Node3D jest bazą dla węzłów fizyki 3D, takich jak CollisionShape3D i Area3D, które umożliwiają detekcję kolizji i interakcję z otoczeniem w przestrzeni 3D. Przykładowo, możesz dodać CollisionShape3D do postaci gracza, aby wykrywać zderzenia z innymi obiektami:

var collision = CollisionShape3D.new()
collision.shape = SphereShape3D.new()
add_child(collision)

Podsumowanie:

Node3D to fundament dla wszystkich elementów w trójwymiarowej przestrzeni w Godot. Zarządza pozycją, rotacją i skalą, a także stanowi podstawę dla bardziej zaawansowanych węzłów, takich jak modele, kamery, światła czy obiekty fizyczne. Node3D jest niezbędnym narzędziem w pracy z grami 3D, pozwalając na tworzenie złożonych struktur i interakcji w przestrzeni 3D.


Published using WordPress Blurt Publisher from https://godot.com.pl.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE BLURT!