Viewport Node

in polish •  2 days ago 

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

  1. W drzewie scen kliknij „Dodaj węzeł”.
  2. Wyszukaj Viewport i dodaj go do swojej sceny. Viewport będzie działał jako osobne okno renderowania.
  3. 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 dzieci Viewport. Viewport będzie renderować całą scenę z perspektywy kamery umieszczonej w nim.
  • Renderowanie sceny 2D: Dodaj elementy 2D (np. Sprite2D, Control, Label) jako dzieci Viewport. 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:
  1. Dodaj węzeł TextureRect do sceny.
  2. W inspektorze ustaw właściwość Texture na ViewportTexture, wskazując na Viewport, który chcesz wyświetlić.
  $TextureRect.texture = $Viewport.get_texture()
  • Wyświetlanie zawartości Viewport w 3D:
  1. Dodaj węzeł MeshInstance3D i przypisz mu np. PlaneMesh.
  2. 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:

  1. Dodaj węzeł Viewport do sceny.
  2. Dodaj do niego Camera3D, ustawioną tak, aby widziała obszar, który ma być widoczny na mini-mapie.
  3. Dodaj TextureRect na interfejsie użytkownika i przypisz do niego teksturę z Viewport.

Tworzenie kamer bezpieczeństwa lub luster:

  1. Dodaj węzeł Viewport i przypisz do niego Camera3D, która patrzy na obszar, który chcesz wyświetlić.
  2. Wyświetl Viewport jako teksturę na MeshInstance3D (np. na płaskiej powierzchni w świecie 3D, aby utworzyć ekran).

Ustawienia Viewport w inspektorze

  1. 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
  1. Transparent Bg:
  • Pozwala na renderowanie tła Viewport jako przezroczystego. Przydatne do nakładania zawartości Viewport na inne elementy.
  1. Render Target:
  • Określa, jak Viewport będzie renderowany. Możesz wybrać różne tryby, takie jak 3D, 2D, lub 2D No Stretch.
  1. Usage:
  • Viewport może być ustawiony do działania w trybie 2D lub 3D, 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

  1. 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.
  1. 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.
  1. 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.
  1. 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.

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!