Camera3D
w Godot 4 to węzeł kamery przeznaczony do pracy w przestrzeni 3D. Camera3D
pozwala na obserwację i interakcję ze światem 3D w grze. W Godot 4 kamera 3D została wzbogacona o dodatkowe opcje, takie jak zaawansowane efekty wizualne, różne tryby projekcji oraz dynamiczne dostosowywanie pozycji i rotacji.
Cechy Camera3D
:
- Różne tryby projekcji:
Camera3D
wspiera perspektywę (domyślną), ortograficzny oraz frustum, co pozwala na dostosowanie widoku do specyficznych potrzeb gry. - Obsługa efektów wizualnych: Wbudowane opcje takie jak rozmycie ruchu, wygładzanie krawędzi (anti-aliasing), głębia ostrości i inne efekty wizualne.
- Dynamiczna kontrola kamery: Możesz ustawić
Camera3D
jako główną kamerę, sterować jej pozycją i rotacją oraz dostosować zoom. - Culling mask: Pozwala na filtrowanie obiektów renderowanych przez kamerę na podstawie ich warstw.
Jak używać Camera3D
w Godot 4
1. Dodanie Camera3D
do sceny
- W drzewie scen kliknij „Dodaj węzeł”.
- Wyszukaj
Camera3D
i dodaj ją do swojej sceny. - Ustaw kamerę jako dziecko obiektu, który ma być śledzony (np. postaci gracza) lub umieść ją jako statyczny element w scenie.
2. Ustawienie Current
na aktywną kamerę
Aby Camera3D
była aktywna, zaznacz opcję Current
w inspektorze lub ustaw kamerę jako aktywną w skrypcie:
$Camera3D.current = true
3. Konfiguracja Camera3D
- Projection (Projekcja):
Camera3D
oferuje trzy tryby projekcji:Perspective
: Domyślna perspektywa, zapewnia realistyczny widok 3D.Orthogonal
: Widok bez perspektywy (używany np. w grach typu RTS).Frustum
: Pozwala na dostosowanie frustumu kamery, co przydaje się do niestandardowych efektów wizualnych.
$Camera3D.projection = Camera3D.PROJECTION_ORTHOGONAL
- FOV (Pole widzenia):
- Pole widzenia (ang. Field of View) kontroluje kąt, pod jakim kamera „widzi” scenę. Domyślnie wynosi 70 stopni, ale można go zmieniać, aby uzyskać szerszy lub węższy widok.
$Camera3D.fov = 90 # Szeroki kąt widzenia
- Near i Far Clip:
Near
iFar Clip
definiują zakres renderowania kamery, co oznacza, że tylko obiekty w tym zakresie od kamery będą renderowane. Przydaje się, aby zoptymalizować wydajność gry.
$Camera3D.near = 0.1
$Camera3D.far = 1000
- Depth of Field (DOF):
- Umożliwia kontrolowanie głębi ostrości, co pozwala rozmywać obiekty znajdujące się poza wybranym zakresem ostrości, tworząc efekt fotograficzny.
$Camera3D.dof_blur_far_distance = 20 # Rozmycie dla obiektów daleko od kamery
- Culling Mask:
Culling Mask
pozwala kontrolować, które warstwy są widoczne dla kamery. Możesz użyć tej funkcji, aby kamera renderowała tylko wybrane obiekty, co jest przydatne w przypadku, gdy masz wiele kamer renderujących różne elementy w scenie.
$Camera3D.cull_mask = 1 << 2 # Renderuje tylko obiekty na warstwie 2
4. Skrypt do dynamicznej kontroli Camera3D
Poniższy skrypt przedstawia przykładową kamerę, która podąża za graczem i dostosowuje zoom w zależności od sytuacji:
extends Camera3D
var target_node: Node3D
func _ready():
target_node = get_parent() # Ustawienie celu, np. gracza
current = true
func _process(delta):
if target_node:
# Aktualizacja pozycji kamery, aby podążała za graczem
global_transform.origin = lerp(global_transform.origin, target_node.global_transform.origin + Vector3(0, 5, -10), 0.1)
Przykład zmiany FOV
func zoom_in():
fov = 50 # Przybliżenie
func zoom_out():
fov = 70 # Oddalenie
5. Przykład użycia Camera3D
w różnych gatunkach gier
- Gry przygodowe i eksploracyjne:
Camera3D
może podążać za graczem z pewnej odległości, co daje graczowi dobry widok na otoczenie. Dostosowanie FOV oraz głębi ostrości nadaje realistycznego wyglądu.
- Gry akcji i FPS:
- W grach pierwszoosobowych możesz umieścić kamerę w pozycji „oczu” gracza, aby stworzyć wrażenie bycia wewnątrz postaci.
- Gry wyścigowe:
- W grach wyścigowych
Camera3D
może być ustawiona za pojazdem, a odpowiednia konfiguracja FOV i zoomu pozwoli podkreślić prędkość.
- Symulatory:
Camera3D
może być używana do symulacji widoku z różnych punktów, np. z kabiny pojazdu lub statku. Można także wykorzystać culling mask, aby renderować tylko odpowiednie elementy, jak wnętrze kokpitu.
- RTS i widok izometryczny:
- Ustawienie kamery w trybie ortogonalnym daje klasyczny, płaski widok, używany często w grach typu RTS i symulatorach budowy.
6. Zaawansowane efekty wizualne
- Motion Blur:
Motion Blur
w Camera3D
dodaje efekt rozmycia ruchu, co sprawdza się przy dużych prędkościach, np. w grach wyścigowych.
$Camera3D.motion_blur_amount = 0.2 # Ustawienie intensywności rozmycia
- Environment i Custom Background:
- Możesz przypisać środowisko
Environment
, aby kontrolować oświetlenie, tło, efekty mgły i wiele innych. Tło może być kolorowe, teksturowane lub używać gradientów.
var env = Environment.new()
env.background_mode = Environment.BG_COLOR
env.background_color = Color(0.1, 0.1, 0.1) # Ustawia kolor tła
$Camera3D.environment = env
Podsumowanie:
Camera3D
w Godot 4 to wszechstronne narzędzie do zarządzania widokiem 3D, które oferuje szeroki zakres opcji, takich jak różne tryby projekcji, zaawansowane efekty wizualne i dynamiczną kontrolę. Dzięki funkcjom takim jak FOV, głębia ostrości, culling mask i motion blur, Camera3D
pozwala na pełne dostosowanie perspektywy i atmosfery sceny 3D. Możliwość ustawienia dynamicznej pozycji i rotacji kamery umożliwia tworzenie angażujących wrażeń wizualnych dostosowanych do różnych typów gier.
Published using WordPress Blurt Publisher from https://godot.com.pl.