diff options
author | Sebastián Barschkis <sebbas@sebbas.org> | 2020-02-09 19:27:15 +0300 |
---|---|---|
committer | Sebastián Barschkis <sebbas@sebbas.org> | 2020-02-09 19:27:15 +0300 |
commit | f780057d52c1e5b76cd2a5d8b7c577db2374c95c (patch) | |
tree | 04af386e6859f71aa0930419b1b280206cb61222 /intern | |
parent | 19361bf2f46577e19412d3ad0f75787b178c2f69 (diff) | |
parent | 5e30bd43f873dc2b79f2c7fa2e6fb156b598a7a1 (diff) |
Merge branch 'blender-v2.82-release'
Diffstat (limited to 'intern')
-rw-r--r-- | intern/mantaflow/intern/MANTA_main.cpp | 59 | ||||
-rw-r--r-- | intern/mantaflow/intern/strings/fluid_script.h | 25 |
2 files changed, 46 insertions, 38 deletions
diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp index cd496ac0c01..91853ca566b 100644 --- a/intern/mantaflow/intern/MANTA_main.cpp +++ b/intern/mantaflow/intern/MANTA_main.cpp @@ -572,6 +572,29 @@ void MANTA::terminateMantaflow() mantaInitialized = false; } +static std::string getCacheFileEnding(char cache_format) +{ + if (MANTA::with_debug) + std::cout << "MANTA::getCacheFileEnding()" << std::endl; + + switch (cache_format) { + case FLUID_DOMAIN_FILE_UNI: + return ".uni"; + case FLUID_DOMAIN_FILE_OPENVDB: + return ".vdb"; + case FLUID_DOMAIN_FILE_RAW: + return ".raw"; + case FLUID_DOMAIN_FILE_BIN_OBJECT: + return ".bobj.gz"; + case FLUID_DOMAIN_FILE_OBJECT: + return ".obj"; + default: + if (MANTA::with_debug) + std::cout << "Error: Could not find file extension" << std::endl; + return ".uni"; + } +} + std::string MANTA::getRealValue(const std::string &varName, FluidModifierData *mmd) { std::ostringstream ss; @@ -815,6 +838,14 @@ std::string MANTA::getRealValue(const std::string &varName, FluidModifierData *m ss << mmd->time; else if (varName == "END_FRAME") ss << mmd->domain->cache_frame_end; + else if (varName == "CACHE_DATA_FORMAT") + ss << getCacheFileEnding(mmd->domain->cache_data_format); + else if (varName == "CACHE_MESH_FORMAT") + ss << getCacheFileEnding(mmd->domain->cache_mesh_format); + else if (varName == "CACHE_NOISE_FORMAT") + ss << getCacheFileEnding(mmd->domain->cache_noise_format); + else if (varName == "CACHE_PARTICLE_FORMAT") + ss << getCacheFileEnding(mmd->domain->cache_particle_format); else if (varName == "SIMULATION_METHOD") { if (mmd->domain->simulation_method & FLUID_DOMAIN_METHOD_FLIP) { ss << "'FLIP'"; @@ -987,29 +1018,6 @@ std::string MANTA::parseScript(const std::string &setup_string, FluidModifierDat return res.str(); } -static std::string getCacheFileEnding(char cache_format) -{ - if (MANTA::with_debug) - std::cout << "MANTA::getCacheFileEnding()" << std::endl; - - switch (cache_format) { - case FLUID_DOMAIN_FILE_UNI: - return ".uni"; - case FLUID_DOMAIN_FILE_OPENVDB: - return ".vdb"; - case FLUID_DOMAIN_FILE_RAW: - return ".raw"; - case FLUID_DOMAIN_FILE_BIN_OBJECT: - return ".bobj.gz"; - case FLUID_DOMAIN_FILE_OBJECT: - return ".obj"; - default: - if (MANTA::with_debug) - std::cout << "Error: Could not find file extension" << std::endl; - return ".uni"; - } -} - int MANTA::updateFlipStructures(FluidModifierData *mmd, int framenr) { if (MANTA::with_debug) @@ -2001,6 +2009,9 @@ int MANTA::bakeGuiding(FluidModifierData *mmd, int framenr) std::string gformat = getCacheFileEnding(mmd->domain->cache_data_format); + bool final_cache = (mmd->domain->cache_type == FLUID_DOMAIN_CACHE_FINAL); + std::string resumable_cache = (final_cache) ? "False" : "True"; + BLI_path_join(cacheDirGuiding, sizeof(cacheDirGuiding), mmd->domain->cache_directory, @@ -2010,7 +2021,7 @@ int MANTA::bakeGuiding(FluidModifierData *mmd, int framenr) ss.str(""); ss << "bake_guiding_" << mCurrentID << "('" << escapeSlashes(cacheDirGuiding) << "', " << framenr - << ", '" << gformat << "')"; + << ", '" << gformat << "', " << resumable_cache << ")"; pythonCommands.push_back(ss.str()); runPythonString(pythonCommands); diff --git a/intern/mantaflow/intern/strings/fluid_script.h b/intern/mantaflow/intern/strings/fluid_script.h index f66f2fadcb1..477cf3ff789 100644 --- a/intern/mantaflow/intern/strings/fluid_script.h +++ b/intern/mantaflow/intern/strings/fluid_script.h @@ -559,12 +559,9 @@ def bake_particles_$ID$(path_data, path_particles, framenr, format_data, format_ const std::string fluid_bake_guiding = "\n\ -def bake_guiding_process_$ID$(framenr, format_guiding, path_guiding):\n\ +def bake_guiding_process_$ID$(framenr, format_guiding, path_guiding, resumable):\n\ mantaMsg('Bake fluid guiding')\n\ \n\ - if framenr>1:\n\ - fluid_load_guiding_$ID$(path_guiding, framenr-1, format_guiding)\n\ - \n\ # Average out velocities from multiple guiding objects at one cell\n\ x_guidevel_s$ID$.safeDivide(numGuides_s$ID$)\n\ y_guidevel_s$ID$.safeDivide(numGuides_s$ID$)\n\ @@ -582,13 +579,13 @@ def bake_guiding_process_$ID$(framenr, format_guiding, path_guiding):\n\ extrapolateVec3Simple(vel=guidevelC_s$ID$, phi=phiGuideIn_s$ID$, distance=4, inside=False)\n\ resampleVec3ToMac(source=guidevelC_s$ID$, target=guidevel_sg$ID$)\n\ \n\ - fluid_save_guiding_$ID$(path_guiding, framenr, format_guiding)\n\ + fluid_save_guiding_$ID$(path_guiding, framenr, format_guiding, resumable)\n\ \n\ -def bake_guiding_$ID$(path_guiding, framenr, format_guiding):\n\ +def bake_guiding_$ID$(path_guiding, framenr, format_guiding, resumable):\n\ if not withMPBake or isWindows:\n\ - bake_guiding_process_$ID$(framenr, format_guiding, path_guiding)\n\ + bake_guiding_process_$ID$(framenr, format_guiding, path_guiding, resumable)\n\ else:\n\ - fluid_cache_multiprocessing_start_$ID$(function=bake_guiding_process_$ID$, framenr=framenr, format_guiding=format_guiding, path_guiding=path_guiding)\n"; + fluid_cache_multiprocessing_start_$ID$(function=bake_guiding_process_$ID$, framenr=framenr, format_guiding=format_guiding, path_guiding=path_guiding, resumable=resumable)\n"; ////////////////////////////////////////////////////////////////////// // IMPORT @@ -692,12 +689,12 @@ if (GUI):\n\ gui.show()\n\ gui.pause()\n\ \n\ -cache_dir = '$CACHE_DIR$'\n\ -cache_resumable = $CACHE_RESUMABLE$\n\ -file_format_data = '.uni'\n\ -file_format_noise = '.uni'\n\ -file_format_particles = '.uni'\n\ -file_format_mesh = '.bobj.gz'\n\ +cache_resumable = $CACHE_RESUMABLE$\n\ +cache_dir = '$CACHE_DIR$'\n\ +file_format_data = '$CACHE_DATA_FORMAT$'\n\ +file_format_noise = '$CACHE_NOISE_FORMAT$'\n\ +file_format_particles = '$CACHE_PARTICLE_FORMAT$'\n\ +file_format_mesh = '$CACHE_MESH_FORMAT$'\n\ \n\ # Start and stop for simulation\n\ current_frame = $CURRENT_FRAME$\n\ |