Felicidades a todos los Ferneteos+Javascripteros!, les dejo una locura navideña y les cuento un poco como lo hice:

santa_layers

Dividí las partículas (nieve) en 3 capas, entonces dibujo primero la capa de fondo, luego el santa, pero intercalando con una capa de nieve para darle mas realismo. De esas 3 capas de nieve una es la que tiene partículas con colisión, es decir, la capa amarilla dibuja las partículas que se quedan en el santa.

La animación trabaja con un loop como este.
La nieve son circulos con valores aleatorios, como su tamaño, velocidad en x e y, posición de inicio, radio, opacidad, etc. Todos los ciculos inician fuera del canvas y van teniendo una velocidad en y que los hace bajar hasta el fondo, cuando llegan simplemente los destruyo y los vuelvo a crear.

Para el efecto de la nieve que se queda en santa, lo que hice fue utilizar una colisión entre segmentos (también se puede usar con un polígono) y círculos, en este caso cada copo de nieve. Entonces, por cada actualización que hay en las partículas de esa capa, me fijo si colisiona con algun segmento de santa, si es así les pongo un tiempo y no las actualizo mas en posición, dando ese efecto de que se quedan en el lugar y luego de unos segundos siguen cayendo.

** Pueden ver los segmentos haciendo click en “mostrar/ocultar segmentos” en el fiddle.

Felicidades!