Transcript for:
Gas Microsolvers and DOPs in Houdini

foreign [Music] visual effects based in Munich but travels around a lot he'll be talking about gas marker solvers and Dobbs over to food [Applause] so thank you everybody thanks for showing up that early in the morning I want to talk about gas microservice and top data in Houdini inside of Houdini um so um my name is and I'm head of effects at Rice visual effects Studios before I start my presentation I would like to show our current uh Show reel foreign [Music] [Music] [Music] [Music] foreign [Music] foreign [Music] [Music] [Music] [Music] [Applause] let you know why this talk happens and the presentation and the main idea was there are simply no example files available for microservice and ever since I do Houdini I was always looking for it and never found something uh same goes for tutorials there's one uh fantastic masterclass by Jeff late building uh Louis it's from scratch I think it's called quite old but very very good and this is the only one that I could find in the last 10 years or so um other than that again very little info on forums Discord if at all and so but the Houdini documentation is very well documented the Microsoft are very well documented so at one point recently I just started to build my own setups my own example files like purely from scratch from a to z going alphabetically starting with the first one in the row and then just going through so um because I just wanted to have that so the outline the main outline for this again apart from the microservice is we're going to look at the empty object up first and then look at the top geometry spreadsheet some top data and how it's handled and then Microsoft of course and then we will look at the different geometry types at different fields scalar Fields Vector field sign distance fields or ISO surface implicit surfaces um so yeah what are gas microservice before I start explaining them they are most granular low level Atomic building blocks of any kind of simulation that you have so no matter what you deal with pyro flip are we development pops it's always consists of a lot of micro servers so even now if you have like more and more uh all the solvers coming towards shops which is great at one point you want to understand how this all works under the hood if you want to change something art direct something especially for simulation it's always good to know what's happening below and also when you dive into most of the sub bass stops you still end up in Dynamics context which means you have to deal with microservice at one point for example when you dive into the flip solver in the current Houdini version this is the first level all those white nodes around you can see most of them are micro servers but this is only one that will level level deep so if you go take the green node on the screen right then you will find another level of this complexity and it goes further three four levels of those and then makes sense to understand those 112 I think it is microservice this is the overview so again I just started with a and then went my all the way through um I won't go to all of them today but yeah I will just try to focus on some of the what I think are the most to me useful and the ones I like most um any Dynamic simulation in Houdini always starts with an empty object top which is literally just a empty object it's a data container and everything that you do then in dobs or any simulation um all the data that you write gets applied or attached to that like Fields sources colliders whatever subservers you have relationships position data visualization which we will have a look at in a second so starting with this empty object which is of data type Sim object that you can see here let me just make that a little bit bigger so I see yeah so um there is a screenshot of the hdk where you can see the C plus plus class reference of it if you want to learn more about it just dive into that and have a look again this is just an empty object in my Dynamics context which you can see which I call primitive one because it's nothing else than an empty primitive which already has some little bit of basic data applied to it that you can see in the middle but then you start to add and apply more data to it for example here to that primitive object empty object um A Primitive one empty object sorry I just apply a attach or in this case with the apply data dot apply some sub scalar field which I just call density which is the most important thing the data name which you can see highlighted in blue below and then the path to it which you can see up the data path and then like in every geometry spreadsheet that you know from Houdini it's a typical key value pair table which shows you all the parameters for example highlighted here the division division size and the size of the bounding box itself this way you can inspect all your data just the same way that you would in any geometry spreadsheet um if you do that by default most updated is not displayed in the viewport as you are used to by Houdini right so there's a top for it that's called the visualization dot the different types of that to display any kind of data that you want to have visualized in your viewport this is also useful for importing and displaying them afterwards in Subs so for example here the density field that I just attached here isn't showing up in the viewport so then here what I do is it's just a basic scale of field visualization dot attach it to the subscaler field of type density and then you see the density showing up in the viewport apply the data to it so the Primitive object and there you go you have your first basic simple setup of density sphere being shown and applied in inside of tops so what can you do with it there are three different color codings for a dynamic simulation in the dynamic simulation context in Houdini that's a gray green and purple so gray is the objects that are being processed green is the data that you apply to that and purple as well data applied to that or solver data or sub data that's going to be solved here for example I have a density field I created a vector field which I called well and then I use this gas sub step node with uh to show the three different data types that's going to be attached here and solved so um then if you have this solvers and subdata applied you can also see that directly in the geometry spreadsheet as you are as you know and this one here gets then applied as a solver data and then in this case the gas sub step and the gas at vexcl nodes are called my advection and gas up step one so this already brings me to the first Microsoft Word that we're going to look at which is the gas at vect CL node uh but before I I show that I want to talk about really quick about the modify data dot so everything that the data that you have in your Dynamics simulation context you can on the Fly modify that and this is quite important and this is a rarely used note to be honest but it's super helpful and I like it a lot so for example here the gas at vexcl node has a time scale of 1 by default and then I added a modified data node and change the value which you can see below highlighted in green I I wrote I will overwrite the time scale data just by a different value than one which is the default value and then you can see that in action for a second so here for example I have the gas at vexcl time scale to one you can expect it inspected in the middle in the in the geometry spreadsheet and then the simulation runs I enacted by some velocity upwards velocity basic stuff but then I add the modify data change the bypassing of it and then you can see in the middle how the time scale changes for the next simulation to 0.133 I think was the value that I just randomly typed in so you can per data and per solver that you apply you can change any change and modify any data that's being processed by the solver which is really crucial because you have you can have tons of data all going into the one solve but then you can change the and modify the data that's being applied during the simulation it's super helpful which now brings me to the first Microsoft that you already saw in action right now which is the gas at vexil and this is the first one in the alphabet so we're going to start with this there's three different ones and then the system I will show this is always the dot itself and then just copy paste it from the Houdini documentation a short sentence summarized which in this case affects any field or geometry by a given velocity field three different types of them in the end they all do the same but with some differences in differences in performance of course and the way they are coded and you can also look these codes up in the um in the hdk or in the includes for on the right side you can see the trace methods um four different ones Euler the basic Euler forward Euler explicit midpoint then I don't know how to pronounce that properly rongikota or ranji Kota 3 and run geikuta4 um and you can see the codes in the includes you can check them out yourself and then also the same goes for the toolkit for the opencl trace method that I showed here on the left if you want to dive into that so what it does is basically what you all know all the time it just affects fields in this case density by some noise velocity but what you also can do is just uh you can of course add any type of geometry or field or data in in with this one so for example here I'm simulating some pyro that you can see in white and then on top I'm adding a Vellum cloth and an ad vecting the Vellum cloth cloth on the Fly by the um so I advected with the pyrosimulation and that in the end then looks like this and what is very nice you can see in the in the middle of the screen below where one edge of the of the cloth is like pinched in inside of the Velocity field and then it lets loose and then it it brings it Springs back because of the stretch stiffness of the cloth so um this brings me to the next uh Microsoft which is the gas analysis top also the next in the alphabet so this computes various analytic properties of the input field to produce the output field sounds very complicated but actually the mathematic I guess mathematics is really complicated but the node itself does it really great and it's very useful to have so you can have these seven different types of analysis that you can do on on your field so curvature gradient laplacian Divergence current normal or normalize the field or measure the length so here for example with a few lines of wax I'm writing a velocity field which is a Divergent noise field basically and then I'm using the gas analysis top to compute the Divergence of this velocity which we all deal with in any fluid simulation which we have a look at in a second so this is the divergent velocity field I'm Computing the Divergence of it and then I will visualize it in the viewport and Divergence really quick is just the imbalance of in-going and outgoing velocities inside of a voxel so if you have outgoing velocities you have an expansion if you have inwards pointing velocities you have a negative Divergence so it means it would disappear or pinch so it's a sink basically a certain source and think um so I'm again Computing the Divergence here with the gas analysis top of my velocity field and write it into the Divergence which I will then show you how to also visualize that and here you can see the clear relation between the velocity and the measured diversion so on the top right you can see some positive Divergence where fluid would expand and go outwards and on the screen left you can see how it would sync and have some negative Divergence and this the lines are the velocity trails and the colors are the measured Divergence and now if we um on sec I think that's the yeah exactly so sorry I think that both two sheets have mixed up so I will come back to this one later but um for that to have the Divergence of the velocity reprojected and taken out there's another microsolver which are four different one which all and in the core do the same thing again with some performance differences so one is the gas project this is the gas project non-divergent tops so this removes any kind of Divergent portions of any Divergent velocity field so these are the four that exist and I'm now coming back to my actually to my example this is exactly what I was just showing you with the Divergent velocity field and then I'm adding for I I'm just bypassing the uh the non-divergence step and not not bypassing it so you can see it in relation so this is the uh the Divergence Tab and this is the non-divergent field so I'm just switching in between so once it's green it's like completely non-divergent and once I've asked bypass it like in this it's the Divergent field so this is all done with this compute with this gas analysis top where I just removed then the portion of the uh the the Divergent portion of this velocity and here you can see that again going green so it's non-divergent and if I bypass the non project non-divergent multi-grid node it's going to be Divergent again and also visualized above that is the velocity field which is non-divergent here and Divergent here so this brings me to one big fundamental concept of having non-divergent fields and fluids inside of any application in this case it's Houdini of course so this brings me to the helm also so-called Helm holds decomposition or helmholtz theorem which states that you can that any Vector field that you have I just called it f here um can be broken into two components main components one is the Divergence three component also called solenoidal a component and one rotation free component which is called the irrotational component now if we look at the irrotational component or the rotation free component the purple one in this case have a look closer there rotation free in this case means it has zero curl there's no curl uh existing for that part of the for that component the other one is the divergent uh part sorry the non-divergent part so the green part has no Divergence but curl but the purple part has no curl but is Divergent so to make a fluid non-divergent you would have to subtract any kind of rotation free component out of the Velocity field so again rotation free means it's a flow with no swirling or local rotation and you can think of that like Edge Loops like where all flow lines of the Velocity field are closed Loops so you would have those things or no sources and there's one main aspect one main fundamental theorem which states that the curl of any gradient of any scalar field is always zero so this means we always so you take a scalar field which in this case is the pressure field take the gradient of that and once you complete the curl of the gradient of that it's 100 sure that it's zero you can also do that in uh prove that in Houdini directly which I did here so I have the same velocity field that I just showed you which is Divergent and then I added a vector two Vector feeds one is the gradient one is the curl and then I use the gas analysis stops two of them the first one highlighted in white takes the gradient of the density you can see the formula on the screen right on screen right and then the second one from that computed gradient I take the curl and then I measure that and pull it into subs and then let's have a look at the values so I re-import everything here into subs and then I get the these three split notes that just split the curl the gradient and the density so in red you can see the density field which is affected by this Divergent velocity field and then you can see the volume Trails which is the gradient and you can see in green the measure Divergence and if you look at the geometry spreadsheets you can prove that all of the values are zero or really really really slow uh low values like for example it's um one 0.00 like one E43 or something like that so with a lot of zeros in front so it's almost like practically zero and this is what you can see here with the three sub nodes that I just described in the geometry spreadsheet so um brings me to more arithmetic operations in this case also we will have a look at constructive solid geometry operations there are four of them in this case which I want to show we will start with the gas calculator and then we will have a look at the three other ones which as I showed here the gas calculator performs different operations of any pair of fields so um for example here the Sim the most in the basic way described in the basic way is what the volume Source top node does it just takes in a field and then computes it or copies or adds it to another field so here what I do I just have this sphere this is the sub no this is the sub tree in the middle have a sphere converted to a density field and then go into Dobbs and then screen above right uh screen right you can see the top field at the top context sorry the top Network and I in this case I would just copy the density to Divergence and then project the non-diversion step again and then add Vector velocity by the velocity and the density by the velocity sounds very complicated it's super simple so I just do the calculation here just says copy and then you can see how the density field is Divergent the source field is density Source field is density at destination field is Divergence sorry Source field is density so I just copy the density to the Divergence make it Divergent free and just Attract it by itself you can also do some Source pre-multiplications would I would whatever I show here so I just multiply it by three for example the source which like before it like copies it over to the Divergence Destiny destination field it just multiplies it by three which makes it faster by zero or 0.2 I'm just showing different values here to see what what happens so the next one in this row is um SDF combinations or like CSG operations basically constructive solid geometry where you can build geometry and sdfs from each other so uh what you see what you see in the viewport is the Dobbs tree that you can see on screen right but you can have the exact same result and the exact same thing in Subs which is shown in the middle so I have a sphere SDF sphere and the hyperbox SDF uh SDF of both of them and then either you use the dots which I show in a second or you use the VDB combined sub or you use the which is a new note really become a convex clip SDF note which we will also have a look at in dobs in a second so here I'm just taking the maximum of those two fields and just pull bullet basically with the VDB combined and what you see is the same thing in dobs and in Subs so you can do the same in in both contacts and all three operations do exactly the same thing so here I'm just taking again the maximum I'm stop importing the SDF sphere so scalar field importing the SDF box and then with this gas calculate node taking the max of both fields which then just does the uh the clipping so but there's another new node in 195 which is one of my favorite notes basically it's a very new very powerful and super good this performs a again CSG operation between a sign distance field and the convex Hull defined by a set of points and this is super important and super helpful because you don't need two assign distance Fields so you don't have to convert them to vdbs but you have an infinite box for free which means you can just clip any VDB that you have in Dobbs this is the sphere again as of SDF by this gas convex clip SDF node and the nice thing about this is that you can also have Point groups on this node that then performs the CSG operation directly this is super cool and I'm showing this in action here I'm just changing the point group numbers here and you can see I mean given the fact that it's only a sphere yes but it's super fast that's super performant and you can just buy the point group that you have defined in Subs with this group one note here that you can see in the substrate it's just changes uh instantly so you have it all for free and then there's another functionality in this in this top which is the clipping planes and you all know the clip shop I guess using Houdini so this is the equivalent of that in dobs so we have you can have like here I'm deleting the group adding the clipping planes and then you can just instantly have your um VDB clipped in the viewport directly and the parameters again are very similar to the ones that you know from the clips up um this one brings me now to the gas linear combination drop which combines multiple fields or geometry attributes in this case together so here for example I just have a sphere coming in as density again I have some velocity upwards velocity basic upwards velocity and then I'm just adding density to the density multiplied by 0.2 so I add I just take the same Source twice multiply one of them by 0.2 and then keep that in the loop before I do that I will just show it without the gas linear combination so I just add vecting the density sphere by the velocity field upwards and then in the second movie you will see so I'm just switching here the two streams so this is the basic attraction without adding but now that I add the add density so it it starts to accumulate and this is basically what you would do with when you have a sphere source and then you would accumulate from The Source all the time rather than have it building once initially and then being affected by the velocity right so and then I'm changing some values here and writing it back into density very simple but very powerful what you also can do with this stop is to build your own custom solver so here I have a bunch of particles you will see that in a second on a grid scattered on a grid and then you can do your basic Euler integration method for simulating stuff so just two steps of integration you integrate Force into velocity and then integrate the velocity into position I'm showing that in two ways the red part is this is the um using the gas linear uh combination drops and then the same thing on the right in Green is having two wrangles two geometry wrangles with one line of Vex code so I'm just uh basically just a basic integration of force into V first which is the upper red node in the middle highlighted in green and then into in the second one I'm integrating V to p and then multiply that by the time step and in from soaps there's nothing else coming in that's scatter points you can see that in the middle colorized red for the left part and green for the right part but both have the same attribute Wrangle that added to that with some uh vector vector or attribute saying Force set to minus 9.8 1 and once I let that run and integrate you can see that both uh do exact the exact same thing and this way you can build your own custom solver basically super performance super fast and very basic so but there's a note for that Microsoft we don't have to write that or build your own there's the gas integrated op which does exactly this thing with a little bit more advanced stuff that Jeff late obviously built so um adjust the positions of geometry in this case particles according to applied velocities um so here I just have again the scattered points but this way this in this case without any attributes coming from soft no velocity applied to that I set that directly inside of dobs and set a simple write boards velocity five zero zero something like that and then again I just import the nodes have the Velocity set in the vanilla and then having the gas integrate adopt setting integrate velocity it just moves rightwards exact same thing now this might not sound very interesting and and exciting but what you can do with this is you have a existing simulation which took 18 hours on the farm to simulate and now you want to have slight changes so you could take the original velocity that comes from that from that simulation and apply some secondary simulation on top of the existing simulation of course this wouldn't include any collisions that were already happening obviously but if you want to have some additional Airfield additional noise additional gravity speed UPS drags whatever it is adjustments on the velocity of the existing simulation you can just add that on top and without any need of simulating the whole thing again and again and again so this brings me to the next three different types of geometry and particle types in dobs that are existing so the default one is the so-called geometry data which we just saw in a few cases now then there's two more there's verticals and there's surface verticals are Vortex particles you may know them from Vortex confinement pyro stuff and then there's surface surface particles we will have a look at both of them first let's have uh let's see the vortex party vertical particles first so this is a specifically formatted geometry type representing these kind of verticals and then there's a note for that that understands that and solves it in a correct way and vertical means nothing less nothing else than uh points with Paddle Wheel Vortex forces associated with associated with them so and and this by the way prevents forces from dissipating or blurring too much because of artificial viscosity that you always have in some velocity projected fluids like flip pick for example where you uh transfer velocities from particles to fields and then back to particles again which is exactly what the flip picture solver does so the vertical attributes are three p-scale up and Mac it's come back for magnitude magnitude um p-scale of course is the influence radius up is the orientation of this kind of pedal wheel forces that we will see in a sec and then magnitude is the scan and if you have these three attributes applied to that vertical geometry then the solver knows what to do with it and then uses this that comes in conjunction with three micro servers the gas vertical forces stop the gas vertical geometry dop and if you want to have that the gas optionally the gas vertical recycled up so let's have a look at the gas vertical forces first again you create your vertical geometry and then you can have these nice small surf uh Vortex forces that's applied to your fluid simulation and keeping the details there and they are on screen right up uh you can see the three um main attributes that I'm using here so what I have here in this top is nothing else then just a density field and that's it coming from Subs everything else is made completely in dubs so you just add some vertical geometry which is the particles scatter them in this imaginary box tell the Box how big it is how many points you want to have scattered in there and then you just let it let it uh do its magic and when you reduce the p-scale to a relatively or very low um very little um value you can you will see immediately what happens if if you reduce the p-scale like a lot so here the the the the influence radius is quite huge this is why you get those nice curls but if you reduce it to a very small and low value then you can immediately see what actually happens around this vertical geometries he you wouldn't even see them because they're all scattered in and around the sphere and that creates these nice breakups around the surface and please keep this one in mind because in the end at the end of the presentation I will show you a small example of how to this breakup can help in fluid simulations so uh this one brings me to the next one which is the gas seat marker stop um this creates Mark so-called marker particles or surfels Surface particles that exist along the boundary of uh implicit surface or scientistance field so you just create those marker particles and it looks for a sign distance field which is in this case is the flippy and then I created some velocity field and the surface itself are recognized once they have the type circles or the data name circles they are recognized by the solver and then um treated as such so here I again I import the flippy as an SDF I have some noise velocity field that I just with the gas field swap in the middle I create some basic I don't know turbulent noise or something and then I advect this SDF so the flippy SDF the geometry by by this velocity noise field and then in the second step on screen right in green you can see the gas heat markers that would create here I think it's 60 uh surface surf Fields per voxel so for each voxlip creates 60 of those points and particles and since they are named or that the data name is called surface Houdini knows what to do with that with them and then um creates them around the the narrow bandwidth of the SDF of Flippy so in red you can see there's the the the bandwidth towards the in inner side of the SDF and in green it's outside all around the level set the zero levels here and you can see that in action I will repeat this a few times so you know what's happening because it's quite fast changing um so again I have flippy as an SDF here not shown yet but then I show it and then I displaced flippy SDF by the noise velocity and the circles just again lie around the the implicit surface of that and this I believe is the way that flip fluids are meshed being meshed so they take the surface field and then you have these seed marker particles and um they describe where the surface actually is which is shown in green here and then you get the points which represented displaced geometry basically does that make sense is that clear somehow and then you will take the green points obviously and then mesh it and do the particle fluid surface stuff which you can do then to add convert your particles in the surface so um this was uh around surfaces of iso surfaces and the other one of these kind of gas C particles node rather than the acid markers is the gas heat particles top Microsoft which creates particles inside of inside of the surface not around this and not not on the the narrow band or the iso surface but inside of them you can think of the points from volumes up basically which is exactly the same thing in dots so here I'm just again importing as flippy as an SDF and then I just do some gas seed particle stop and I just colorize them so having said that you can I'm really re-importing them back and then copy copying spheres on that on top of them and in this case they all have the same P scale but they come with the p scale attribute and this is very cool uh sorry that was too fast so you can just fill any type of SDF inside of tops directly with points and then have that filled and then get it back to Subs so I have to speed up a little bit guys so the next one um coming towards the end of my presentation is the gas particle move to isotope sounds very complicated it's super helpful super simple that just moves particles along or to an SDF or some implicit surface so this can for example can be used to project particles on some surface which I will show in a second or you just move it out of the surface just some Collision surface for example so um here I'm importing uh Taurus basic Taurus I'm displacing it somehow and updating it in dobs every every frame and then I use the gas particles move to ISO top to project these red points from a grid onto that moving surface and also I use another microsover here which is the gas geometry to SDF top which just converts the original geometry coming from Subs in a scientistance field so this is the same this is the thing in action so I'm just importing the Taurus converting it in tops to a scientistance field and then projecting the points once I not bypass the node onto the surface and the nice thing about this is that it takes into account the p-scale of the points so according to the p-scale they all lay correctly on the surface of this thing also super powerful and super nice to know and I think one of the last micro servers for today is the gas intermittent soft top which attached to any solver inside of your dop context solves only this solver as as at a specific interval so this this way you can ensure that specific operations that you need are done at a different rate than others so what I do here is I have this sub tree as free as a density and then going into Dobbs but the dot net here has 10 sub steps applied globally this again in dobs means that anything you would do in Dobbs would be computed and solved 10 times per frame but what if you don't need that for any kind of adopt or node so again the dotnet has 10 sub steps globally but I'm again building some velocity upward velocity and then at vecting this density feel better upwards velocity but I use the gas intermittent solve to change the salt from 10 sub steps to only cook twice every second frame rather than sub step so I first bypass it this is the dotnet with 10 sub steps you can see how slow it goes and then in in the play bar in in the lower area you see the wire scrap between one frame which has 10 sub steps and now I un bypass the gas intermittance off which has solve every SEC like every two frames so that means that this node the gas at vexil node is computed like on on every other frame and you can add that per attached solver so you can have different type of sub steps in your simulation no matter how Global you are and then apply that different sub steps to any kind of solver that you have and this is actually so useful that it's used in the Vellum drapes of that you all might know um basic grid distance constraints to turn it into a cloth and then when you dive into the Vellum drape so this has a functionality of having uh welding additional seams but it has a frame delay and this Frame delay by default is like 10 and if you dive inside and and see what's happening you will find this and this is just pure vanilla I didn't touch anything here just dive into the Vellum Drive swap I just highlighted it in green so you see where it is it has this Frame offset set to 11 in this case which is exactly the 10 frames delay plus the starting frame of one inside any Vellum drape stop that you use so it would just delay the simulation to 11th frame and then cook in and not cook in between for all the sub steps because it's just needed once and that again applies only once for that whole thing and again as I mentioned earlier I will this will bring me to my last uh slide for today is again the gas vertical forces and how you can use that this is the most basic um kind of like the typical mushroom pyro shape that you have without any shaping without any forces looks beautiful but nobody wants that usually and then you can know the notes like take out the mushroom shape take out the mushroom shape add variation and then without having any other thing and any other shaping and any other turbulence or disturbance of what what not apply to that I'm just using vertical forces around the isosurface of that density which takes me to that and there's no turbulence involved in here so the whole shaping tab of the Pyro simulation in this case is just empty I just remove everything and just use vertical geometry in this case so this brings me to the credits these are all the micro servers that I had prepared for this presentation but I think we already add 43 minutes so I had to take them out preliminary um yeah thank you very much for your attention [Applause] um we have Marian with us who's our head of HR and we are hiring so jobs.risefx.com or just look around and talk to us directly we have a few people running around here also Flo is with us Ollie Makowski with us Lucas here so speaking of Luca he will be next and talk about uh some deep USD stuff and I think we have exactly one minute left for some q a so shoot we have time we have time so my first question you might have covered this is uh are you releasing these example files I didn't expect I don't know [Laughter] yeah yeah I just started doing them A to Z I'm I don't know where I am I don't know 40 of them maybe or something like yeah we can think of that I could have sold them but I just wanted to give something back to the community and you guys so yeah like yeah whatever yeah is that a yes laughs [Applause] so yeah if you have some questions go ahead questions yeah so um at that last example with the gas and vertical forces um how much faster would using just the Pyro solver plus the gas vertical forces be versus like a stock pyro solver that like you'd get on like the Shelf you mean like in comparison yeah I have I have to be honest I don't know I have to check this this almost running like not now this was quite fast actually but I I cannot tell you like a number or something that would be unfair now I gotcha so would have to check the performance Monitor and do some A to B comparisons to have directly uh direct comparison because of course this is like super reduced setup right and you don't have all the overhead and the power solver itself is super great but it comes with some cost of course but again you have all the control and this is not given with this one so this is the basic and reduced most reduced setup that you can think of so of course it's super fast but in a production scenario you can just have that one piece added to your stuff but then again it comes with other additional systems So yeah thank you you're welcome I think there was one on the heels of that vertical question there um I did somewhat of a poor man's verticals I'm just kind of curious comparison wise uh just setting up everything involved or excuse me in Subs with uh some randomize orientation extracting up vectors from that and then just doing cross product exactly from that that's exactly what it does it's so it's the same setup but that's all just built into that gas solver exactly okay that's exactly the way it does so it takes the direction of your up Vector and then crosses that with the velocity and then you get this to us okay so so the confinement that you're getting from those verticals that's keeping everything contained is that part of the solver or is that a secondary like force that's uh pushing in on that I think I believe this is done by the vertical specifically formatted geometry itself and this way you can keep this kind of blurring that you would get from any flip to pick and transfer back to particles in the cell method yes okay so I think this is what the node actually does awesome thank you you're welcome other questions yeah so it looks like in most of your setups you had the microsolvers plugged into a gas substance node um what was the purpose of doing that as opposed to plugging the Microsoft version to each other it's the same exact same thing okay so just so you can use the multi-solver but I think I believe the Microsoft is an HDA itself so I wanted to avoid hdas as far as much as possible but it's this exact same thing okay you can do with the gas sub steps or with the Microsoft it's one to one exact same thing and they're evaluated left to right Dobbs is always evaluating top to bottom left to right okay so that's the basic principle and it comes down to the gas sub step in the end yeah okay thank you you're welcome although all the nodes that use uh volumes and when you use a vdb's artist not optimized to take advantage of the sparsity of the vdbs or that I internally converted as a like a uniform volume as far as you know I mean I imported vdbs most of the time anyways so they come in sparse into dobs directly okay I I was wondering if internally they are converted into like a native Houdini I think they are converted right I'm not sure but I think I believe so yes I would have to double check that but I believe yeah I don't think that tops works with babies other than the clip as convex clip SDF this directly works on video business I know um other than that I'm not one of this issue thank you yeah other questions yeah uh thank you for this demystifying this topic and thanks Chris for peer pressuring him into sharing the example files so they're not done yet so my question is like have you tried writing your own custom solver like is there like a C plus plus class that in the hdk that we can inherit from write our own custom microsolver I'm not a programmer myself okay so I try to understand the maths behind but I by no means I'm a C plus plus programmer and developer so you could do that for sure yeah of course the hdk is there you can have a look into the classes and the reference and then just write your own custom solo of course that's possible but after you but but you can do that for sure yes I know that okay that's great to know thank you so much yeah you're welcome anything else do it thank you so much thank you thanks for having me