View Full Version : emit particles that follow surface normals

 jkletzien09 September 2008, 07:56 PMIm trying to emit particles, say cubes, along a surface, say a teapot. They emit fine and sit there on the teapot, but the cubes dont follow the surface normals of the teapot. Any way of getting them to do that?
Bobo
09 September 2008, 09:08 PM
Im trying to emit particles, say cubes, along a surface, say a teapot. They emit fine and sit there on the teapot, but the cubes dont follow the surface normals of the teapot. Any way of getting them to do that?

If you mean you want them to move away from the surface along the surface normals, add Speed By Surface, pick the same teapot and specify to use the Normals. Each particle will find the closest point to the surface (which in your case would be the point it was emitted from) and then fly away along the normal. You may not lock the particles to the surface using the Position Object operator though.

spurcell
09 September 2008, 03:07 AM
No i dont want the particles to fly off the object. I would like them to stay on the object, but follow the normals. To be specific, I'm trying to use particle flow stick a bunch of post it notes on geometry 'ala "Bruce Almighty" movie

see following:

Bobo
09 September 2008, 03:24 AM
"Follow the normals" is a strange expression since the normal points out of the surface and following it would mean flying off the surface. I assume you mean "stay oriented to the normal as the mesh deforms"?

There are several methods to achieve this.

*The simplest one is the hack for orienting objects to a surface (known as SpeedBySurface/RotateInSpeedSpace/Speed0 method). In short, you assign a Speed By Surface to get the vector, Rotate the particle in Speed Space to get the Z of the particle aligned to the normal (usually requires 90 degrees about X) and then kill the speed using Speed with a value of 0 so the particle stays there.
Here is an example:
http://www.scriptspot.com/bobo/mxs5/pflow/pflow__Hairy_Teapot.htm

*The same could be scripted using a Script Operator, but would be damn slow.

*The more advanced method is of course using Box #3, but I will assume for a second you don't have it, otherwise you wouldn't be asking anyway ;)

*The version of Krakatoa v1.1.2 we are going to release in the next few days comes with another operator called Krakatoa Geometry Lookup that does this (significantly faster and better than all other methods) and is available for free in the evaluation version.

There might be even more methods that I am missing...

jkletzien
09 September 2008, 01:11 PM
thanks for the info bobo, appreciate it. Ill look into it. Yeah I dont have any of the boxes. I work for an arch vis studio, and particles is not high on the list of priorities :P.

Bobo
09 September 2008, 09:14 PM
thanks for the info bobo, appreciate it. Ill look into it. Yeah I dont have any of the boxes. I work for an arch vis studio, and particles is not high on the list of priorities :P.

We just released Krakatoa v1.1.2 today. I tested a simple PFlow with Position Object and Krakatoa Geometry Lookup set to TM mode and it worked fast and without problems.
(I posted some more impressive benchmarks here (http://www.franticfilms.com/software/support/krakatoa/krakatoa_geometry_lookup.php))

Just remember that PFlow assumes particles are moving along their X axis, so to get a Plane to align to the normal, you have to add an XForm, rotate about Y to align the Plane's Z to the node's X, then use Shape Instance to assign to the particles.

PsychoSilence
09 September 2008, 04:55 PM
in a way a similar problem like that was discussed here: