Fix T74828: Fluid: Crash with Fire/Smoke Noise
Issue was that the noise simulation was trying to bake with a minimized domain size (adaptive domain initializes domain with size (1,1,1)). Similarly to the base resolution bake, there should be no noise baking happening at those domain sizes - a domain at this size is considered empty.
This commit is contained in:
parent
ea78f9922e
commit
4a83832120
Notes:
blender-bot
2023-02-14 04:31:04 +01:00
Referenced by issue #74828, Fluid: Crash with Fire/Smoke Noise
|
@ -39,6 +39,7 @@ void manta_ensure_invelocity(struct MANTA *fluid, struct FluidModifierData *mmd)
|
|||
void manta_ensure_outflow(struct MANTA *fluid, struct FluidModifierData *mmd);
|
||||
int manta_write_config(struct MANTA *fluid, struct FluidModifierData *mmd, int framenr);
|
||||
int manta_write_data(struct MANTA *fluid, struct FluidModifierData *mmd, int framenr);
|
||||
int manta_write_noise(struct MANTA *fluid, struct FluidModifierData *mmd, int framenr);
|
||||
int manta_read_config(struct MANTA *fluid, struct FluidModifierData *mmd, int framenr);
|
||||
int manta_read_data(struct MANTA *fluid, struct FluidModifierData *mmd, int framenr);
|
||||
int manta_read_noise(struct MANTA *fluid, struct FluidModifierData *mmd, int framenr);
|
||||
|
|
|
@ -1441,6 +1441,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)
|
||||
|
|
|
@ -79,7 +79,8 @@ struct MANTA {
|
|||
// Write cache
|
||||
bool writeConfiguration(FluidModifierData *mmd, int framenr);
|
||||
bool writeData(FluidModifierData *mmd, int framenr);
|
||||
// write call for noise, mesh and particles were left in bake calls for now
|
||||
bool writeNoise(FluidModifierData *mmd, int framenr);
|
||||
// write calls for mesh and particles were left in bake calls for now
|
||||
|
||||
// Read cache (via Manta save/load)
|
||||
bool readConfiguration(FluidModifierData *mmd, int framenr);
|
||||
|
|
|
@ -80,6 +80,13 @@ int manta_write_data(MANTA *fluid, FluidModifierData *mmd, int framenr)
|
|||
return fluid->writeData(mmd, framenr);
|
||||
}
|
||||
|
||||
int manta_write_noise(MANTA *fluid, FluidModifierData *mmd, int framenr)
|
||||
{
|
||||
if (!fluid || !mmd)
|
||||
return 0;
|
||||
return fluid->writeNoise(mmd, framenr);
|
||||
}
|
||||
|
||||
int manta_read_config(MANTA *fluid, FluidModifierData *mmd, int framenr)
|
||||
{
|
||||
if (!fluid || !mmd)
|
||||
|
|
|
@ -3999,7 +3999,11 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
|||
}
|
||||
if (has_data || baking_data) {
|
||||
if (baking_noise && with_smoke && with_noise) {
|
||||
manta_bake_noise(mds->fluid, mmd, scene_framenr);
|
||||
/* Ensure that no bake occurs if domain was minimized by adaptive domain. */
|
||||
if (mds->total_cells > 1) {
|
||||
manta_bake_noise(mds->fluid, mmd, scene_framenr);
|
||||
}
|
||||
manta_write_noise(mds->fluid, mmd, scene_framenr);
|
||||
}
|
||||
if (baking_mesh && with_liquid && with_mesh) {
|
||||
manta_bake_mesh(mds->fluid, mmd, scene_framenr);
|
||||
|
|
Loading…
Reference in New Issue