Is there a way to spin smoke Tornado style?

   4354   12   1
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
Is there a way to make smoke spin around Y axis in Houdini? I am trying to create a tornado and usually this kind of effect is a breeze in 3dSMax and Embergen but I don't have access to those software now. I would just animate emitter to spin and vortex is created like that. I tried all kinds of gas curve force or particle tricks but nothing really works in houdini. On top of that smoke is so low res in houdini its hard to even figure out if any shapes are forming. Even with 0.001 particle separation and voxel size resolution is god awful. Let me know guys if smoke can be given circular direction in Houdini and if resolution can look better than this. Really not sure why it looks so bad, Embergen gets it 100 times cleaner in real time so I am not sure what is causing it to be so low res.
Thank you.
Edited by Nikodim Fomich - June 23, 2021 08:28:38
User Avatar
Member
874 posts
Joined: Oct. 2008
Offline
Yes. You see, it's logic:

-Every serious fx movie is done with Houdini.
-Every serious fx movie contains at least one vortex.

-Conclusion: It is possible to do tornado-like fx with Houdini.


You need to build a circular, vortex, force and apply it to a sim. The smoke won't bunch up since it tries to stay non compressible, so that's a common difficulty to overcome.

If I'm not mistaken there's even such a force built in.

It can be tricky for sure.
--
Jobless
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
Soothsayer
Yes. You see, it's logic:

-Every serious fx movie is done with Houdini.
-Every serious fx movie contains at least one vortex.

-Conclusion: It is possible to do tornado-like fx with Houdini.


You need to build a circular, vortex, force and apply it to a sim. The smoke won't bunch up since it tries to stay non compressible, so that's a common difficulty to overcome.

If I'm not mistaken there's even such a force built in.

It can be tricky for sure.


Oh I see thank you for explaining that. I was sure it's possible it's just that I haven't found any solution that works yet. I used particles as a emitter source and they can be manipulated with pop curve force but that didn't make the smoke be vortex like it just threw smoke around. So yes vortex force should be applied to smoke but I am not sure how. Also smoke is usually just pushed around by it instead of sticking to the guided motion which is what I am trying to do. I can even make FLIP do this to a certain extent but smoke doesn't stick to anything.
User Avatar
Member
874 posts
Joined: Oct. 2008
Offline
For what it's worth, maybe this provides a starting point.

Attachments:
vortex.0.0.hiplc (744.6 KB)

--
Jobless
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
Soothsayer
For what it's worth, maybe this provides a starting point.

Soothsayer thank you very much for this project file. I will take a closer look at this setup and try to understand how it was built.
Edited by Nikodim Fomich - June 24, 2021 17:40:10
User Avatar
Member
1788 posts
Joined: May 2006
Offline
My take, basically just do it with particles/pops cos its nice n fast, convert to volumes to feed to pyro:

Attachments:
tornado_simple_v01.hip (1.1 MB)

http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
mestela
My take, basically just do it with particles/pops cos its nice n fast, convert to volumes to feed to pyro:

Thank you mestela, I am not at home so my Houdini license is not available to me for next 3 days. I am working in Non Commercial version and can't open .hip files but yeah I did try with particles following this procedure at 33:45

https://www.youtube.com/watch?v=pk1FuH7Rvis [www.youtube.com]

I will definitely try your method once I can try it.
User Avatar
Member
1788 posts
Joined: May 2006
Offline
You can open hip files in NC, it will just save it as a hipnc if you make changes.
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
mestela
You can open hip files in NC, it will just save it as a hipnc if you make changes.

Wow another thing I didn't know. Thanks. I just double clicked your file initially but it worked when I opened it from inside the Houdini. Great setup very insightful. So you used attribdelete1 to create point attributes (pscale v age life) ?
What does @density = @nage; in a Wrangler node does? And what is attribremap1 for? Sorry but those 3 consequential nodes are confusing part of it (to me of course). Pyro Solver shows a big white cube of volume until I use that volumevisualization1 node you provided. I didn't know what that meant last time when it happened to me. When Pyro Solver got all white I meant. Thanks a lot for this.
User Avatar
Member
1788 posts
Joined: May 2006
Offline
The attributedelete just clears out all the unnecessary attributes made by the pop sim, leaving just the ones I want.

Re the other questions, easier to do bit of a walkthrough. Couple of high level goals here:

1. have each particle be a little puff of smoke that starts invisible, ramps up in density quickly, then fades back to invisble just before it dies.
2. transfer the particle velocity into the pyro simulation.

Re 1, houdini particles have a hidden bonus attribute @nage, meaning Normalized Age. It's 0 when a particle is born, smoothly increases over time, and is 1 when a particle dies. I run that through an attribute remap so that it does the quick ramp up, hold, then ramp down.

Except... for some reason @nage isn't available to the attribute remap sop. Seems it doesn't support bonus attributes (in the same way that it doesn't show @ptnum I guess). As such I have to convert @nage from a sneaky bonus attribute to a Real Boy attribute. That's the the wrangle is for, it just copies @nage to a new attribute, @density.

2. The pyro solver sop only accepts volumes as input. The attribute rasterize sop converts point attributes to volumes. But the way volumes work, each volume can only store a single thing, so the density volume stores density. A v or vel volume stores velocity. A temperature volume store temperature etc.

On the attribute rasterize I specify the attributes I want, density and v, I get two volumes named @density and @v. The houdini viewport does its best to display what we just made; displaying density makes sense, if density is 0 its invisible, if its 1 its full of smoke, easy enough.

But displaying velocity makes less sense. The viewport just makes a dumb guess and says 'ah jeez.. its like fancy density right?', and displays the blocky weirdness. Positive velocity values become really bright, negative velocity values go super dark, its a mess. When you understand what's going on it makes a little more sense; look from a top down view, you'll see the bright and dark patches correspond to the swirl of the tornado (ie if the particles are moving in a +xyz or -xyz direction).

If it really bothers you, you can put down a primitive sop, use the dropdown at the top to isolate to the @v volume, jump to the primitive tab and set the display mode to invisible.
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
mestela
The attributedelete just clears out all the unnecessary attributes made by the pop sim, leaving just the ones I want.

Re the other questions, easier to do bit of a walkthrough. Couple of high level goals here:

1. have each particle be a little puff of smoke that starts invisible, ramps up in density quickly, then fades back to invisble just before it dies.
2. transfer the particle velocity into the pyro simulation.

Re 1, houdini particles have a hidden bonus attribute @nage, meaning Normalized Age. It's 0 when a particle is born, smoothly increases over time, and is 1 when a particle dies. I run that through an attribute remap so that it does the quick ramp up, hold, then ramp down.

Except... for some reason @nage isn't available to the attribute remap sop. Seems it doesn't support bonus attributes (in the same way that it doesn't show @ptnum I guess). As such I have to convert @nage from a sneaky bonus attribute to a Real Boy attribute. That's the the wrangle is for, it just copies @nage to a new attribute, @density.

2. The pyro solver sop only accepts volumes as input. The attribute rasterize sop converts point attributes to volumes. But the way volumes work, each volume can only store a single thing, so the density volume stores density. A v or vel volume stores velocity. A temperature volume store temperature etc.

On the attribute rasterize I specify the attributes I want, density and v, I get two volumes named @density and @v. The houdini viewport does its best to display what we just made; displaying density makes sense, if density is 0 its invisible, if its 1 its full of smoke, easy enough.

But displaying velocity makes less sense. The viewport just makes a dumb guess and says 'ah jeez.. its like fancy density right?', and displays the blocky weirdness. Positive velocity values become really bright, negative velocity values go super dark, its a mess. When you understand what's going on it makes a little more sense; look from a top down view, you'll see the bright and dark patches correspond to the swirl of the tornado (ie if the particles are moving in a +xyz or -xyz direction).

If it really bothers you, you can put down a primitive sop, use the dropdown at the top to isolate to the @v volume, jump to the primitive tab and set the display mode to invisible.


Wow I am so grateful you took your time to break this down. I learned a lot from it. Not sure I would immediately be able to use @nage attribute or some concepts you talked about but at least I understand they exist. Btw I see the @age attribute, I wonder if @nage is life span of a particle from 0-1 what would the @age be? I had issues with perticles lasting long enough so that the smoke swirls would be greater and thicker twisting around the tube. But I must say you came as close to what I envisioned as a great tornado starting point as possible. In only 8 nodes you were 80 percent done with a main body of a tornado.
Thank you again.
Edited by Nikodim Fomich - June 25, 2021 07:06:45
User Avatar
Member
1788 posts
Joined: May 2006
Offline
@age is life lived so far in seconds.
@lifespan is how long the particle is destined to live.

@nage is @age divided by @lifespan.

You can set the lifespan of particles on the birth tab of the pop source node within the popnet.
http://www.tokeru.com/cgwiki [www.tokeru.com]
https://www.patreon.com/mattestela [www.patreon.com]
User Avatar
Member
67 posts
Joined: Nov. 2017
Offline
mestela
@nage i

I see. Yes I use LIFE EXPECTANCY in POP SOURCE to set life in seconds. I assumed that what @age would be.
Thank you for explaining that.
  • Quick Links