Viewport w Godot 4 to potężny węzeł, który pozwala na renderowanie sceny lub jej fragmentu do tekstury. Działa jako oddzielna przestrzeń renderowania, którą można wykorzystać do tworzenia takich efektów jak mini-mapy, kamery bezpieczeństwa, lustra, niestandardowe efekty post-processingu, a także do łączenia interfejsu użytkownika 2D z przestrzenią 3D. Viewport może działać zarówno w przestrzeni 2D, jak i 3D, a jego wynik można wyświetlać jako teksturę na innym obiekcie lub bezpośrednio na ekranie.

Cechy Viewport w Godot 4:
- Renderowanie oddzielnych scen: Pozwala na renderowanie osobnych scen (2D lub 3D), które mogą być umieszczone w głównym świecie gry lub używane do specjalnych efektów.
- Używanie jako tekstury: Renderowaną zawartość
Viewportmożna traktować jako teksturę, którą można zastosować do innych obiektów (np. powierzchni 3D, elementów UI). - Niestandardowe efekty wizualne: Można używać
Viewportdo tworzenia różnych efektów, takich jak rozmycie, przybliżenie, lustra, portale itp. - Interakcja z elementami UI:
Viewportmoże być używany do renderowania interfejsu użytkownika (UI), co pozwala na umieszczanie interaktywnych elementów UI w przestrzeni 3D.
Jak używać Viewport w Godot 4:
1. Dodanie Viewport do sceny
- W drzewie scen kliknij „Dodaj węzeł”.
- Wyszukaj
Viewporti dodaj go do swojej sceny.Viewportbędzie działał jako osobne okno renderowania. - Możesz dodać inne węzły jako dzieci
Viewport, a wszystkie te węzły zostaną wyrenderowane w tym oddzielnym widoku.
2. Renderowanie sceny 2D lub 3D w Viewport
- Renderowanie sceny 3D: Dodaj elementy 3D (np.
MeshInstance3D,Camera3D,Light3D) jako dzieciViewport.Viewportbędzie renderować całą scenę z perspektywy kamery umieszczonej w nim. - Renderowanie sceny 2D: Dodaj elementy 2D (np.
Sprite2D,Control,Label) jako dzieciViewport.Viewportbędzie renderować te elementy jako scenę 2D.
3. Wyświetlanie zawartości Viewport jako tekstury
Aby zobaczyć zawartość Viewport w głównej scenie, musisz użyć węzła TextureRect (dla 2D) lub MeshInstance3D (dla 3D):
- Wyświetlanie zawartości
Viewportw 2D:
- Dodaj węzeł
TextureRectdo sceny. - W inspektorze ustaw właściwość
TexturenaViewportTexture, wskazując naViewport, który chcesz wyświetlić.
$TextureRect.texture = $Viewport.get_texture()
- Wyświetlanie zawartości
Viewportw 3D:
- Dodaj węzeł
MeshInstance3Di przypisz mu np.PlaneMesh. - Ustaw materiał dla tego węzła i użyj
ViewportTexturejako tekstury.
var material = StandardMaterial3D.new()
material.albedo_texture = $Viewport.get_texture()
$MeshInstance3D.set_surface_override_material(0, material)
4. Tworzenie mini-map i ekranów
Tworzenie mini-mapy w grze 3D:
- Dodaj węzeł
Viewportdo sceny. - Dodaj do niego
Camera3D, ustawioną tak, aby widziała obszar, który ma być widoczny na mini-mapie. - Dodaj
TextureRectna interfejsie użytkownika i przypisz do niego teksturę zViewport.
Tworzenie kamer bezpieczeństwa lub luster:
- Dodaj węzeł
Viewporti przypisz do niegoCamera3D, która patrzy na obszar, który chcesz wyświetlić. - Wyświetl
Viewportjako teksturę naMeshInstance3D(np. na płaskiej powierzchni w świecie 3D, aby utworzyć ekran).
Ustawienia Viewport w inspektorze
Size:
- Ustawia rozmiar okna
Viewport. Możesz kontrolować, ile pikseli szerokości i wysokości ma mieć renderowana scena.
$Viewport.size = Vector2(640, 480) # Ustawienie rozmiaru na 640x480 pikseli
Transparent Bg:
- Pozwala na renderowanie tła
Viewportjako przezroczystego. Przydatne do nakładania zawartościViewportna inne elementy.
Render Target:
- Określa, jak
Viewportbędzie renderowany. Możesz wybrać różne tryby, takie jak3D,2D, lub2D No Stretch.
Usage:
Viewportmoże być ustawiony do działania w trybie2Dlub3D, zależnie od tego, co chcesz renderować.
Przykład dynamicznego użycia Viewport w skrypcie
Przykład: Tworzenie dynamicznego lustra
extends Node3D
func _ready():
# Utwórz nowy viewport
var viewport = Viewport.new()
viewport.size = Vector2(256, 256)
viewport.usage = Viewport.USAGE_3D
add_child(viewport)
# Dodaj kamerę do viewportu
var camera = Camera3D.new()
viewport.add_child(camera)
# Utwórz MeshInstance3D z płaską siatką
var plane = MeshInstance3D.new()
plane.mesh = PlaneMesh.new()
# Ustaw teksturę viewportu jako materiał
var material = StandardMaterial3D.new()
material.albedo_texture = viewport.get_texture()
plane.set_surface_override_material(0, material)
add_child(plane)
5. Przykłady zastosowania Viewport w grach
- Mini-mapki i radary:
- Stwórz mini-mapę renderującą widok z góry przy pomocy dodatkowej kamery umieszczonej w
Viewport, a następnie wyświetl tę mini-mapę na UI.
- Lustra i ekrany w grze:
- Użyj
Viewportdo renderowania odbić w lustrach lub do wyświetlania obrazów z kamer bezpieczeństwa. DziękiViewportTexturemożesz umieścić ten obraz na dowolnej powierzchni w świecie gry.
- Dynamiczny podgląd w interfejsie:
- Twórz podglądy postaci w grze (np. menu wyboru postaci), renderując scenę w
Viewport, a następnie wyświetlając ją na UI.
- Ekrany z informacjami:
Viewportmoże renderować elementy UI, które będą widoczne w przestrzeni 3D, na przykład ekrany komputerów w grze sci-fi.
Podsumowanie:
Viewport w Godot 4 to potężne narzędzie, które pozwala na tworzenie niestandardowych efektów wizualnych poprzez renderowanie dodatkowych scen 2D lub 3D. Dzięki możliwości użycia zawartości Viewport jako tekstury, można tworzyć mini-mapy, lustra, kamery bezpieczeństwa i wiele innych interesujących funkcji. Viewport jest również kluczowy w sytuacjach, gdy potrzebujesz oddzielnej przestrzeni renderowania lub chcesz dynamicznie kontrolować, co jest wyświetlane na ekranie.





Dodaj komentarz