Change particle color every collision

Hey everybody, I’ve got a simple question but haven’t found a solution yet. I would like to change the color, or opacity of my particles, every time they collide with a mesh. I want to simulate audio, decreasing in strengh with every bounce. You can see my test animation below.

Hope you guys can help, thanks in advance!


Hi Roger, that’s not possible as far as I know. You’ll want to use houdini and export an Alembic point cloud since 2.78 has alembic import.

Hey Hadriscus, thanks for the reply. I’ll see if Haudini has a trial version although I’m still hoping there’s a way to achieve this within Blender. I’m currently using icospheres as particle objects and I’m digging through the game engine for help. Merci!

Yes, the free version of Houdini only limits the render resolution as far as I know (also does not let you use pyro solvers and stuff), but particles is fine. That’s an additional thing to learn obviously, but you’ll be glad you did. :slight_smile: You’ll also want to check with KWD (alembic developer) or directly on the relevant thread (here) whether the modifier can handle arbitrary attributes (in your case, collision number) - if it does not it’s useless to go that route.

If you want to stay within Blender, take a look at the animation nodes addon, I reckon it allows some new things with particles. There’s a thread somewhere…

why just mapping particle’s speed doesn’t work? if speed is reduced only by colliders then it would be almost the same I guess…
I doubt AN can help here, maybe if you detect collisions yourself -comparing velocity with previous volocity- then use this info to change materials on a different object… sounds slow and complex

I don’t know if AN can access the previous frame info ? Then it’d only be a matter of comparing velocity vectors…

I would suggest trying this material on the objects being used to be seen: Input > Particle info node (experiment with the different outputs) > Converter > ColorRamp node (choose which colors you want, as many or little as you want), then finally through an emission or whatever else material you wish to use. Let me know if that works!

Here is what I mean, as an example: