Commit Graph

38 Commits

Author SHA1 Message Date
f593333099 Fix T43220, T47551: collider scaling or rotation causes smoke to explode.
The problem happens because smoke collides only with the surface of the
collider and uses incompressible fluid solver. This means that scaling
the collider tries to compress or decompress fluid within the volume of
the collider, which can't be handled by the simulation. Fast rotation
likely also causes transient scaling due to emulation of arcs by chords.

This can be fixed by finding compartments completely isolated by obstacles
from the rest of the domain, and forcing total divergence within each one
to be zero so that equations are solvable. Physical validity is somewhat
dubious, but without this the solver simply breaks down.

From the physics point of view, the effect of the correction should be
similar to opening a hole from every cell to another dimension that lets
an equal amount of air to pass through to balance the change in volume.

Reviewers: miikah, lukastoenne

Reviewed By: lukastoenne

Subscribers: dafassi, scorpion81, #physics

Maniphest Tasks: T43220, T47551

Differential Revision: https://developer.blender.org/D2112
2016-08-02 19:47:31 +03:00
ca06c3343e Fix T43515: Initial velocity for fire bug
Visual representation of fire was generated before simulation step took place. This caused fire to essentially lag one simulation step behind, even though all emission areas were up to date.
2015-02-06 22:05:09 +02:00
6a290d8e2a Smoke: Remove accidental leftover code from gSoC Smoke + my Smoke code merge.
Thanks to Miika for pointing this issue out and fixing it.
2013-05-21 19:52:22 +00:00
2345f0ee99 Fix: Smoke simulations of very high resolutions often produced weird results, as if smoke was colliding in an invisible wall.
This was caused by a "hack" Daniel Genrich introduced in his moving obstacles commit in r46050. I suppose it was originally added to prevent issues with too fast moving obstacles, but now it ended up limiting maximum velocity of higher resolution simulations.

Here is an comparision of 184 resolution simulation (simulation area limited by adaptive domain):
https://www.miikah.org/blender/smoke_with_pressure_limit_hack.png
https://www.miikah.org/blender/smoke_without_pressure_limit_hack.png


I now reverted that hack until a better solution is found. Daniel, can you check this out? Pressure was limited to maximum of dt * dx (= dt / res) which doesn't make sense to limit pressure based on grid resolution. Maybe better to limit with a constant factor instead?
2013-05-21 19:20:48 +00:00
f276f7f2ef Fix: Smoke simulator produced slightly different results on every run if openmp was enabled.
This was a typical threading issue. Move that particular function out of the parallel block.
2013-05-21 18:57:19 +00:00
a120049c3b use psys->seed for smoke random number generator, increase size of MATHUTILS_TOT_CB and reduce float->double conversions. 2013-04-16 09:04:34 +00:00
1c4f704d5c Smoke simulator: add more float precision checks to make sure other data types don't get messed up either. (Relating previous fire fixes) 2013-02-11 20:22:47 +00:00
9d4be17de4 style cleanup 2013-02-04 00:05:15 +00:00
c9fdf6e496 Smoke: Animated collision objects do no longer block smoke. Smoke gets transfered velocity from moving collision object.
Result:
http://www.youtube.com/watch?v=KRtc8eAgaZA

Part of my Blender Development Project Phase III, merged from Smoke2 branch

WIP docs:
http://wiki.blender.org/index.php/User:Genscher/Smoke_Development_Project_2012
2012-10-16 17:01:22 +00:00
8a25e2d2b2 Smoke: Merge parts of Smoke2 branch
New:
----------
Collision objects do cause vorticity when passing through smoke

Part of my Smoke Development Project (milestone III)
2012-10-15 19:57:18 +00:00
cb634b9100 Google Summer of Code project: "Smoke Simulator Improvements & Fire".
Documentation & Test blend files:
------------------
http://wiki.blender.org/index.php/User:MiikaH/GSoC-2012-Smoke-Simulator-Improvements

Credits:
------------------
Miika Hamalainen (MiikaH): Student / Main programmer

Daniel Genrich (Genscher): Mentor / Programmer of merged patches from Smoke2 branch
Google: For Google Summer of Code 2012
2012-10-10 13:18:07 +00:00
a0c6371b7f Smoke Bugfix: Turbulence was removed. 2012-07-02 13:41:51 +00:00
9f7af5ef7e Bugfix for wrong / bad vorticity forming weird banding on the y and z axis.
Part of Blender Smoke Develeopment Milestone III.
2012-07-02 12:55:23 +00:00
eda0f3b186 Fix for smoke boundary conditions: "Open borders" behaved differently for positive and negative axises.
+ Some code cleanup.
2012-05-26 21:36:19 +00:00
f883d12e0c Smoke: Start fixing scaling issues which happen with non cube-shaped domains.
Detail: Smoke solver and Blender side of smoke now share the same cell length.

First reported by the Sintel artists long ago, again reported by MiikaH.

Part of my Smoke Development Project Phase III.
2012-05-24 23:50:20 +00:00
8bf8a128c2 Smoke: Support for moving obstacles. (Merge from Smoke2 branch)
Sponsored by the Blender Development Fund.
http://www.blender.org/blenderorg/blender-foundation/development-fund/

