Jump to content


  • Content count

  • Donations

    0.00 CAD 
  • Joined

  • Last visited

  • Days Won


k2p8 last won the day on June 3

k2p8 had the most liked content!

Community Reputation

18 Good

1 Follower

About k2p8

  • Rank

Personal Information

  • Name
  • Location
  1. Sparse Pyro Upres H18

    @Atom What does it means 'in other DDC packages' ? If you want to match a pyro look to an other pyro you can look at the volvis_ attributs created by the post process of the pyro. You will need density / flame / temperature fields and the values of the ambiant / reference temperatures in kelvin of the pyro solver. If you match all those values you should have an identical result. If you re importing smokes simulations from an other software you might need to fitrange / scale the fields first i think.
  2. Sparse Pyro Upres H18

    Yes my bad, i tought it could be a nice idea to post the solver here since it s finished now :V
  3. Sparse Pyro Upres H18

    Hi @Noobini, i have a AMD Ryzen Threadripper 1950x (16cores) 3.40GHz, 64GB ram with windows 10, 64bits
  4. Sparse Pyro Upres H18

    Hi everyone ! I have been working on a sparse pyro upres recently and did a video to test it. You can find the hda here : https://drive.google.com/drive/folders/1H4Y0HNELDJ6lmHsM43eEI_lRgNuCEaxX?usp=sharing More details about the solver : The sparse upres solver is a deeply modified sparse pyro that allow the user to quickly upres a smoke simulation from simple inputs. The core idea for the upres is to bypass every nodes related to velocity update in the smoke solver, like the project non divergent, vel advection, collision mask, ect. and replace the upres vel field by a copy of the low resolution velocity. One can then advect any dyes needed through that vel field to create an upres. In order to keep the pipeline as simple as possible i splitted the process in 2 nodes, a 'configure_inputs' which precompute some lowres fields and normalize inputs and the upres solver itself. The sparse solver needs to match the parameters of the lowres simulation to work properly (like dissipation, flame amount, temperature diffusion, ect.). To quickly set up the upres solver i added a python script, that copy and paste all relevant parameters of a lowres pyro to the upres solver. You just need to select which pyro solver to use as reference to match the parameters. The sparse solver itself has some simples parameters like noise / random that allow the user to inject details in the lowres vel field. Noises and randomness are stored on an separated field, 'noise', to be conserved through time since vel is simply copied from the lowres. That allow the noise field to be advected by the vel and then merge with it to advect other fields like density, flames, ect. Which create a more complex pattern than a noise directly merge with the vel. Color can be added at the upres stage if the source contains a Cd and Alpha volumes. Those fields will simply be advected by the upres solver like any other fields resulting in a colored smoke. Your lowres simulation needs no color. Retime can be perform by interpolating the source and scaling parts of the upres solver. The process is automated from a tab in the sparse solver. However, it can vary if you animate the retime or set it to low (especially with flame). The upres solver does not need any modification of the velocity other than small disturbance / turbulance details. If you add strong changes in the vel field your upres dye will deviate far away from the lowres vel field. Every major modifications of the vel field like wind or buoyancy need to be added in the lowres simulation. A fake divergence can be added through the process by computing the negative gradient of the density added to the velocity. Since pressure projection has been bypassed, important amount of this 'divergence' will result in compression in the vel field creating artefacts in the smoke. However, it can be usefull to break the sharp edges of an upres smoke if needed. At last, one can force the upres to match the lowres fields by simply removing parts of the simulation which are outside the lowres smoke by taking the lowres density field as reference. If the lowres is below a threshold value, the upres smoke is multiply by amount less than 1. This can be usefull is you have strong noises and need to dissipate them to stay in the bounds of the lowres.
  5. You're welcome I updated a bit the solver and did a video to test it here is the link with the updated solver (it's the same as the previous one) https://drive.google.com/drive/folders/1H4Y0HNELDJ6lmHsM43eEI_lRgNuCEaxX?usp=sharing
  6. Expand Vel Field ( don't want use divergence )

    You may try to tweak the gasresizefluiddynamic. If you dive in, you ll find a sopsolver with ResizeBounds data. Inside merge a bound of your velfield from sop with the out node (don't forget to tag the merge node as display). It some sort of a minimum of the 2 bounds so your sim will expand of the vel field at the next frame.
  7. Each x th iteration

    you can try a modulo (%) to execute instructions every x iterations if your variable is an integer like : if(integer%30 == 0, 1, 0) in that case it will execute instruction every 30 iterations
  8. Gas turbulence to not affect near emitter

    by default the gas resize only resize legacy field of the pyro solver like density, temperature. If you are adding a personnal field you need to tell houdini to resize it as well. Either it will be a 1x1x1 cube. The +1 frame starts to resize the sim after the sourcing. So you source first then you resize. Either your fields will collapse because there is no density in the simulation.
  9. Gas turbulence to not affect near emitter

    hi, i checked your file. Uncheck track by object it will expand to much your domain then u can add your field as you did. It s better to work at sop level for this kind of smoke by putting your dop object directly in your object rather than outside. Also you need to set a size and center for your smoke object to initialize it. controlField_v002.hiplc
  10. Hi folks ! I am working on a sparse pyro upres on my 'sparse' time (lol). I tryed to automate as much as possible the process by normalizing inputs and coding a python script that copy and paste all the params of the lowres simulation to the upres node. So the only thing to work with after matching params from the script is the noise / dissipation of the upres. I added a hip with hda in the link. The hip is annoted to guide you through the process. https://drive.google.com/drive/folders/1H4Y0HNELDJ6lmHsM43eEI_lRgNuCEaxX?usp=sharing the pipeline is fairly simple : 1. add a configure input node, it will merge all inputs from low res sim and source to normalize and rename fields 2. add the sparse pyro upres node 3. In the tab match properties of the upres node drag the lowres pyro and click match properties 4. enjoy The sparse solver itself is a deeply modified sparse pyro where you basicly cancel all nodes relatives to vel advection / projection and import the vel from the lowres in copy mode. Then you can add your sources (without the vel or v sourcing since it has already been calculated in the lowres) and add some noise. Since vel is in copy your noise won't last in the sim so i created a noise channel in the smoke object that is advected by the vel and merge to the vel. You can also simulate your low res without color and add color to your upres source and simulate an upres with color, it only needs a Cd and Alpha channel.
  11. what you can do is to create a 3x3 transform matrix that will tell houdini what orientation has your instance from your normal vector y = v@N; vector x = normalize(cross(y, set(0, 1, 0))); vector z = normalize(cross(x, y)); 3@transform = set(x, y, z); Houdini has priorities for points orientation from higher to lower priority it is : matrix3 transform vector4 orient and then a combinaison of vectors like : v@N / up or v@v / up the main problem i see is points jittering not really points orientation i attached you a file, hope it is what you intended point_jitter.hiplc
  12. Hi folks, I am actually coding some basic operators like divergence, gradient in vex and python to demistify them and wanted to share the file with you. Feel free to update or correct the file since i might not be sure of some operators. it contains : - Divergence (voxel and points) - Gradient (voxel and points) - Curl (voxel) : the curl seems to not have the same order as vdb curl so still in wip - Laplacian (voxel) : The computed laplacian is somehow less precise than vdb laplacian - Covariance matrix and eigen vectors (points) : It works but the scale is normalize - Laplacian matrix of a mesh (python) - Bernstein polynomials basic_operators_001.hiplc
  13. you can add a DOP geometry wrangler to/after your bulletsolver with i@found_overlap = 1;, it will force bullet to recompute collision allowing you to pop coins out of the stack.