Curve

Collection of easing and interpolation functions for animations.

Curve

The curve module provides a variety of easing and interpolation functions. Pass any of these to Entity.animate_* calls to control acceleration, bounce, elastic effects, and more.

Functions

FunctionSignatureDescription
linearlinear(t)No easing, constant speed.
in_sinein_sine(t)Accelerating from zero velocity.
out_sineout_sine(t)Decelerating to zero velocity.
in_out_sinein_out_sine(t)Accelerate then decelerate.
in_quadin_quad(t)Quadratic easing in.
out_quadout_quad(t)Quadratic easing out.
in_out_quadin_out_quad(t)Quadratic easing in then out.
in_cubicin_cubic(t)Cubic easing in.
out_cubicout_cubic(t)Cubic easing out.
in_out_cubicin_out_cubic(t)Cubic easing in then out.
in_quartin_quart(t)Quartic easing in.
out_quartout_quart(t)Quartic easing out.
in_out_quartin_out_quart(t)Quartic easing in then out.
in_quintin_quint(t)Quintic easing in.
out_quintout_quint(t)Quintic easing out.
in_out_quintin_out_quint(t)Quintic easing in then out.
in_expoin_expo(t)Exponential easing in.
out_expoout_expo(t)Exponential easing out.
in_out_expoin_out_expo(t)Exponential easing in then out.
in_circin_circ(t)Circular easing in.
out_circout_circ(t)Circular easing out.
in_out_circin_out_circ(t)Circular easing in then out.
in_backin_back(t, magnitude=1.70158)Overshooting cubic easing in.
out_backout_back(t, magnitude=1.70158)Overshooting cubic easing out.
in_out_backin_out_back(t, magnitude=1.70158)Overshooting cubic easing in then out.
in_elasticin_elastic(t, magnitude=0.7)Elastic bounce-in effect.
out_elasticout_elastic(t, magnitude=0.7)Elastic bounce-out effect.
in_out_elasticin_out_elastic(t, magnitude=0.65)Elastic bounce-in then out.
out_bounceout_bounce(t)Bounce out.
in_bouncein_bounce(t)Bounce in.
in_out_bouncein_out_bounce(t)Bounce in then out.
zerozero(t)Always returns 0.
oneone(t)Always returns 1.
combinecombine(curve_a, curve_b, split_at)Run curve_a until split_at, then curve_b.
reversereverse(curve_function)Invert a curve’s progress.
<e>_boomerange.g. in_quad_boomerang(t)Play in_quad then reverse it.

Example

from ursina import *
from ursina.curve import combine, reverse, linear, in_expo

app = Ursina()
camera.orthographic = True
camera.fov = 16
window.color = color.black

# Render custom curve
custom = combine(linear, reverse(in_expo), 0.25)
curve_line = Entity(
    model=Mesh(
        vertices=[Vec3(i/31, custom(i/31), 0) for i in range(32)],
        mode='line', thickness=2
    ),
    color=color.light_gray
)
Text(parent=curve_line, text='custom_curve', scale=8, color=color.gray, y=-0.1)

# Example usage in animation
e = Entity(model='cube')
e.animate_y(2, duration=1, curve=in_expo)

app.run()