View Single Post
# 59 22-05-2008 , 06:22 PM
Registered User
Join Date: May 2008
Location: Europe (Germany)
Posts: 7

how to make object-dependent collision effects

I was wondering if there's a way to make particles behave differently according to the object they collided with. After some hours of trial and error I found this solution:

Let's say you want to have particles raining down on two cubes. Particles that collide with cube 1 shall become red and bounce off the cube (and eventually collide with cube 2), cube 2 shall kill the particles once they collide with it.

- Create an emitter that lets the particles rain down (omni, gravity field)
- Create 2 (or more, it doesn't matter) poly cubes and place them under the emitter in a way that some particles collide with cube 1 and some with cube 2
- name the transform node (pcube1 not pcube1shape) to cube_A and the other one to cube_B
- Make the particles collide with both of them (Particles-->Make collide)
- Select the particleShape and add a per particle collisionGeometryIndex via Add Dynamics Attibutes-->General-->Particle-->collisionGeometryIndex
- Also add an rgbPP Attribute (Add Dynamics Attibutes-->Color-->Add per particle attribute)
- now create a runtime expression on the lifespanPP and rgbPP attribute:

Code:
    int $index = particleShape1.collisionGeometryIndex;
    if( $index != -1 )
    { 
    	string $geoC[] = `listConnections particleShape1.collisionGeometry[$index]`;
    	string $shape[] = `listConnections ( $geoC[0] + ".localGeometry" )`;
    	
    	if ($shape[0] == "cube_A") 
    		{
    		particleShape1.rgbPP = <<1,0,0>>;
    		}
    	if ($shape[0] == "cube_B") 
    		{
    		particleShape1.lifespanPP=0;
    		}
    }
Important: You have to set the lifespan mode to "lifespanPP only" under Attribute Editor --> particleShape1 --> Lifespan Attributes.

You can easily add more collision objects with different effects on the particles, I think a switch-case condition would be more elegant for that.

I attached a scene file with the stuff above, have fun!

Attached Files
File Type: mb collisions.mb (0, 11 views)