malkuth Posted March 25, 2016 Share Posted March 25, 2016 Hi I want to achieve a pixie dust effect using a particles simulation. The way that I have done it, is by using a layered CHOPS noise that generates the flicker for the particles color. Using a different seed for each noise produces a very nice delay and variation for each particle. The problem is that for rather large simulations I have a possible memory limit issue when `cooking` the CHOP noise. The attached example has a limit for the particle count in order to be easy to load the first time. There is about 250 points and 250 channels of noise. That works fine but when the particle number is around 400.000 the memory required for cooking goes up to about 30 GB. Any ideas for a better workflow? Thank you! cheers Cristian nS_sh02_t_v04.hiplc Quote Link to comment Share on other sites More sharing options...
loopyllama Posted March 25, 2016 Share Posted March 25, 2016 You don't *really* need a unique noise for each point, do you? Use a single noise channel, and offset noise lookup by $ID. Chops are cool, but you could also do this many other ways including a vopsop with aa noise piped into Cd. Quote Link to comment Share on other sites More sharing options...
fathom Posted March 25, 2016 Share Posted March 25, 2016 if you're just talking about the sparkle effect, then just use a point wrangle and use id and frame as seeds to a rand function: if (rand(i@id/75.32 + floor(f@Frame/3)/12.6)<.1) f@sparkle = 1; else f@sparkle = 0; the 75.32 and 12.6 are just there to avoid integer seeds which might cause repetition. the floor(Frame/3) will make a sparkle last 3 frames (since the seed will only change evern 3 frames). you could probably add a random number in there (based on id and frame) to offset so the 3 frame change isn't sync'd across all particles. the <.1 part equates to 10% of your particles at any time being sparkles. you can drop that down for fewer or increase it for more. Quote Link to comment Share on other sites More sharing options...
malkuth Posted March 25, 2016 Author Share Posted March 25, 2016 Hi Jim Thank you for your reply. The noise in VOP was my first try but to my eyes it seems that one can still see the noise pattern creeping in the particle render as well as being totally unusable with a lot of fast moving particles. The first suggestion I have considered it as well since I can probably be happy with 200 channels of noise that are spread out to the whole lot but I cannot figure out a way to distribute the channels to, let's say, 400.000 particles. cheers c Quote Link to comment Share on other sites More sharing options...
malkuth Posted March 25, 2016 Author Share Posted March 25, 2016 (edited) Hi Miles Thank you for your detailed answer. That is definitely an expression that I'll use at some point. Far as I can see, the expression above gives to an attribute called 'sparkle' the values of 0 or 1 when the conditions above are meet. Is that correct? If you meant something else can you please explain? I can use that expression to drive the alpha of the particle but that will be just a frame off witch you wont see in a fast moving / small particle. If you can have a look at the file attached you can see the effect that I'm after. I can be done for 400.000 particles but it is very close to my memory limit and not very friendly if I want to increase the number for particles above that. Thank you! cheers c Edited March 25, 2016 by malkuth Quote Link to comment Share on other sites More sharing options...
loopyllama Posted March 25, 2016 Share Posted March 25, 2016 You can tie the noise to anything you want. You do not want to base noise off of pose. You need something static, like $ID or make a birth position. rand($ID)*100 would work fine. From there you can use any math function on the noise you would like, to achieve any style of twinkling. Quote Link to comment Share on other sites More sharing options...
fathom Posted March 28, 2016 Share Posted March 28, 2016 Hi Miles Thank you for your detailed answer. That is definitely an expression that I'll use at some point. Far as I can see, the expression above gives to an attribute called 'sparkle' the values of 0 or 1 when the conditions above are meet. Is that correct? If you meant something else can you please explain? I can use that expression to drive the alpha of the particle but that will be just a frame off witch you wont see in a fast moving / small particle. If you can have a look at the file attached you can see the effect that I'm after. I can be done for 400.000 particles but it is very close to my memory limit and not very friendly if I want to increase the number for particles above that. Thank you! cheers c i didn't open your file (kind of restricted internet at work). sparkle 0/1 is really just to indicate which particles are currently "sparkling". you can then do whatever you want to make the sparkle effect -- brighter particles, larger particles, replaced with a sprite texture (like a starburst or something), etc. you can add a blast to filter your particles into groups based on the sparkle attribute if that makes the most sense to you. then treat each group however you wish and merge them back together. Quote Link to comment Share on other sites More sharing options...
malkuth Posted March 29, 2016 Author Share Posted March 29, 2016 Cool Miles, I follow you now The only thing that I'm missing is a way to offset in time about 200 channels of different noises generated by CHOPS (about 200 frames animation) and apply that to the group/s. Thanks! cheers c 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.