Jump to content

Pyro uplift force


Macha

Recommended Posts

We can specify the buoyancy direction in the pyro smoke solver with a direction vector.

However, that direction is uniformly applied to every part of the pyro simulation.

Would it be possible to use a vector field, so that every point in space would have its own direction (so that we could make a radial boyancy force, or a noisy one).

I know we can do this with other forces, but boyancy is so much more effective than, for example, gravity.

Link to comment
Share on other sites

I generally move my pyro sims (both combustion and smoke exclusive) with point velocity and vorticle strength. I found that modifying the buoyancy can have unrealistic results, since smoke inherently travels upwards when dissipating. Smoke is the keyword here. Other volumetric effects such as dust and dry ice behave differently, but I usually don't tweak the buoyancy too much when dealing with those either. Sorry that I couldn't provide some technical solution, it's mostly aesthetics I guess :rolleyes:

Edited by static
Link to comment
Share on other sites

you can do that very easily

according to help:

"Given an ambient temperature Ta, temperature T, buoyancy lift l, and buoyancy direction of B, the force will be: ((l * (T-Ta)) * B "

so if you have your vector field then simple Gas Force VOP will do the whole job

just zero out pyro's buoyancy lift before to avoid double computation

Link to comment
Share on other sites

I was attempting this with a vop force... but I'm unsure of how to grab the temperature with the op: expression. Can someone help? :)

I'm not sure this is what you were looking for Macha, but you could make B a vector value which would give you vector mutliplied by the magnitude and sign of the final temperature scaled by lift. I wasn't sure how that gas vop field works as it seems modifies a field like a volume vop in SOPs. I don't see how it can apply force.

macha.hip

Link to comment
Share on other sites

Hey Macha,

you can use a point cloud lookup in a GasFieldVop to update the velocity ( or anything else too )

All you need is a bunch of point with some velocity attributes in Sop level.

Have a look at the attachment :)

pyro_vel_force.hip

Here's an example of what I'm talking about:

I did it with a cheapo field force. I have never looked into making VOP forces, so thanks for that Jason, I'll look into it.

Link to comment
Share on other sites

Cool, merci for the gasfield VOP.

The force vop is nice too because I can simply use point position as vector field if I want a radial force, but I find it very slow and don't know either how we can get at other fields, as Jason mentioned.

Gasfield seems fast.

Link to comment
Share on other sites

The gasField Vop allows you to access any field. Inside, a field is just a parameter with a field name.

eg : to grab the temperature field, just lay down a parameter vop in a gasfield vop and call the parameter "temperature". And to set a field, same thing but set the "Export" to "Always".

That's what I did with "vel_in" and "vel_out" in "/obj/AutoDopNetwork/gasfieldvop1"

hope that helps ...

Cool, merci for the gasfield VOP.

The force vop is nice too because I can simply use point position as vector field if I want a radial force, but I find it very slow and don't know either how we can get at other fields, as Jason mentioned.

Gasfield seems fast.

Link to comment
Share on other sites

That's kind of true Chumbuk, but there is a hack to this.

You can force the recook on every frame by adding [$F] at the end of the OP command :)

like that op:/obj/my_field_force/out[$F]

pyro_vel_force2.hip

I know, very obscure syntax ...

point cloud with "op:" are limited non animated source SOP vector , you can use Gas pattikle to field DOP, it don't have this problem

Link to comment
Share on other sites

Don't know about that, but I had a quick test with a constant vector in a vopforce: It's so painfully slow compared to the exact same thing in a gasfield vop ... I wouldn't waste any time with the vopforce if I were you :rolleyes:

So is there any work around for getting access to other fields in DOPs from upstream by the VOP force? I'd like to try and finish my example :)

Link to comment
Share on other sites

You can force the recook on every frame by adding [$F] at the end of the OP command :)

like that op:/obj/my_field_force/out[$F]

ah, now I see what you meant :) - I thought it would somehow modify the path.

One for the docs.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...