Emitting smoke from debris in Houdini.

Object Networks

rigids_src Obj
rigids_sim Dop
debris_src Obj
particls_sim Dop
particles_out Obj
volume_src Obj
collision_src Obj
smoke_sim Dop


rigids_src (obj)

  • Make sure that the dop import in the rigids_src are set to fetch unpacked geometry from DOP network

  • The point velocities on the DOP import should be instantaneous point velocities

  • cache the output from the DOP

debris_src (obj)

  • Lower the life span
  • cache it
  • timeshift
  • add a point vop to add noise to the vel. Turbulent noise, multiply v, increase the amplitude to around 8. Increase the frequency to around 4.
  • add @density and @pscale. Add a point wrangle. We get the density by dividing the @age attribute with the copied relative ref to the life span of the debris source. This will get us a normalized value. Since we want the density to start at 1 and dercrease we subtract the normalized value from 1. Set the @pscale = @density
  • out

particles_sim (dop)

  • popobject, popsolver, popsource
  • on the popsource make sure that the Emission Type is set to All Points
  • We could set the variance on the attributes tab on the popsource to 0. This will make the particle follow the debris src tighter. The variance adds + - 1 to the velocity.
  • on the birth tab of the popsource, set the life expectancy to around .2 and life variance to .1
  • if we want the particle velocity to be lower we can lower the inherit velocity on the attributes tab of the popsource. set it to .25

particles_out (geo)

  • we could use a DOP I/0
  • the DOP network is the particle_sim
  • the DOP node is the particle_sim/popobject1
  • cache it, time shift if necesary
  • out

volume_src (geo)

  • one object merge, import the debris_src and the particles_out.
  • add a point wrangle to lower the pscale, @pscale *= .1
  • add Fluid Source node
  • Set Stamp Points as method on the fluidsource scalar volumes tab.
  • lower the Division Size on the scalar volumes tab on the settings tab on the fluidsource to 0.05 (this will give us a higher “resolution”)
  • add noise on the scalar voulmes tab, grain to 1, element size 0.8, turbulence 7
  • add curl noise on the velocities volume tab on the fluidsource, scale 0.5
  • cache, time shift
  • out

collision_src (geo)

  • object merge in the simmed rigids
  • connect to VDB from polygons
  • on the VDP from polygons add an point.v attribute. Select the vector type Displacement/Velocity/acceleration ( note that the SDF in a VDB the values are negative on the outside of the surface and positive on the inside, the values are reversed in a native houdini SDF (iso offset))
  • maybe a cache
  • out

smoke_sim (dop)

  • smoke object, pyro solver & source volume