Benutzer-Werkzeuge

Webseiten-Werkzeuge


godot:szene:d2view_in_3d_szene

2d Viewport in 3D-Szene

Um in einer 3D-Szene, Nodes aus dem Bereich 2D Node2D oder Control anzeigen zu lassen, bedarf es eines Viewports. Diese Nodes werden auf den Viewport platziert und das gelieferte Bild wird als Textur hier auf die MeshInstance (Plane) übergeben.

Hier zunächst den Szenenbaum:

Das zuständige Skript übergibt die Textur des Viewport an das Material von der MeshInstance. Hierzu sind bei der MeshInstance jedoch noch zwei Einstellungen im Inspektor nötig:

* Mesh = Plane * Material Override = Neues SpatialMaterial

Das Root-Node(Spatial) enthält das entsprechende Skript:


func _ready():
	var viewport = get_node("Viewport")
	viewport.set_clear_mode(Viewport.CLEAR_MODE_ONLY_NEXT_FRAME)
	# zwei frames abwarten
	yield(get_tree(), "idle_frame")
	yield(get_tree(), "idle_frame")
	# textur übergeben
	get_node("MeshInstance").material_override.albedo_texture = viewport.get_texture()

Dem Node2D fügen wir dies Skript zu:

var screen_size = Vector2(200, 200)
 
func _ready():
	screen_size = get_viewport_rect().size

Die Einstellungen des Viewports ändern wir wie in der Grafik ab:

Die Position der Node2D müssen wir über die Positionsangabe im Inspektor anpassen und sind erst zur Laufzeit sichtbar.

godot/szene/d2view_in_3d_szene.txt · Zuletzt geändert: 2020/10/11 22:48 (Externe Bearbeitung)