¿Cómo hacer el rebote de una pelota con After Effects y sin plugin?
En este tutorial rápido de After Effects aprenderemos cómo animar el rebote de una pelota. Para ello usaremos expresiones con las que conseguiremos un resultado natural y sin mucho esfuerzo.
Al final del post encontrarás la carpeta del proyecto con todos los materiales, además del archivo After Effects con el ejercicio ya resuelto para que puedas revisar la forma en que está hecho.
Paso a paso
Expresión Bounce Back:
- Presiona P para mostrar la propiedad de Posición.
- Crea dos keyframes de posición para mover la pelota de arriba abajo.
- Con la tecla ALT pulsada, haz clic sobre el reloj de Posición y remplaza el texto que muestra por la siguiente expresión:
e = .7; g = 5000; nMax = 9; n = 0; if (numKeys > 0){ n = nearestKey(time).index; if (key(n).time > time) n--; } if (n > 0){ t = time - key(n).time; v = -velocityAtTime(key(n).time - .001)*e; vl = length(v); if (value instanceof Array){ vu = (vl > 0) ? normalize(v) : [0,0,0]; }else{ vu = (v < 0) ? -1 : 1; } tCur = 0; segDur = 2*vl/g; tNext = segDur; nb = 1; // number of bounces while (tNext < t && nb <= nMax){ vl *= e; segDur *= e; tCur = tNext; tNext += segDur; nb++ } if(nb <= nMax){ delta = t - tCur; value + vu*delta*(vl - g*delta/2); }else{ value } }else value
¡Ya lo tienes!
Prueba a cambiar los valores (elasticidad, gravedad, número máximo de rebotes) y observa los resultados:
e = elasticidad
g = gravedad
nMax = número máximo de rebotes
Expresión Bounce:
Repite los pasos anteriores, pero en esta ocasión copia la expresión Bounce que te dejo a continuación
elev = degreesToRadians(75); v = 1900; e = .7; f = .5; g = 4000; nMax = 9; tLaunch = .4; vy = v*Math.sin(elev); vx = v*Math.cos(elev); if (time >= tLaunch){ t = time - tLaunch; tCur = 0; segDur = 2*vy/g; tNext = segDur; d = 0; // x distance traveled nb = 0; // number of bounces while (tNext < t && nb <= nMax){ d += vx*segDur; vy *= e; vx *= f; segDur *= e; tCur = tNext; tNext += segDur; nb++ } if(nb <= nMax){ delta = t - tCur; x = d + delta*vx; y = delta*(vy - g*delta/2); }else{ x = d; y = 0; } value + [x,-y] }else value
¡Ya lo tienes!
Descarga el proyecto con los materiales y el ejercicio ya hecho.
Tutorial 3: Pelota rebotando con After Effects
Las expresiones de este tutorial son creación de Dan Ebberts, motionscript.com