generate millions particles at rendertime

   5418   12   3
User Avatar
Member
26 posts
Joined: Jan. 2016
Offline
Hi!
Do you know a method to generate millions of particles at rendertime given a low number of particles? what I mean is trying to duplicate particles or make others particles that follow the motion of surrounding particles, but without display them in viewport, and generate only at rendertime. much like krakatoa, but in houdini.

I know a way to use “point replicate” shader but I think it's now out of date…
User Avatar
Member
74 posts
Joined: March 2016
Offline
A very good way to do something similar with the same end goal, is to use Wedging (look it up in the documentation) to write separate ‘wedges’ (partitions in Krakatoa speak) with different seed values on the emitter. Mantra will never provide the same per frame speed as Krakatoa but breaking up your sim into 5-10 million particle chunks will ease the stress of loading and it's far faster than the point replicate shader and more importantly provides more natural and visually pleasing results.

If you have access to Krakatoa via another DCC there is a PRT exporter available so you can utilise Houdini to create the sim but then render it in Krakatoa. The only downside to this approach is that the PRT exporter is single threaded. Houdini particles are fantastically threaded so under normal circumstances they write a BGEO cache in approx 1 second a frame (based on a5-10 million particles and a 32 thread workstation). With the PRT exporter being single threaded it will be far slower. Having said that if you're happy with your sim you can wedge overnight and be ready to move things on in Krakatoa.

On that basis Mantra might be the faster workflow even though it's per frame render time won't match Krakatoa's (which is highly optimised for particle sims). You'll need to know your way around the VOP shading networks too if you're attempting similar results to Krakatoa, so the benefits of each approach will vary on your personal skillset.
User Avatar
Member
408 posts
Joined: July 2013
Offline
Download Redshift3d, a GPU renderer for Houdini which has Particle support. Using a GTX 860M I was able to render 10 million particles with motion blur with no problem.
Houdini Indie
Redshift 3D
User Avatar
Member
74 posts
Joined: March 2016
Offline
Daryl Dunlap
Download Redshift3d, a GPU renderer for Houdini which has Particle support. Using a GTX 860M I was able to render 10 million particles with motion blur with no problem.

Ever the Redshift advocate Daryll.

But Daryll's right Redshift is able to cope with large particle counts and is far faster than Mantra. Krakatoa is still king of the hill with it's specialist shading options, super fast motion blur and optimised cache loading but Redshift is an ace native tool in Houdini that works directly with BGEO particle caches and more importantly provides easy access to particle attributes for nifty shading options.

However, with regard to the OP's original question Redshift doesn't contain anything that will multiply the point count, that's where Wedging will be your best friend.
Edited by Jonathan Moore2 - July 27, 2017 10:55:26
User Avatar
Member
1390 posts
Joined: July 2005
Offline
Modern version of point replicate procedural is HEngine: Point Generation

http://www.sidefx.com/docs/houdini/nodes/vop/enginepointgen [www.sidefx.com]
User Avatar
Member
74 posts
Joined: March 2016
Offline
symek
Modern version of point replicate procedural is HEngine: Point Generation

http://www.sidefx.com/docs/houdini/nodes/vop/enginepointgen [www.sidefx.com]

Interesting. Seeing as this is a VOP node my expectation is that it would be threaded but there's a worrying phrase in the docs that mentions a similarity to Copy Stamping (going outside of the VOP to reference attributes in SOPs). Does this have an impact on threading, or are the docs strictly talking in a conceptual manner. Anything that can reliably upres a particle sim without threading issues is going to be a useful option.
User Avatar
Member
26 posts
Joined: Jan. 2016
Offline
symek
Modern version of point replicate procedural is HEngine: Point Generation

http://www.sidefx.com/docs/houdini/nodes/vop/enginepointgen [www.sidefx.com]

Could you please give some example files?
User Avatar
Member
74 posts
Joined: March 2016
Offline
Having researched HEngine: Point Generation a little more it seems it's main benefit is that you can use Houdini Engine licenses on Mantra network nodes. I've personally never liked render time point generation multipliers and I've tried them in XSI ICE, Krakatoa and Houdini. Partitioning/Wedging always produces more natural results. Splitting your cache files into manageable chunks aids data IO too.
User Avatar
Member
26 posts
Joined: Jan. 2016
Offline
Jonathan Moore2
Having researched HEngine: Point Generation a little more it seems it's main benefit is that you can use Houdini Engine licenses on Mantra network nodes. I've personally never liked render time point generation multipliers and I've tried them in XSI ICE, Krakatoa and Houdini. Partitioning/Wedging always produces more natural results. Splitting your cache files into manageable chunks aids data IO too.

Thank you very much and I will test Wedging method
Could you give some your particle wedging hip files for me?I'm having trouble to do this effects using particles:
User Avatar
Member
74 posts
Joined: March 2016
Offline
I don't have time to create an example for you but if you follow this tutorial on wedging pyro sims the methodology is exactly the same for particles. The wedging stuff kicks in around the 16 minute mark. It's simply a matter of referencing back into your particle network from your Wedge node and referencing the seed on the emitter. If you've set up the wedge correctly it will automatically cache out the number of cache wedges you require whilst ensuring the seed is changed on each cache wedge. A Wedge isn't a special type of cache is simply Houdini nomenclature for the process in much the same way that Thinkbox refer to cache iterations as Partitions.

User Avatar
Member
26 posts
Joined: Jan. 2016
Offline
Jonathan Moore2
I don't have time to create an example for you but if you follow this tutorial on wedging pyro sims the methodology is exactly the same for particles. The wedging stuff kicks in around the 16 minute mark. It's simply a matter of referencing back into your particle network from your Wedge node and referencing the seed on the emitter. If you've set up the wedge correctly it will automatically cache out the number of cache wedges you require whilst ensuring the seed is changed on each cache wedge. A Wedge isn't a special type of cache is simply Houdini nomenclature for the process in much the same way that Thinkbox refer to cache iterations as Partitions.


Thanks for your tutorial!Which is really useful.
So now the trouble is that when I wedge a particle sim 10 times and then I read the cache to render.It's very unconvenient to read them one by one.Is there a way to quickly read all the wedge sim?
User Avatar
Member
74 posts
Joined: March 2016
Offline
There's an old thread on odforce which discusses at length recreating a Krakatoa style workflow in Houdini with Mantra. One of the participants (CeeGee) shares some example files which will help you understand the setup (however they use the old particles technology which is single threaded so strictly use the ‘Palace’ Hips he shares to understand the overall setup. Be sure to read the thread too as it contains important info. The key thing with Mantra is to use the Delayed Load Procedural (read up on this in the documentation) to load the cache files on demand, this will be as fast or slow as your fastest drive (speedy SSD is obviously your best choice). Cache loading nodes in Houdini have a Delay Load option too but I still use the Delayed Load Procedural method (out of habit not preference) so I can't comment on that approach.

http://forums.odforce.net/topic/10065-krakatoa-shader/#comment-66055 [forums.odforce.net]

I've deep linked directly to the comment where the first of the Hip files was shared, if nothing else be sure to read the following 10-15 comments.
User Avatar
Member
74 posts
Joined: March 2016
Offline
If you do decide to investigate the Delay Load option, you'll need to ensure that you've used a Pack Points node pre writing your particle caches (read the docs for details). The packed primitives workflow is the more modern way of doing things and the Delayed Load Procedural method might disappear in a future Houdini release so it's probably good to understand both.

The important thing is that Houdini treats particle caches no different to any other geometry format. The delayed loading of the points at render time is what keeps Houdini working in the most efficient manner with large point counts.
  • Quick Links