Merge branch 'blender-v2.82-release'
This commit is contained in:
commit
4e2e28b8c3
|
@ -1204,7 +1204,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mDensity);
|
||||
result += updateGridFromFile(targetFile, mDensity, false);
|
||||
|
||||
expected += 1;
|
||||
ss.str("");
|
||||
|
@ -1214,7 +1214,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mShadow);
|
||||
result += updateGridFromFile(targetFile, mShadow, false);
|
||||
|
||||
if (mUsingHeat) {
|
||||
expected += 1;
|
||||
|
@ -1225,7 +1225,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mHeat);
|
||||
result += updateGridFromFile(targetFile, mHeat, false);
|
||||
}
|
||||
|
||||
if (mUsingColors) {
|
||||
|
@ -1237,7 +1237,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mColorR);
|
||||
result += updateGridFromFile(targetFile, mColorR, false);
|
||||
|
||||
ss.str("");
|
||||
ss << "color_g_####" << dformat;
|
||||
|
@ -1246,7 +1246,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mColorG);
|
||||
result += updateGridFromFile(targetFile, mColorG, false);
|
||||
|
||||
ss.str("");
|
||||
ss << "color_b_####" << dformat;
|
||||
|
@ -1255,7 +1255,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mColorB);
|
||||
result += updateGridFromFile(targetFile, mColorB, false);
|
||||
}
|
||||
|
||||
if (mUsingFire) {
|
||||
|
@ -1267,7 +1267,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mFlame);
|
||||
result += updateGridFromFile(targetFile, mFlame, false);
|
||||
|
||||
ss.str("");
|
||||
ss << "fuel_####" << dformat;
|
||||
|
@ -1276,7 +1276,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mFuel);
|
||||
result += updateGridFromFile(targetFile, mFuel, false);
|
||||
|
||||
ss.str("");
|
||||
ss << "react_####" << dformat;
|
||||
|
@ -1285,7 +1285,7 @@ int MANTA::updateSmokeStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mReact);
|
||||
result += updateGridFromFile(targetFile, mReact, false);
|
||||
}
|
||||
|
||||
mSmokeFromFile = true;
|
||||
|
@ -1334,7 +1334,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mDensityHigh);
|
||||
result += updateGridFromFile(targetFile, mDensityHigh, true);
|
||||
|
||||
expected += 1;
|
||||
ss.str("");
|
||||
|
@ -1344,7 +1344,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mShadow);
|
||||
result += updateGridFromFile(targetFile, mShadow, false);
|
||||
|
||||
if (mUsingColors) {
|
||||
expected += 3;
|
||||
|
@ -1355,7 +1355,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mColorRHigh);
|
||||
result += updateGridFromFile(targetFile, mColorRHigh, true);
|
||||
|
||||
ss.str("");
|
||||
ss << "color_g_noise_####" << nformat;
|
||||
|
@ -1364,7 +1364,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mColorGHigh);
|
||||
result += updateGridFromFile(targetFile, mColorGHigh, true);
|
||||
|
||||
ss.str("");
|
||||
ss << "color_b_noise_####" << nformat;
|
||||
|
@ -1373,7 +1373,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mColorBHigh);
|
||||
result += updateGridFromFile(targetFile, mColorBHigh, true);
|
||||
}
|
||||
|
||||
if (mUsingFire) {
|
||||
|
@ -1385,7 +1385,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mFlameHigh);
|
||||
result += updateGridFromFile(targetFile, mFlameHigh, true);
|
||||
|
||||
ss.str("");
|
||||
ss << "fuel_noise_####" << nformat;
|
||||
|
@ -1394,7 +1394,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mFuelHigh);
|
||||
result += updateGridFromFile(targetFile, mFuelHigh, true);
|
||||
|
||||
ss.str("");
|
||||
ss << "react_noise_####" << nformat;
|
||||
|
@ -1403,7 +1403,7 @@ int MANTA::updateNoiseStructures(FluidModifierData *mmd, int framenr)
|
|||
if (!BLI_exists(targetFile)) {
|
||||
return 0;
|
||||
}
|
||||
result += updateGridFromFile(targetFile, mReactHigh);
|
||||
result += updateGridFromFile(targetFile, mReactHigh, true);
|
||||
}
|
||||
|
||||
mNoiseFromFile = true;
|
||||
|
@ -2778,7 +2778,7 @@ void MANTA::updateParticlesFromUni(const char *filename, bool isSecondarySys, bo
|
|||
gzclose(gzf);
|
||||
}
|
||||
|
||||
int MANTA::updateGridFromFile(const char *filename, float *grid)
|
||||
int MANTA::updateGridFromFile(const char *filename, float *grid, bool isNoise)
|
||||
{
|
||||
if (with_debug)
|
||||
std::cout << "MANTA::updateGridFromFile()" << std::endl;
|
||||
|
@ -2797,13 +2797,13 @@ int MANTA::updateGridFromFile(const char *filename, float *grid)
|
|||
std::string extension = fname.substr(idx + 1);
|
||||
|
||||
if (extension.compare("uni") == 0)
|
||||
return updateGridFromUni(filename, grid);
|
||||
#ifdef WITH_OPENVDB
|
||||
return updateGridFromUni(filename, grid, isNoise);
|
||||
#if OPENVDB == 1
|
||||
else if (extension.compare("vdb") == 0)
|
||||
return updateGridFromVDB(filename, grid);
|
||||
return updateGridFromVDB(filename, grid, isNoise);
|
||||
#endif
|
||||
else if (extension.compare("raw") == 0)
|
||||
return updateGridFromRaw(filename, grid);
|
||||
return updateGridFromRaw(filename, grid, isNoise);
|
||||
else
|
||||
std::cerr << "MANTA::updateGridFromFile(): invalid file extension in file: " << filename
|
||||
<< std::endl;
|
||||
|
@ -2815,7 +2815,7 @@ int MANTA::updateGridFromFile(const char *filename, float *grid)
|
|||
}
|
||||
}
|
||||
|
||||
int MANTA::updateGridFromUni(const char *filename, float *grid)
|
||||
int MANTA::updateGridFromUni(const char *filename, float *grid, bool isNoise)
|
||||
{
|
||||
if (with_debug)
|
||||
std::cout << "MANTA::updateGridFromUni()" << std::endl;
|
||||
|
@ -2863,13 +2863,17 @@ int MANTA::updateGridFromUni(const char *filename, float *grid)
|
|||
gzread(gzf, &dimT, sizeof(int));
|
||||
gzread(gzf, ×tamp, sizeof(unsigned long long));
|
||||
|
||||
int resX = (isNoise) ? mResXNoise : mResX;
|
||||
int resY = (isNoise) ? mResYNoise : mResY;
|
||||
int resZ = (isNoise) ? mResZNoise : mResZ;
|
||||
|
||||
if (with_debug)
|
||||
std::cout << "read " << ibuffer[3] << " grid type in file: " << filename << std::endl;
|
||||
|
||||
// Sanity checks
|
||||
if (ibuffer[0] != mResX || ibuffer[1] != mResY || ibuffer[2] != mResZ) {
|
||||
if (ibuffer[0] != resX || ibuffer[1] != resY || ibuffer[2] != resZ) {
|
||||
std::cout << "grid dim doesn't match, read: (" << ibuffer[0] << ", " << ibuffer[1] << ", "
|
||||
<< ibuffer[2] << ") vs setup: (" << mResX << ", " << mResY << ", " << mResZ << ")"
|
||||
<< ibuffer[2] << ") vs setup: (" << resX << ", " << resY << ", " << resZ << ")"
|
||||
<< std::endl;
|
||||
return 0;
|
||||
}
|
||||
|
@ -2886,8 +2890,8 @@ int MANTA::updateGridFromUni(const char *filename, float *grid)
|
|||
return 1;
|
||||
}
|
||||
|
||||
#ifdef WITH_OPENVDB
|
||||
int MANTA::updateGridFromVDB(const char *filename, float *grid)
|
||||
#if OPENVDB == 1
|
||||
int MANTA::updateGridFromVDB(const char *filename, float *grid, bool isNoise)
|
||||
{
|
||||
if (with_debug)
|
||||
std::cout << "MANTA::updateGridFromVDB()" << std::endl;
|
||||
|
@ -2913,10 +2917,14 @@ int MANTA::updateGridFromVDB(const char *filename, float *grid)
|
|||
openvdb::FloatGrid::Ptr gridVDB = openvdb::gridPtrCast<openvdb::FloatGrid>(baseGrid);
|
||||
openvdb::FloatGrid::Accessor accessor = gridVDB->getAccessor();
|
||||
|
||||
int resX = (isNoise) ? mResXNoise : mResX;
|
||||
int resY = (isNoise) ? mResYNoise : mResY;
|
||||
int resZ = (isNoise) ? mResZNoise : mResZ;
|
||||
|
||||
size_t index = 0;
|
||||
for (int z = 0; z < mResZ; ++z) {
|
||||
for (int y = 0; y < mResY; ++y) {
|
||||
for (int x = 0; x < mResX; ++x, ++index) {
|
||||
for (int z = 0; z < resZ; ++z) {
|
||||
for (int y = 0; y < resY; ++y) {
|
||||
for (int x = 0; x < resX; ++x, ++index) {
|
||||
openvdb::Coord xyz(x, y, z);
|
||||
float v = accessor.getValue(xyz);
|
||||
grid[index] = v;
|
||||
|
@ -2927,7 +2935,7 @@ int MANTA::updateGridFromVDB(const char *filename, float *grid)
|
|||
}
|
||||
#endif
|
||||
|
||||
int MANTA::updateGridFromRaw(const char *filename, float *grid)
|
||||
int MANTA::updateGridFromRaw(const char *filename, float *grid, bool isNoise)
|
||||
{
|
||||
if (with_debug)
|
||||
std::cout << "MANTA::updateGridFromRaw()" << std::endl;
|
||||
|
@ -2941,7 +2949,11 @@ int MANTA::updateGridFromRaw(const char *filename, float *grid)
|
|||
return 0;
|
||||
}
|
||||
|
||||
expectedBytes = sizeof(float) * mResX * mResY * mResZ;
|
||||
int resX = (isNoise) ? mResXNoise : mResX;
|
||||
int resY = (isNoise) ? mResYNoise : mResY;
|
||||
int resZ = (isNoise) ? mResZNoise : mResZ;
|
||||
|
||||
expectedBytes = sizeof(float) * resX * resY * resZ;
|
||||
readBytes = gzread(gzf, grid, expectedBytes);
|
||||
|
||||
assert(expectedBytes == readBytes);
|
||||
|
|
|
@ -856,12 +856,12 @@ struct MANTA {
|
|||
void updateMeshFromObj(const char *filename);
|
||||
void updateMeshFromUni(const char *filename);
|
||||
void updateParticlesFromUni(const char *filename, bool isSecondarySys, bool isVelData);
|
||||
int updateGridFromUni(const char *filename, float *grid);
|
||||
int updateGridFromVDB(const char *filename, float *grid);
|
||||
int updateGridFromRaw(const char *filename, float *grid);
|
||||
int updateGridFromUni(const char *filename, float *grid, bool isNoise);
|
||||
int updateGridFromVDB(const char *filename, float *grid, bool isNoise);
|
||||
int updateGridFromRaw(const char *filename, float *grid, bool isNoise);
|
||||
void updateMeshFromFile(const char *filename);
|
||||
void updateParticlesFromFile(const char *filename, bool isSecondarySys, bool isVelData);
|
||||
int updateGridFromFile(const char *filename, float *grid);
|
||||
int updateGridFromFile(const char *filename, float *grid, bool isNoise);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
@ -3526,8 +3526,8 @@ static void BKE_fluid_modifier_processDomain(FluidModifierData *mmd,
|
|||
}
|
||||
}
|
||||
if (!baking_data && !baking_noise && !mode_replay) {
|
||||
/* There is no need to call manta_update_smoke_structures() here.
|
||||
* The noise cache has already been read with manta_update_noise_structures(). */
|
||||
/* TODO (sebbas): Confirm if this read call is really needed or not. */
|
||||
has_data = manta_update_smoke_structures(mds->fluid, mmd, data_frame);
|
||||
}
|
||||
else {
|
||||
has_data = manta_read_data(mds->fluid, mmd, data_frame);
|
||||
|
@ -4448,9 +4448,15 @@ void BKE_fluid_modifier_create_type_data(struct FluidModifierData *mmd)
|
|||
mmd->domain->cache_flag = 0;
|
||||
mmd->domain->cache_type = FLUID_DOMAIN_CACHE_MODULAR;
|
||||
mmd->domain->cache_mesh_format = FLUID_DOMAIN_FILE_BIN_OBJECT;
|
||||
#ifdef WITH_OPENVDB
|
||||
mmd->domain->cache_data_format = FLUID_DOMAIN_FILE_OPENVDB;
|
||||
mmd->domain->cache_particle_format = FLUID_DOMAIN_FILE_OPENVDB;
|
||||
mmd->domain->cache_noise_format = FLUID_DOMAIN_FILE_OPENVDB;
|
||||
#else
|
||||
mmd->domain->cache_data_format = FLUID_DOMAIN_FILE_UNI;
|
||||
mmd->domain->cache_particle_format = FLUID_DOMAIN_FILE_UNI;
|
||||
mmd->domain->cache_noise_format = FLUID_DOMAIN_FILE_UNI;
|
||||
#endif
|
||||
modifier_path_init(mmd->domain->cache_directory,
|
||||
sizeof(mmd->domain->cache_directory),
|
||||
FLUID_DOMAIN_DIR_DEFAULT);
|
||||
|
|
Loading…
Reference in New Issue