El siguiente paso será conseguir que las partículas reboten en la esfera. Para eso colocaremos un nodo collision al final de todo, después del nodo force y lo activaremos como parte final del sistema haciendo click en la parte derecha del nodo para que se vuelva azul, ahora tenemos que elegir la geometría con la que chocaran las partículas.
Al principio, cuando creamos el pop network, colocamos la esfera en el segundo input y el suelo en el tercer input, así que, utilizaremos el segundo input para las colisiones. Eso lo especificamos en las propiedades de colisión, en geometry source, seleccionando use second context geometry, en un principio dejaremos hint como static geometry, ya que la esfera no se va a mover, pero si esta se moviera, habría que cambiarlo a translating geometry. Si se deformara, habría que convertirla a triángulos y utilizar deforming geometry, pero eso lo veremos más adelante.
Si ahora le damos a play, veremos que las partículas desaparecen al chocar con la esfera. Esto es porque por defecto, es el comportamiento que se asigna a las colisiones. Para cambiarlo, tenemos que ir a la pestaña de behavior y cambiar el behavior a bounce on collision, al darle ahora a play podremos ver cómo las partículas rebotan bastante al chocar con la esfera.
Existen dos parámetros en la misma pestaña llamados gain Tangent y gain normal. Estos van a controlar la dirección e intensidad del bote.
El gain Tangent es un multiplicador del Vector tangente a la superficie, usando como Vector inicial el de velocidad de la partícula. Es decir, si la partícula va hacia una dirección al chocar con la esfera, la partícula seguirá la misma dirección, pero en la superficie de la esfera. Podemos ver el efecto poniendo el gain normal a 0. Las partículas resbalaran por la superficie de la esfera.
El gain normal es un multiplicador del Vector normal de la superficie. Las normales de las superficies suelen ser vectores perpendiculares a las mismas (aunque es posible modificarlos), por lo que las partículas rebotaran hacia afuera del objeto siguiedo un Vector perpendicular a la superficie. Podemos ver el efecto poniendo el gain Tangent a 0. Las partículas rebotaran con un ángulo de 90 grados a la superficie de la esfera.
En la vida real, existen muchos factores que determinaran la velocidad y trayectoria resultantes (el Vector) después de una colisión. Hay que tener en cuenta la fricción y la forma de los objetos, pero siempre se perderá energía después de una colisión. En definitica, cada partícula tendría una colisión diferente en la vida real, en mayor o menor medida.
Para simular esto, usaremos unas expresiones simples en gain Tangent y gain normal usando fit y Rand.
[i]la expresión fit01(a,b,c) interpretara el valor a entre 0 y 1 y asignara b al 0 y c al 1 y hará una interpolación de los valores intermedios de forma lineal, por ejemplo, fit01(0,0.5,1) nos dará como resultado 0.5, fit(0.5,0.5,1) nos dará 0.75 y fit(1,0.5,1) nos dará 1.
[/i]en gain Tangent pondremos fit01(Rand($id+4),0.4,0.8)
Y en gain normal pondremos fit01(Rand($id+5),0.2,0.6).
Con esto conseguiremos valores aleatorios en el gain Tangent de entre 0.4 y 0.8 y de 0.3 y 0.6 en el gain normal. La razón de esto es que no queremos que los valores se acerquen a 0 o a 1, ya que eso sería poco habitual en la vida real. Por supuesto cada caso es distinto y hay más formas de conseguir esos valores.
Por ejemplo, fit01(Rand($id+4),0.4,0.8) sería lo mismo que (Rand($id+4)*0.4)+0.4.
Si le damos ahora a play veremos que las partículas rebotan de forma más o menos orgánica.
-- IMÁGENES ADJUNTAS --
🖼️
Estamos trabajando para mostrar las imágenes del foro
Adjunto #53525