Animar un objeto según la proximidad de otro
Lo que quieres hacer es una animación reactiva, donde la escala de un objeto A dependa de lo cerca que esté otro objeto B. En 3ds Max, esto se puede lograr fácilmente con el uso de expresiones en el Controller Script o mediante el sistema de Wire Parameters, sin necesidad de plugins externos.
Cómo hacerlo paso a paso
Primero, necesitas medir la distancia entre los dos objetos. Para eso, en el controlador de la escala de A, asignas un controlador Script Float. Dentro del script, calculas la distancia entre la posición de A y B. Según esa distancia, haces que la escala varíe entre unos límites definidos, por ejemplo, escala 1 cuando están muy cerca y escala 0 cuando se separan más allá de cierto rango.
Un ejemplo simple de código en el Script Controller sería algo así:
Código:
dist = distance $objetoA.position $objetoB.position
minDist = 0
maxDist = 100
scaleMin = 0.1
scaleMax = 1.0
-- Clamp la distancia para que no se pase de los límites
distClamped = (dist < minDist) ? minDist : (dist > maxDist) ? maxDist : dist
-- Mapeamos la distancia a escala inversa: más cerca, más grande
scaleValue = scaleMax - ((distClamped - minDist) / (maxDist - minDist)) * (scaleMax - scaleMin)
return scaleValue
Después, aplicas este controlador a la escala de A en los tres ejes para que la escala sea uniforme.
Si prefieres no usar scripting, puedes usar el sistema Wire Parameters para conectar la distancia (calculada con un helper tipo Point Helper y un Dummy) a la escala y aplicar una curva de remapeo en el Curve Editor.
También puedes usar el Reaction Manager para crear relaciones entre parámetros de diferentes objetos de forma visual.
Con un poco de scripting en el controlador de escala o usando los sistemas de wire y reacción que trae 3ds Max, puedes animar fácilmente que un objeto cambie de tamaño dependiendo de la cercanía a otro, y definir un rango para que deje de escalarse al separarse.
Y no, no necesitas magia ni un hechizo, solo algo de matemática y un par de clicks.
|Agradecer cuando alguien te ayuda es de ser agradecido|