Jump to content
MoltenCrazy

@active to PopSolver and/or PyroSolver?

Recommended Posts

Hoping someone can help me with this...feels like it should be easy-ish, but can't seem to figure it out.

I've got no problem controlling the @active attr and passing it into a DOPNet/rigidbodysolver.

How do you do pass @active to a POPSolvers and PyroSolvers? I want to take the same animated pieces from my RBD sim and have a particle sim and/or a pyro sim triggered by the same timing.

For a PopSolver, the best I've come up with is a painful for-each setup based on fragment age and group culling, so basically cheating it all before the PopSolver gets the geo. I could probably modify it to have the for-each loop eval for @active as the first step, but that's still avoiding the solvers.

For Pyro, I was working on a similar system with clusters but when I scaled it from my prototype to my project geo, it basically wrecked my machine.

I've attached a simple file with a staggered shattering of a sphere and all the hooks for both a PopSolver and a PyroSolver. Is there a more straightforward way to do this?

--
mC

Active_To_Pop_Pyro_01.hiplc

Share this post


Link to post
Share on other sites
6 hours ago, MoltenCrazy said:

Hoping someone can help me with this...feels like it should be easy-ish, but can't seem to figure it out.

I've got no problem controlling the @active attr and passing it into a DOPNet/rigidbodysolver.

How do you do pass @active to a POPSolvers and PyroSolvers? I want to take the same animated pieces from my RBD sim and have a particle sim and/or a pyro sim triggered by the same timing.

For a PopSolver, the best I've come up with is a painful for-each setup based on fragment age and group culling, so basically cheating it all before the PopSolver gets the geo. I could probably modify it to have the for-each loop eval for @active as the first step, but that's still avoiding the solvers.

For Pyro, I was working on a similar system with clusters but when I scaled it from my prototype to my project geo, it basically wrecked my machine.

I've attached a simple file with a staggered shattering of a sphere and all the hooks for both a PopSolver and a PyroSolver. Is there a more straightforward way to do this?

--
mC

Active_To_Pop_Pyro_01.hiplc

Hi.

Do you want to initialize simulation of particles and pyro at the time when rbd objects become active? If i understood you correctly then you can take a look at the .hip.

Active_To_Pop_Pyro_02.hiplc

Share this post


Link to post
Share on other sites

Thanks, vicvvsh!

Dammit, I was so close but I was obsessed with stripping the active attr down to point level that it never occurred to me that an active group was the way to go.

Am I correct here in understanding that the popsolver is explicitly getting the active attribute but the pyrosolver is only getting it implicitly because it's just receiving the dynamically-created fuel volumes? I don't think I have a problem with that, just want to make sure I understand. Is the pyrosolver different enough that the concept of active/inactive doens't apply?

And how do you offset the start of particle generation inside a popnet? For instance, when that first fragment/set of points enters the sim, I'd like to wait maybe 10 frames before the particles start emitting. And I'd like that to happen for every point as it enters. Been trying a bunch of if-then variable combos in the impulse activation ($F, $FF, $T, $SF, etc) but nothing seems to work. Everything seems based on the sim start time as opposed to the point activation time.

 

--

mC

Share this post


Link to post
Share on other sites
1 hour ago, MoltenCrazy said:

Am I correct here in understanding that the popsolver is explicitly getting the active attribute but the pyrosolver is only getting it implicitly because it's just receiving the dynamically-created fuel volumes? I don't think I have a problem with that, just want to make sure I understand. Is the pyrosolver different enough that the concept of active/inactive doens't apply?

In my example I didn’t use i@active for pop and pyro at all. I created the group named “active” from attribute and then I used this group for sourcing particles (Source Group parameter in POP source DOP).  Pyro gets volumes that created in the Fluid Source SOP from particles.

1 hour ago, MoltenCrazy said:

And how do you offset the start of particle generation inside a popnet? For instance, when that first fragment/set of points enters the sim, I'd like to wait maybe 10 frames before the particles start emitting. And I'd like that to happen for every point as it enters. Been trying a bunch of if-then variable combos in the impulse activation ($F, $FF, $T, $SF, etc) but nothing seems to work. Everything seems based on the sim start time as opposed to the point activation time.

You can use a Time Shift SOP to offset time for creation “active” group and a Group Copy SOP to copy this group to source geometry.

  • Like 1

Share this post


Link to post
Share on other sites

A big thanks to vicvvsh here and to mkps on the SideFX forum for their help!

This file has both approaches/fixes with a switch. Got what I was after: per piece activation driving both the popsolver and subsequent pyrosolver as well as (fixed) control over when each piece gets perceived as active by the solver.

Hope this is of help to someone down the road… :)



mC

Active_To_Pop_Pyro_03.hiplc

Edited by MoltenCrazy

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×