Wie man mehrere V-Ray-Lichter mit Spinners in MaxScript steuert

Veröffentlicht am 22. January 2026 | Aus dem Spanischen übersetzt
Captura de interfaz de 3ds Max mostrando múltiples spinners controlando parámetros de diferentes luces V-Ray, con el editor de MaxScript visible.

Das Dilemma des rebellischen Spinners in MaxScript 🎚️💡

Was für ein Durcheinander mit Lichtern und Spinners hast du dir da eingebrockt! Es scheint, als ob deine Kontrollen beim „Letzter gewinnt“ spielen. Lass uns dieses Identitätsproblem der Spinners wie gute Code-Detektive lösen.

Das konzeptionelle Problem

Was passiert ist folgendes:

„Ein Handler ohne Kontext ist wie ein Schalter ohne Verkabelung: Er klickt, aber er schaltet nichts Nützliches ein“

Technische Lösung

Du musst Closures erstellen, um den korrekten Kontext zu erfassen. Probiere diesen Ansatz:

for i = 1 to mat_sel.count do (
    local currentLight = mat_sel[i]  -- Captura la luz actual
    local spinnerName = ("spin_" + (i as string)) as name
    local lightName = (currentLight.name + ": ") as string
    
    -- Crea el spinner con el valor actual
    samp.addControl #spinner spinnerName lightName paramStr type:#integer range:[0,100, currentLight.subdivisiones] fieldWidth:40 align:#center
    
    -- Handler con closure que captura la luz correcta
    on spinnerName changed val do (
        currentLight.subdivisiones = val
    )
)

Schlüssel-Erklärung

  1. Erfasse den Kontext mit einer lokalen Variable in jeder Iteration
  2. Verwende Closures, damit der Handler „erinnert“, welches Licht zu modifizieren ist
  3. Vermeide globale Referenzen, die überschrieben werden

Falls das nicht funktioniert (manchmal ist das Handler-System von MaxScript etwas speziell), eine andere Option ist:

Merke: In MaxScript, wie im Leben, ist der Kontext alles. Mögen deine Spinners den richtigen Weg erleuchten! 💡 Und wenn alles scheitert, kannst du immer wie in den Filmen machen: „Mehr Lichter!“ (obwohl der Render dann ewig dauert).