En Maya, la forma correcta de asignar atributos per particle para controlar la gravedad de forma independiente es no modificar directamente el campo de gravedad global, porque eso afecta a todos los objetos del campo. En lugar de eso, se usa un atributo per particle llamado isDynamic o se ajusta la influencia de los campos sobre cada partícula con el atributo acceleration o mass por partícula.
Primero, creo un atributo por partícula que identifique el tipo de instancia, por ejemplo, tipo, que puede valer 0 o 1. Esto lo puedes asignar en el Creation Expression:
Particleshape1.tipo = rand(0,1);
Luego, en el Runtime After Dynamics, no modifico la magnitud del campo de gravedad global. En su lugar, ajusto la aceleración de cada partícula dependiendo del tipo:
Código:
if (Particleshape1.tipo == 0) {
// Partículas afectadas por gravedad
Particleshape1.acceleration = <<0,-9.8,0>>;
} else {
// Partículas que ignoran la gravedad
Particleshape1.acceleration = <<0,0,0>>;
}
De esta forma, cada partícula tiene su propia aceleración vertical y no afecta al campo de gravedad general. Esto evita que la gravedad cambie para todas las partículas conforme se generan nuevas, y mantiene la aleatoriedad de instancias que ya habías definido. También puedes combinar esto con resistance o mass para ajustar cómo cada partícula responde a la física de la escena.