MaxScript에서 스피너로 여러 V-Ray 조명 제어하는 방법

2026년 02월 13일 | 스페인어에서 번역됨
Captura de interfaz de 3ds Max mostrando múltiples spinners controlando parámetros de diferentes luces V-Ray, con el editor de MaxScript visible.

MaxScript의 반항적인 스피너 딜레마 🎚️💡

조명과 스피너로 엄청난 혼란을 만들었네요! 컨트롤들이 "마지막에 들어온 사람이 이긴다" 게임을 하는 것 같아요. 코드 탐정처럼 이 스피너 정체성 문제를 해결해 보죠.

개념적 문제

발생하는 일은 다음과 같아요:

"컨텍스트 없는 핸들러는 배선 없는 스위치와 같음: 클릭은 하지만 유용한 것은 켜지 않음"

기술적 해결책

올바른 컨텍스트를 캡처하기 위해 클로저를 생성해야 합니다. 이 접근 방식을 시도해 보세요:

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
    )
)

핵심 설명

  1. 각 반복에서 로컬 변수로 컨텍스트 캡처
  2. 핸들러가 수정할 조명을 "기억"하도록 클로저 사용
  3. 덮어쓰이는 전역 참조 피하기

이게 작동하지 않으면 (때때로 MaxScript 핸들러 시스템이 특별함), 다른 옵션은:

기억하세요: MaxScript에서, 삶에서처럼 컨텍스트가 전부입니다. 스피너들이 올바른 길을 밝히길! 💡 모든 게 실패하면 영화처럼: "더 많은 조명!" (렌더가 영원히 걸리더라도).