extends SceneTree ## Render-Probe Boden-Wiederholung (Steppe, 256 m flach, Sandpfad): Top-Down ## 60 m + flache Perspektive. Start (BRAUCHT Rendering): ## godot --path . --rendering-driver opengl3 -s res://tests/probe_steppe_tiling.gd -- func _initialize() -> void: _run() func _run() -> void: await process_frame await process_frame var prefix := OS.get_cmdline_user_args()[0] if OS.get_cmdline_user_args().size() > 0 else "/tmp/steppe" var size := 256.0 var res := 129 var mres := SvmapIO.material_resolution_for(res, size, size) var heights := PackedFloat32Array() heights.resize(res * res) var mats := PackedByteArray() mats.resize(mres * mres) var mb := PackedByteArray() mb.resize(mres * mres) var mw := PackedByteArray() mw.resize(mres * mres) for i in 60: var t := float(i) / 59.0 TerrainField.apply_material_brush_mix(mats, mb, mw, mres, size, size, -25.0 + 50.0 * t, -10.0 + 8.0 * sin(t * 3.0), 3.0, 1, 0.0) var view := Node3D.new() view.set_script(load("res://core/viewport/terrain_mesh.gd")) root.add_child(view) view.call("set_mix", mb, mw) view.call("update_heights", heights, res, size, size, mats) view.call("set_contours", false) var cam := Camera3D.new() root.add_child(cam) cam.projection = Camera3D.PROJECTION_ORTHOGONAL cam.size = 60.0 cam.position = Vector3(0.0, 50.0, 10.01) cam.look_at(Vector3(0, 0, 10.0), Vector3(0, 0, -1)) cam.current = true for i in 4: await process_frame await RenderingServer.frame_post_draw root.get_texture().get_image().save_png(prefix + "_top.png") cam.projection = Camera3D.PROJECTION_PERSPECTIVE cam.fov = 70.0 cam.position = Vector3(0.0, 6.0, 60.0) cam.look_at(Vector3(0, 0, 20.0), Vector3.UP) for i in 3: await process_frame await RenderingServer.frame_post_draw root.get_texture().get_image().save_png(prefix + "_persp.png") quit(0)