This master class builds several different combustion models inside of the new Pyrosolver SOP. These include the Houdini 17.5 combustion, oxygen limited combustion, and flamefront controlled combustion.
Additional Links
Labs Gas Expand from Temperature
geometry node -- sidefx.com/docs/houdini/nodes/dop/labs--gasexpandfromtemp.html
Labs Gas Flamefront geometry node -- sidefx.com/docs/houdini/nodes/dop/labs--gasflamefront.html
Flamefront scene file -- github.com/sideeffects/SideFXLabs/blob/Development/hip/flamefront_demoscene.hip
COMMENTS
sanostol 3 years ago |
Once again a great Masterclass, thank You!
Asger Mortensen 3 weeks, 4 days ago |
This is very cool! Absolutely love this! I've started doing my own simple version of this, but I have a few questions (I am no mathematician though)
You double the waste field by multipling the burn field by 2 (to include the lost oxygen). But when you do that, don't you break the 1:1 ratio?
Shouldn't "fuel + oxygen + waste = 1" always be true? If I remove the * 2 multiplier in the waste field, it does add up to 1, but it doesn't if I multiply waste by 2.
I know this video is a few years old, but I'm loving this combustion method, and I'm really just looking for a way to make sure that the "fuel + oxygen + waste" always equals 1. (As I think it should, right?)
Hope it makes sense, and that you could help a fellow out - even though I'm about 3 years too late :)
jlait 3 weeks, 4 days ago |
It's been a while, so my answer may be wrong.. Glad you are enjoying it, I enjoyed making it.
Is this the 32:35 timestamp?
We define
oxygen = 1 - fuel - waste
which makes sum to 1 by definition. (But not necessarily with positive oxygen)
burn is then set to min(oxygen, fuel).
We want to consume burn amount of oxygen and fuel. We can do this with fuel easily with
fuel -= burn;
but after that step, if you recompute oxygen:
oxygen' = 1 - (fuel - burn) - waste = 1 - fuel - waste + burn = oxygen + burn
ie, removing burn from fuel is increasing oxygen by burn due to the implicit definition of oxygen.
When we do
waste += burn
that will affect oxygen again...
oxygen'' = 1 - (fuel - burn) - (waste + burn) = 1 - fuel - waste + burn - burn = 1 - fuel - waste = oxygen
ie, we have unchanged oxygen at this point. So to actually reduce the oxygen amount, we need the second burn adjust:
waste += burn + burn
oxygen''' = 1 - (fuel - burn) - (waste + burn + burn) = 1 - fuel - waste + burn - burn - burn = 1 - fuel - waste - burn = oxygen - burn
So we see after that explicit adjustment of waste & fuel we end up with the implicit oxygen being reduced by burn. And since we did a min(oxygen, fuel), we know neither fuel nor oxygen should go negative, so we will maintain all positive quantities.
Asger Mortensen 3 weeks, 4 days ago |
Ah yes, that does make sense! Thank you so much for the explanation :D
It's really fun seeing the different results with the fuel/oxygen ratio. Ideally it would be great to have a slider for "combustion efficiency" or something to that effect. I'm trying to figure out how to implement that in an elegant way. Right now I'm just turning up and down oxygen or fuel amounts.
In general I would love to see some more of these "physical" combustion models exist in Houdini, especially for simulating flames. I think some of the research done on Bifrosts combustion model is quite interesting - especially the seperation of diffusion flame and the "blue flame" to get control over the combustion/ignition fall off in the render. Something that I've always had to hack with various techniques.
But thank you for the answer! I could talk forever about the Pyro Solver (I just love simulating fire), so don't feel like you need to engage with my ramblings :)
Love the work you're doing!
jlait 3 weeks, 3 days ago |
There are a lot of fun things you can do going down this rabbit hole, very glad you are enjoying it. Make sure you also checkout WetaFX's Loki papers as they have a lot of interesting production results using these more complicated combustion models.
Asger Mortensen 3 weeks, 3 days ago |
oh yes, I have absolutely looked at WETAFX's paper, but how to implement all of this is the very hard part for an artist such as myself. I feel like you'd need to be a mathematician or a physicist to know how to interpret all of that yourself :)
But I'll keep at it, trying to figure out how to make the stuff work. Really nice of you, that you took the time :) Thank you
Please log in to leave a comment.