diff options
author | Sebastián Barschkis <sebbas@sebbas.org> | 2020-11-26 01:17:47 +0300 |
---|---|---|
committer | Sebastián Barschkis <sebbas@sebbas.org> | 2020-11-26 01:18:12 +0300 |
commit | e09d0c0d077cff79b55ce32ec5124d5faa73e2e7 (patch) | |
tree | 74dd76ecf5016e4b34ffb42b42b7eaae980b44d4 /extern/mantaflow/preprocessed/fileio/mantaio.cpp | |
parent | f7223d5f722ac430041a748248b45c8590c3ffad (diff) |
Fluid: Updated Mantaflow source files
This update introduces two improvements from the Mantaflow repository:
(1) Improved particle sampling:
- Liquid and secondary particles are sampled more predictably. With all parameters being equal, baked particles will be computed at the exact same position during every bake.
- Before, this was not guaranteed.
(2) Sparse grid caching:
- While saving grid data to disk, grids will from now on be saved in a sparse structure whenever possible (e.g. density, flame but not levelsets).
- With the sparse optimization grid cells with a value under the 'Empty Space' value (already present in domain settings) will not be cached.
- The main benefits of this optimization are: Smaller cache sizes and faster playback of simulation data in the viewport.
- This optimization works 'out-of-the-box'. There is no option in the UI to enable it.
- For now, only smoke simulation grids will take advantage of this optimization.
Diffstat (limited to 'extern/mantaflow/preprocessed/fileio/mantaio.cpp')
-rw-r--r-- | extern/mantaflow/preprocessed/fileio/mantaio.cpp | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/extern/mantaflow/preprocessed/fileio/mantaio.cpp b/extern/mantaflow/preprocessed/fileio/mantaio.cpp index 3048572261a..fe29890ec11 100644 --- a/extern/mantaflow/preprocessed/fileio/mantaio.cpp +++ b/extern/mantaflow/preprocessed/fileio/mantaio.cpp @@ -83,7 +83,9 @@ int save(const string &name, bool skipDeletedParts = false, int compression = COMPRESSION_ZIP, bool precisionHalf = true, - int precision = PRECISION_HALF) + int precision = PRECISION_HALF, + float clip = 1e-4, + const Grid<Real> *clipGrid = nullptr) { if (!precisionHalf) { @@ -102,7 +104,8 @@ int save(const string &name, else if (ext == ".vol") return writeGridsVol(name, &objects); if (ext == ".vdb") - return writeObjectsVDB(name, &objects, worldSize, skipDeletedParts, compression, precision); + return writeObjectsVDB( + name, &objects, worldSize, skipDeletedParts, compression, precision, clip, clipGrid); else if (ext == ".npz") return writeGridsNumpy(name, &objects); else if (ext == ".txt") @@ -129,8 +132,17 @@ static PyObject *_W_1(PyObject *_self, PyObject *_linargs, PyObject *_kwds) int compression = _args.getOpt<int>("compression", 4, COMPRESSION_ZIP, &_lock); bool precisionHalf = _args.getOpt<bool>("precisionHalf", 5, true, &_lock); int precision = _args.getOpt<int>("precision", 6, PRECISION_HALF, &_lock); - _retval = toPy( - save(name, objects, worldSize, skipDeletedParts, compression, precisionHalf, precision)); + float clip = _args.getOpt<float>("clip", 7, 1e-4, &_lock); + const Grid<Real> *clipGrid = _args.getPtrOpt<Grid<Real>>("clipGrid", 8, nullptr, &_lock); + _retval = toPy(save(name, + objects, + worldSize, + skipDeletedParts, + compression, + precisionHalf, + precision, + clip, + clipGrid)); _args.check(); } pbFinalizePlugin(parent, "save", !noTiming); |