Remarks:
The original code was not designed to support moving obstacles so I had to introduce some velocity constraints into the code to prevent smoke from exploding. If this causes problems with "fire" emulation, please let me know.
2012-04-28 21:46:43 +00:00
be674afdad Bugfix (missed one code line): Copy paste induced bug found by Sv. Lockal.
Thank you for pointing this out!
2012-02-19 21:15:12 +00:00
49b1d14aee Bugfix: Copy paste induced bug found by Sv. Lockal.
Thank you for pointing this out!
2012-02-19 20:59:46 +00:00
Nathan Letwory
b8e7f89003 doxygen: intern/smoke tagged. 2011-02-25 11:50:46 +00:00
92672d0c1c quiet some clang warnings. 2011-02-12 05:12:26 +00:00
967d25ac1c Smoke Patch + additions: a) Applying patch #22765 by Miika Hämäläinen (domain border collision settings, vorticity settings, time scale, non absolute density, smooth high res emitter, initial velocity multiplier, high res strength available to be set to 0), b) Additions by me: --Initial velocity is now per flow object, not per domain; --Using boundingbox as standard display mode for domains (was wire before); --When adding a flow object, an initial nice SmokeParticle system is added too with nice initial settings (life=1, no_render, unborn, etc) fitting smoke simulation; --Adaptive timesteps introduced to the smoke sim (depending on the magnitude of the velocity) because it was quite unstable when used for fire simulations, still needs to be tested and will also slow down some simulations. 2010-07-27 14:53:20 +00:00
ec7df03c86 Warning fixes, one actual bug found in sequencer sound wave drawing. Also
changed some malloc to MEM_mallocN while trying to track down a memory leak.
2010-02-08 13:55:31 +00:00
83dfade37a Smoke: The well known Miika Hämäläinen (aka MiikaH) patch (http://blenderartists.org/forum/showthread.php?t=158317&page=42)
* Better (and windows enabled) OpenMP handling (> 2x-5x speed)
* More Volumetric Texture mapping options (heat, etc) <-- Matt if that's not to your liking, just revert that part, it's separate anyway
* Initial velocity taken from particle settings (no more slow starting)
* Option to select compression method (there seem to be a bug in my high compression usage, at least it's been reported to result in exploding smoke - better use low compression for the time being)

It's been tested since a while but as usual please report any (new!) bugs. ;-)
2010-01-25 15:10:14 +00:00
14f62c1321 Smoke:
* Enable external forces like e.g. wind
2009-10-08 10:18:14 +00:00
fbb47e8604 Smoke:
* Dissolve is back
* Obstacles coming back (some bugs left i think)
2009-10-02 11:09:05 +00:00
9f5e42ff76 Smoke:
* Totally new try to get cache running
* Didn't try "bake" and such things yet

Hint
* Very verbose yet
* Please do only test new blend files, not old ones!

Please give me feedback on my blog about the old crashers.
2009-09-14 00:01:08 +00:00
8e2d861695 Smoke:
* Enable cache for high res + new preview
* Bugfix for smoke banding (in cooperation with N_T)

Hint: Work-in-progress regarding collision objects so can be broken, didn't test

Hint2: jahka enabled a general particle panel but 
* bake button doesn't work
* step is not supported for cloth
* several other things there ;)
2009-09-09 18:39:40 +00:00
286c2ca80b Smoke:
* cache for low res (deactivating high res for now)
* new way of view3d rendering of smoke (no longer 3 axes) -using 3dtexture now (introduced into gpu/intern)
* introducing LZO and LZMA libs into extern (makefiles missing for now)
* reducing memory usage after simulating for the frame ended (freeing temporary buffers)
* splitting smoke into 2 modifier for the cache-sake (it cannot handle more than 1 cache on the same modifier-index)
* no color on gui anymore
* fixing non-power-of-2 resolutions (hopefully)
* fixing select-deselect of domain drawing bug
* fixing drawobject.c coding style (making Ton happy) ;-)

HINT #1: If scons doesn't work -> cmakefiles are up-to-date, couldn't test scons (but i tried to mantain them, too)

CODERS HINT #1: we really need a way to disable adding all modifiers through "Add Modifiers" dropdown!

WARNING #1: before applying this commit, deactivate your SMOKE DOMAIN in your old files and save them then. You can open them then savely after that.

WARNING #2: File and cache format of smoke can be changed, this is not final!
2009-08-20 00:33:59 +00:00
15e617f2a9 Smoke: accidentally left some old code in 2009-08-12 17:39:38 +00:00
fb7c9d5a0d Smoke:
* New feature: "Dissolve Smoke" - Idea by nudelZ
2009-08-12 17:32:02 +00:00
f1c69e9d84 Smoke:
* bugfix for crash when loading smoke files more once on linux/mac
* could also fix occasional explosions
* code cleanup
2009-08-10 14:09:56 +00:00
d48ca69985 Smoke: decoupling of wavelet #2, new noise strength option on gui, fftw3 option in place for cmake, scons yet uncommited 2009-08-09 01:30:32 +00:00
7c8c83f30d Smoke: test commit of PCG 2009-08-07 01:07:45 +00:00
85c343c049 Smoke: another 10-20% speed gain due to CG (conjugate gradient) improvements 2009-08-06 22:28:55 +00:00
2fd0263602 smoke: decoupling high-res, introducing reset for heat+gravity, fixing another obstacle problem 2009-08-06 16:50:02 +00:00
262a76812e Smoke:
a) fixing domain boundaries
b) fixing flow gui (no more velocity there - taken from particles)
c) Outflow available (deletes smoke from scene)
d) deactivating other noise options for now
e) base for render/preview settings 
f) fixing collisions to be working again
2009-08-02 23:30:44 +00:00
dbba273371 Smoke: fixing some compile warning reported by Ton and one compile erro for gcc 4.4.1 reported by mrunion 2009-07-30 20:12:40 +00:00
58c88bcf76 BF2.5: First commit of smoke code.
Not working: 
a) rendering (since volumterics branch is not merged yet)
b) moving collision objects of any kind
c) saving of collision objects (because that's what I am working on)
d) pointcache
e) A bunch of other things I already know of 

So please do not report any bugs on this one yet :-)
2009-07-30 15:00:26 +00:00