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ść
Viewport
moż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ć
Viewport
do tworzenia różnych efektów, takich jak rozmycie, przybliżenie, lustra, portale itp. - Interakcja z elementami UI:
Viewport
moż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
Viewport
i dodaj go do swojej sceny.Viewport
bę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
.Viewport
będzie renderować całą scenę z perspektywy kamery umieszczonej w nim. - Renderowanie sceny 2D: Dodaj elementy 2D (np.
Sprite2D
,Control
,Label
) jako dzieciViewport
.Viewport
bę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
Viewport
w 2D:
- Dodaj węzeł
TextureRect
do sceny. - W inspektorze ustaw właściwość
Texture
naViewportTexture
, wskazując naViewport
, który chcesz wyświetlić.
$TextureRect.texture = $Viewport.get_texture()
- Wyświetlanie zawartości
Viewport
w 3D:
- Dodaj węzeł
MeshInstance3D
i przypisz mu np.PlaneMesh
. - Ustaw materiał dla tego węzła i użyj
ViewportTexture
jako 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ł
Viewport
do sceny. - Dodaj do niego
Camera3D
, ustawioną tak, aby widziała obszar, który ma być widoczny na mini-mapie. - Dodaj
TextureRect
na interfejsie użytkownika i przypisz do niego teksturę zViewport
.
Tworzenie kamer bezpieczeństwa lub luster:
- Dodaj węzeł
Viewport
i przypisz do niegoCamera3D
, która patrzy na obszar, który chcesz wyświetlić. - Wyświetl
Viewport
jako 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
Viewport
jako przezroczystego. Przydatne do nakładania zawartościViewport
na inne elementy.
Render Target
:
- Określa, jak
Viewport
będzie renderowany. Możesz wybrać różne tryby, takie jak3D
,2D
, lub2D No Stretch
.
Usage
:
Viewport
może być ustawiony do działania w trybie2D
lub3D
, 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)</code></pre>
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
Viewport
do renderowania odbić w lustrach lub do wyświetlania obrazów z kamer bezpieczeństwa. Dzięki ViewportTexture
moż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:
Viewport
moż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.
Published using WordPress Blurt Publisher from https://godot.com.pl.