diff options
Diffstat (limited to 'intern/mantaflow/intern/MANTA_main.cpp')
-rw-r--r-- | intern/mantaflow/intern/MANTA_main.cpp | 45 |
1 files changed, 39 insertions, 6 deletions
diff --git a/intern/mantaflow/intern/MANTA_main.cpp b/intern/mantaflow/intern/MANTA_main.cpp index 54b728b734e..79c8625ec48 100644 --- a/intern/mantaflow/intern/MANTA_main.cpp +++ b/intern/mantaflow/intern/MANTA_main.cpp @@ -1098,12 +1098,14 @@ bool MANTA::updateMeshStructures(FluidModifierData *mmd, int framenr) int expected = 0; /* Expected number of read successes for this frame. */ /* Ensure empty data structures at start. */ - if (!mMeshNodes || !mMeshTriangles || !mMeshVelocities) + if (!mMeshNodes || !mMeshTriangles) return false; mMeshNodes->clear(); mMeshTriangles->clear(); - mMeshVelocities->clear(); + + if (mMeshVelocities) + mMeshVelocities->clear(); std::string mformat = getCacheFileEnding(mmd->domain->cache_mesh_format); std::string dformat = getCacheFileEnding(mmd->domain->cache_data_format); @@ -1222,19 +1224,21 @@ bool MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr) if (mUsingColors) { file = getFile(mmd, FLUID_DOMAIN_DIR_DATA, FLUID_DOMAIN_FILE_COLORR, dformat, framenr); - expected += 3; + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mColorR, false); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_DATA, FLUID_DOMAIN_FILE_COLORG, dformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mColorG, false); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_DATA, FLUID_DOMAIN_FILE_COLORB, dformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mColorB, false); assert(result == expected); @@ -1243,19 +1247,21 @@ bool MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr) if (mUsingFire) { file = getFile(mmd, FLUID_DOMAIN_DIR_DATA, FLUID_DOMAIN_FILE_FLAME, dformat, framenr); - expected += 3; + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mFlame, false); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_DATA, FLUID_DOMAIN_FILE_FUEL, dformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mFuel, false); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_DATA, FLUID_DOMAIN_FILE_REACT, dformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mReact, false); assert(result == expected); @@ -1301,19 +1307,21 @@ bool MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr) if (mUsingColors) { file = getFile(mmd, FLUID_DOMAIN_DIR_NOISE, FLUID_DOMAIN_FILE_COLORRNOISE, nformat, framenr); - expected += 3; + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mColorRHigh, true); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_NOISE, FLUID_DOMAIN_FILE_COLORGNOISE, nformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mColorGHigh, true); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_NOISE, FLUID_DOMAIN_FILE_COLORBNOISE, nformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mColorBHigh, true); assert(result == expected); @@ -1322,19 +1330,21 @@ bool MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr) if (mUsingFire) { file = getFile(mmd, FLUID_DOMAIN_DIR_NOISE, FLUID_DOMAIN_FILE_FLAMENOISE, nformat, framenr); - expected += 3; + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mFlameHigh, true); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_NOISE, FLUID_DOMAIN_FILE_FUELNOISE, nformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mFuelHigh, true); assert(result == expected); } file = getFile(mmd, FLUID_DOMAIN_DIR_NOISE, FLUID_DOMAIN_FILE_REACTNOISE, nformat, framenr); + expected += 1; if (BLI_exists(file.c_str())) { result += updateGridFromFile(file, mReactHigh, true); assert(result == expected); @@ -1433,6 +1443,29 @@ bool MANTA::writeData(FluidModifierData *mmd, int framenr) return runPythonString(pythonCommands); } +bool MANTA::writeNoise(FluidModifierData *mmd, int framenr) +{ + if (with_debug) + std::cout << "MANTA::writeNoise()" << std::endl; + + std::ostringstream ss; + std::vector<std::string> pythonCommands; + + std::string directory = getDirectory(mmd, FLUID_DOMAIN_DIR_NOISE); + std::string nformat = getCacheFileEnding(mmd->domain->cache_noise_format); + + bool final_cache = (mmd->domain->cache_type == FLUID_DOMAIN_CACHE_FINAL); + std::string resumable_cache = (final_cache) ? "False" : "True"; + + if (mUsingSmoke && mUsingNoise) { + ss.str(""); + ss << "smoke_save_noise_" << mCurrentID << "('" << escapeSlashes(directory) << "', " << framenr + << ", '" << nformat << "', " << resumable_cache << ")"; + pythonCommands.push_back(ss.str()); + } + return runPythonString(pythonCommands); +} + bool MANTA::readConfiguration(FluidModifierData *mmd, int framenr) { if (with_debug) |