PDA

View Full Version : One object, Multiple emitters, uniform emission


dman3d
06-16-2011, 06:22 PM
I am attmepting to make a shower head with many points of emission.
I can get a decent result by making planes, attaching them as one object
then position object + speed by surface using normals.
The result good but there are gaps in the particles rather than
being evenly spaced. I suppose I can make clones of the pflow but that
gets crazy out of hand, tried it with a previous sprayer.
Anyone have advice for this outside of another plug-in?
I am evaluating Thinkbox Frost for the mesh, works great and is fast as hell
compared to blobmesh ;)

JohnnyRandom
06-17-2011, 02:00 AM
You could try spawning off of vertices.

To test create a sphere (hemisphere actually) add a mesh select and select the pattern you want. In the Position object select the sphere, tick lock on emitter, set the location to "Selected Vertices" and enable Separation.

Now add a Spawn Test. This will control your emission rate, Use "Per Second" and set it to something like 180. To get a more accurate emission change the Integration Step, lower it. You should keep it equal with the render step, especially if you use any forces, these will be effected, changing the perceived result.

dman3d
06-17-2011, 02:09 PM
Thanks John, makes total sense. I will give it a shot and report back soon as I can.

JohnnyRandom
06-17-2011, 05:40 PM
np,

Argh, I forgot to include this! I am sure you figured it out already, for the sake of others, the Birth Count should be equal to the amount of vertices selected in the Mesh Select and the Viewport Quantity Multiplier should be set to 100% to get an accurate result.

dman3d
06-17-2011, 06:57 PM
(thanks again and sorry I can be thick :))
Make that still working on it. The "nozzles" are in a radial
arrangement. Each ring of which is tilted slightly more than the next
to the emitters to not all point the same direction. For example the inner
ring is 6 nozzles angled about 5 (+/-) degress from center and they graduate out in
two more rings from there.
Not this head but similar idea: http://image.made-in-china.com/2f0j00SBkEtOPwnioR/Shower-Head-Pb0605-.jpg
Using the faces rather than vertices give the Speed by Shape->Direction: normals
so the emissions have respect for the angle of the emitter/faces.

Next question is, when I used spawn test they stick to the emitter as well, do I need to
pass it via a test to a separate spawn event I assume? (making sure I am seeing this
correctly)

Problem is doing that and still keeping the flow consistent so when I skin the particles
the streams stay uniform (without making a weird steched mesh) when they first come out them break up "X" distance from the head.

With my current method I can dump a ton of particles to attempt making up the
gaps but it just keeps getting bigger and slower (even with cache)

I will keep playing with the aforementioned concept but having no luck yet, I am
sure I am missing something, I reduced iterative step to half frame, will try lower
since that seemed to tighten it up a bit.

Currently (the scene that started it all)

Render
Material Static
Cache->

->Birth (850k over 300 frames)
Position object (emitters)
Speed by surface (direction: surface normals, separation ticked, no speed variation)
Force (gravity)
Display (circles in viewport)
Age Test->

->Delete all (prevent a zillion particles from existing after "x" time)

Oh and I think I did set birth to the emit but will double check, fiddling with a few
versions of the file. Though I do not think I set the viewport amount, will do that next.
See if the concept you forwarded earlier will work with he direction: surface normals will still
work.

JohnnyRandom
06-17-2011, 07:47 PM
Of course I can't help but tweak it :D A little bit different, I used a Birth Script to born control particles on faceCenter based on the selected faces of a poly object then spawned from those. This way you will get better more "uniform" normals from the faces, vertices seem to give normals not like you would expect.

EDIT: You could of course just as easily create an array of planes, or a few at different angles, and use an array in the birth script to born off of faceCenter. This is more like your original thought.

Here is an example, the Frost could use some tweaks

dman3d
06-18-2011, 11:39 PM
Wow that is nice, thanks. Lost me at the script but I will certainly use it to learn.

I currently have an array of planes as the source objects. Looking at the script
I think I understand what you are telling it to do.

I was attempting that through standard PF events, sort of create locked on, age
test then emit from those existing particles, just not as fancy as yours ;)

See what I can do here, thanks again.

dman3d
06-20-2011, 02:33 PM
thanks again for the guidance :cool:
ok for a mere mortal ;) this is what I ended up with
(at least until I learn more about scripting)

So based on the two ideas,
I set up a flow that births particles locked on emitter
then a separate flow that sets its inital state from the first
flow and then spawns by rate from that then speed by surface
using the emitter planes and normals, age test and kill all and it.

It appears to do just about the same thing, albeit not near as cool :)

JohnnyRandom
06-20-2011, 05:44 PM
oh good! sounds just as cool, I wouldn't have thought to use a secondary system. :) Initial State is a great operator.

I try to be a minimalist, pflow seems to run better that way, especially when you have a sh!t-ton of particles. I have seen 40+ op flows that could be done with half a dozen (in fact I have built quite a few myself), and they run super slow simply because of the calculations needed. Sometimes you just can't avoid it, you have to have more than ops that you like, then I bill it as "it gets the job done" :D

dman3d
06-20-2011, 06:25 PM
I totally agree on minimalism, my short comings in scripting dictated this.
Without the logic you are using I would have fiddled around forever.
Im using a club rather than a scalpel though ;)

CGTalk Moderation
06-20-2011, 06:25 PM
This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.