sanostol Posted February 15, 2009 Share Posted February 15, 2009 I like volumes. And volumes seem to like You. Astonishing explorations. Quote Link to comment Share on other sites More sharing options...
diula Posted February 16, 2009 Share Posted February 16, 2009 eetu, could you please explain in more detail the method of creating new particles from the input point geometry? How do you determine the position of the newly created particles? I've read some articles online that suggest constructing a bounding sphere between the original point and the closest point to it, then randomly populating new points within the sphere, but you're obviously doing something different... Quote Link to comment Share on other sites More sharing options...
eetu Posted February 16, 2009 Author Share Posted February 16, 2009 How do you determine the position of the newly created particles? For every point in the previous generation spheres, I calculate approximate occlusion with the Ray SOP. The collision primitives also include all the generations thus far, plus any invisible restraining geometry you might want to use. Then I scatter points on the previous gen spheres, according to the above occlusion attribute. ("Alternate Attribute" option in Scatter SOP) I think I created 8 new points per generation here. eetu. Quote Link to comment Share on other sites More sharing options...
diula Posted February 17, 2009 Share Posted February 17, 2009 How do you determine the position of the newly created particles? Sorry, I phrased myself badly. I was asking about particle generation technique in the 'Billion points' project Quote Link to comment Share on other sites More sharing options...
eetu Posted February 17, 2009 Author Share Posted February 17, 2009 Sorry, I phrased myself badly. I was asking about particle generation technique in the 'Billion points' project Haha, oops! For the first frame initial particle generation, I just make n copies of the original particles, with a random offset, which amounts to just copying a cotton ball to each particle. The method you describe would be an improvement, at least in some cases. For subsequent frames I do not generate any new particles, I 'resimulate' and move the existing particles. This is less flexible than explicitly generating particles at each frame, but ensures temporal coherence and will make motionblur easier. The cotton balls go away in a few frames. I have some ideas about improving the initial distribution, it should be easy as it needs to be done for only one frame. eetu. Quote Link to comment Share on other sites More sharing options...
ranxerox Posted February 17, 2009 Share Posted February 17, 2009 sorry to clutter up your lab with questions It would be nice if we could fork off threads so that the main thread doesn't get hijacked In any case, thanks for your explanation. I was trying to use the foreach sop so that I could have an unspecified number of generations (recursion would be ideal). Did you created a subnetwork per generation, or something like that ? Read your points, scatter your points, copy spheres to points, write points to file, repeat ? How did you repeat if not with a foreach sop ? thanks, last question I promise. -ranxx Hi,I don't have that scene here, but things you might look for; checking for occlusion (Ray SOP) so that scattered points do not lead to interpenetration, scatter only on the latest generation of geometry, and there are many ways to skin a cat in Houdini, but I don't think I used foreach here. Roughly: file read, scatter, copy, file write. eetu. Quote Link to comment Share on other sites More sharing options...
eetu Posted February 17, 2009 Author Share Posted February 17, 2009 (edited) In any case, thanks for your explanation. I was trying to use the foreach sop so that I could have an unspecified number of generations (recursion would be ideal). Did you created a subnetwork per generation, or something like that ? Read your points, scatter your points, copy spheres to points, write points to file, repeat ? How did you repeat if not with a foreach sop ? The repeat is done using the file read and write. At start of every frame I read the previous generations from disk, eg "feedback_`$F-1`.bgeo", and at the end I save the current plus previous generations to "feedback_$F.bgeo". This is a pretty common technique, I think. If you do not want to retain all the steps, you could just read/write with a static filename, but I like to store an animation of the process These days there is also the new Feedback SOP.. A simple example of the file method attached. eetu. ee_feedback_example.zip Edited February 17, 2009 by eetu Quote Link to comment Share on other sites More sharing options...
ranxerox Posted February 17, 2009 Share Posted February 17, 2009 ahh of course, thank you ! -ranxx The repeat is done using the file read and write. At start of every frame I read the previousgenerations from disk, eg "feedback_`$F-1`.bgeo", and at the end I save the current plus previous generations to "feedback_$F.bgeo". This is a pretty common technique, I think. If you do not want to retain all the steps, you could just read/write with a static filename, but I like to store an animation of the process These days there is also the new Feedback SOP.. A simple example of the file method attached. eetu. Quote Link to comment Share on other sites More sharing options...
diula Posted February 17, 2009 Share Posted February 17, 2009 For subsequent frames I do not generate any new particles, I 'resimulate' and move the existing particles. Thanks for the info! Still it's a bit unclear: what do you mean by resimulation? Are you moving the new particles according to the velocity in the previous frame? Or you're averaging the 'v' and 'P' value from the neighboring points for each point - if that makes any sense? Or there is some other magic Quote Link to comment Share on other sites More sharing options...
eetu Posted February 17, 2009 Author Share Posted February 17, 2009 (edited) Thanks for the info! Still it's a bit unclear: what do you mean by resimulation? Are you moving the new particles according to the velocity in the previous frame? Or you're averaging the 'v' and 'P' value from the neighboring points for each point - if that makes any sense? The basics are in the original post; The method I ended up with was simple; the new particles get their velocityfrom nearby particles and move according to that. Think of it as the old particles being some sort of attractors, or just as v attribute transfer. Just transferring P would've been "safer", but the result would be more boring. With v there would be some new emergent behaviour. Transferring force/acceleration would be even more exciting, but more risky too. The transfer recipients are the new particles, and the source are the original houdini-simulated particles in the neighborhood. When changing to the next frame, the new particles are moved according to their recently gathered individual unique v, and a new set of original particles is loaded from disk for a new round of the same. eetu. Edited February 17, 2009 by eetu Quote Link to comment Share on other sites More sharing options...
MENOZ Posted March 3, 2009 Share Posted March 3, 2009 Hi eetu, can you please explain me better how did you achieve that effect with the font and particles? what do you mean you used the inverse od the SDF gradient? it is done via vex? thank you Quote Link to comment Share on other sites More sharing options...
eetu Posted March 3, 2009 Author Share Posted March 3, 2009 Yep, that was my first foray into voppops. The effect is based on the Signed Distance Field volume representation of the text. Each voxel in the SDF volume has the distance to the nearest surface in it. You can also think of it as how "deep" you are in the volume at that point in space. By convention the values inside an object are negative and outside positive. The VopPOP acts like a "keep at surface" operator. It samples the gradient of the volume at a particle's position (the direction into which the volume value increases most) and also the volume value (how far we are from the surface). When multiplied, we get a vector that points toward the surface from both outside and inside an object, and the magnitude of the vector gets larger, the further we are from a surface. Apply this vector as an acceleration force on the particles, add some noise and draw the resulting trajectories and you start to get something pretty eetu. ee_sdf_voppop.hip 1 Quote Link to comment Share on other sites More sharing options...
blackchicken Posted March 27, 2009 Share Posted March 27, 2009 ou my little jesus, thats absolutely beatiful, specialy 115 mil part looks excelent, like fluid simulation heh you open my eyes...BC.... Quote Link to comment Share on other sites More sharing options...
silentvisual Posted April 9, 2009 Share Posted April 9, 2009 good work it looks great.. i was wonder wat is partimul.exe? is it something inside.. houdini? Quote Link to comment Share on other sites More sharing options...
eetu Posted April 25, 2009 Author Share Posted April 25, 2009 good work it looks great.. i was wonder wat is partimul.exe?is it something inside.. houdini? Nope, custom code. Fragile, quite particular about the inputs and with everything hardcoded Maybe I'll get to cleaning it up one day and upload. eetu. Quote Link to comment Share on other sites More sharing options...
eetu Posted June 23, 2009 Author Share Posted June 23, 2009 To keep this alive.. For someone on irc I just made a simple test on how to gradually turn a mesh into smoke. .mov .hipnc eetu. Quote Link to comment Share on other sites More sharing options...
Netvudu Posted June 25, 2009 Share Posted June 25, 2009 Hi eetu! I checked your scene and it Quote Link to comment Share on other sites More sharing options...
Magnus Pettersson Posted June 26, 2009 Share Posted June 26, 2009 this is awsome testings, way above my head tho yet with writing your own exe file to process particles and stuff, cool!! In your snow example you mention use of chops to get the geometry to stay deformed, as i yet have to learn that area of houdini, how is chops used to keep the deformation? Quote Link to comment Share on other sites More sharing options...
eetu Posted November 24, 2009 Author Share Posted November 24, 2009 (edited) Oi, I have neglected this thread. Last weekend at the Nordic TD Forum I gave a small presentation on my particle multiplication technique. It was only a 5min slot in the fast forward session, so it's pretty fast. Here are a couple of different res quicktimes of it: http://undo.fi/houdini/pmul/ntdf/ Apologies for the finglish eetu. Edited November 24, 2009 by eetu Quote Link to comment Share on other sites More sharing options...
CeeGee Posted November 24, 2009 Share Posted November 24, 2009 (edited) thanks eetu Great presentation Edited November 24, 2009 by CeeGee Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.