This commit is contained in:
2026-02-10 06:09:33 +01:00
commit 2fa0d1da53
49 changed files with 1341 additions and 0 deletions

52
Sky/sky_sphere_spinner.gd Normal file
View File

@@ -0,0 +1,52 @@
extends Node3D
@export var base_spin_speed := 0.05 # Slow ambient rotation
@export var beat_boost := 0.2 # How much faster it spins with bass
@export var smoothness := 0.05 # Controls smoothing of the beat signal
@export var music_bus := "MusicBus" # Audio bus with the SpectrumAnalyzer
@onready var analyzer = AudioServer.get_bus_effect_instance(
AudioServer.get_bus_index(music_bus), 0
)
# Reference to your mesh
@onready var mesh: MeshInstance3D = $Sketchfab_model/SphereTest_fbx/RootNode/pSphere1/pSphere1_lambert2_0
var smoothed_bass := 0.0
var mat: Material = null
func _ready() -> void:
if mesh:
# Duplicate the material so its safe to modify
var original_mat = mesh.get_active_material(0)
if original_mat:
mat = original_mat.duplicate()
mesh.set_surface_override_material(0, mat)
else:
push_warning("Mesh has no material!")
else:
push_error("Mesh path is incorrect!")
func _process(delta: float) -> void:
if not analyzer:
return
# Measure low frequencies for the "beat"
var bass = analyzer.get_magnitude_for_frequency_range(20, 200)
var bass_strength = bass.length() * 5.0
# Smooth out the data
smoothed_bass = lerp(smoothed_bass, bass_strength, smoothness)
# Determine final spin speed
var spin_speed = base_spin_speed + smoothed_bass * beat_boost
# Apply slow rotation around Y axis (typical for skyboxes)
rotation.y += spin_speed * delta
# Optionally, adjust shader/material color or parameter
if mat and mat is StandardMaterial3D:
var brightness = 0.6 + smoothed_bass * 0.3
mat.albedo_color = Color(brightness, brightness, brightness)
elif mat and mat is ShaderMaterial:
mat.set_shader_parameter("intensity", 1.0 + smoothed_bass * 0.5)