[Bf-blender-cvs] [57113144a59] fluid-mantaflow: manta script export refactor and lots of cleanups

Sebastián Barschkis noreply at git.blender.org
Fri Aug 3 23:24:36 CEST 2018


Commit: 57113144a598b34c0b53f63b3d7932986170a282
Author: Sebastián Barschkis
Date:   Fri Aug 3 23:24:06 2018 +0200
Branches: fluid-mantaflow
https://developer.blender.org/rB57113144a598b34c0b53f63b3d7932986170a282

manta script export refactor and lots of cleanups

===================================================================

M	build_files/cmake/platform/platform_apple.cmake
M	intern/mantaflow/intern/FLUID.cpp
M	intern/mantaflow/intern/strings/liquid_script.h
M	intern/mantaflow/intern/strings/shared_script.h
M	intern/mantaflow/intern/strings/smoke_script.h
M	source/blender/makesdna/DNA_smoke_types.h
M	source/blender/makesrna/intern/rna_smoke.c

===================================================================

diff --git a/build_files/cmake/platform/platform_apple.cmake b/build_files/cmake/platform/platform_apple.cmake
index 10e1caaf61f..1854cd2a009 100644
--- a/build_files/cmake/platform/platform_apple.cmake
+++ b/build_files/cmake/platform/platform_apple.cmake
@@ -395,7 +395,6 @@ if(WITH_OPENMP)
 endif()
 
 if(WITH_MOD_MANTA)
-	message(STATUS "Using TBB as fallback for Mantaflow since OpenMP was not found!")
 	set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include)
 	set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a)
 endif()
diff --git a/intern/mantaflow/intern/FLUID.cpp b/intern/mantaflow/intern/FLUID.cpp
index 6498d97ead0..8566f881009 100644
--- a/intern/mantaflow/intern/FLUID.cpp
+++ b/intern/mantaflow/intern/FLUID.cpp
@@ -305,7 +305,6 @@ void FLUID::initSmokeNoise(SmokeModifierData *smd)
 {
 	std::vector<std::string> pythonCommands;
 	std::string tmpString = smoke_alloc_noise
-		+ smoke_wavelet_turbulence_noise
 		+ smoke_variables_noise
 		+ smoke_bounds_noise
 		+ smoke_adaptive_step_noise
@@ -683,7 +682,7 @@ std::string FLUID::getRealValue(const std::string& varName,  SmokeModifierData *
 		ss << (smd->domain->active_fields & SM_ACTIVE_HEAT ? "True" : "False");
 	else if (varName == "USING_FIRE")
 		ss << (smd->domain->active_fields & SM_ACTIVE_FIRE ? "True" : "False");
-	else if (varName == "USING_HIGHRES")
+	else if (varName == "USING_NOISE")
 		ss << (smd->domain->flags & MOD_SMOKE_NOISE ? "True" : "False");
 	else if (varName == "USING_OBSTACLE")
 		ss << (smd->domain->active_fields & SM_ACTIVE_OBSTACLE ? "True" : "False");
@@ -803,6 +802,8 @@ std::string FLUID::getRealValue(const std::string& varName,  SmokeModifierData *
 		ss << smd->domain->flame_smoke_color[2];
 	else if (varName == "CURRENT_FRAME")
 		ss << md->scene->r.cfra;
+	else if (varName == "END_FRAME")
+		ss << smd->domain->cache_frame_end;
 	else if (varName == "PARTICLE_RANDOMNESS")
 		ss << smd->domain->particle_randomness;
 	else if (varName == "PARTICLE_NUMBER")
@@ -1438,10 +1439,10 @@ void FLUID::exportSmokeScript(SmokeModifierData *smd)
 	cacheDirScript[0] = '\0';
 
 	BLI_path_join(cacheDirScript, sizeof(cacheDirScript), smd->domain->cache_directory, FLUID_CACHE_DIR_SCRIPT, NULL);
-	BLI_path_join(cacheDirScript, sizeof(cacheDirScript), cacheDirScript, FLUID_CACHE_NAME_SCRIPT, NULL);
+	BLI_path_join(cacheDirScript, sizeof(cacheDirScript), cacheDirScript, FLUID_CACHE_SMOKE_SCRIPT, NULL);
 	BLI_path_make_safe(cacheDirScript);
 
-	bool highres  = smd->domain->flags & MOD_SMOKE_NOISE;
+	bool noise    = smd->domain->flags & MOD_SMOKE_NOISE;
 	bool heat     = smd->domain->active_fields & SM_ACTIVE_HEAT;
 	bool colors   = smd->domain->active_fields & SM_ACTIVE_COLORS;
 	bool fire     = smd->domain->active_fields & SM_ACTIVE_FIRE;
@@ -1451,66 +1452,101 @@ void FLUID::exportSmokeScript(SmokeModifierData *smd)
 
 	std::string manta_script;
 
-	manta_script += manta_import
+	// Libraries
+	manta_script += header_libraries
+		+ manta_import;
+
+	// Variables
+	manta_script += header_variables
 		+ fluid_variables
-		+ fluid_solver
-		+ fluid_alloc
-		+ fluid_adaptive_time_stepping
-		+ smoke_alloc
-		+ smoke_bounds
 		+ smoke_variables;
+	if (noise) {
+		manta_script += fluid_variables_noise
+			+ smoke_variables_noise;
+	}
+	if (guiding)
+		manta_script += fluid_variables_guiding;
 
+	// Solvers
+	manta_script += header_solvers
+		+ fluid_solver;
+	if (noise)
+		manta_script += fluid_solver_noise;
+	if (guiding)
+		manta_script += fluid_solver_guiding;
+
+	// Grids
+	manta_script += header_grids
+		+ fluid_alloc
+		+ smoke_alloc;
+	if (noise) {
+		manta_script += smoke_alloc_noise;
+		if (colors)
+			manta_script += smoke_alloc_colors_noise;
+		if (fire)
+			manta_script += smoke_alloc_fire_noise;
+	}
 	if (heat)
 		manta_script += smoke_alloc_heat;
 	if (colors)
 		manta_script += smoke_alloc_colors;
 	if (fire)
 		manta_script += smoke_alloc_fire;
-	if (obstacle)
-		manta_script += fluid_alloc_obstacle;
 	if (guiding)
 		manta_script += fluid_alloc_guiding;
+	if (obstacle)
+		manta_script += fluid_alloc_obstacle;
 	if (invel)
 		manta_script += fluid_alloc_invel;
 
-	if (highres) {
-		manta_script += fluid_variables_noise
-			+ fluid_solver_noise
-			+ fluid_adaptive_time_stepping_noise
-			+ smoke_variables_noise
-			+ smoke_alloc_noise
-			+ smoke_bounds_noise
-			+ smoke_wavelet_turbulence_noise;
+	// Domain init
+	manta_script += header_gridinit
+		+ smoke_bounds;
+	if (noise)
+		manta_script += smoke_bounds_noise;
 
-		if (colors)
-			manta_script += smoke_alloc_colors_noise;
-		if (fire)
-			manta_script += smoke_alloc_fire_noise;
+	// Time
+	manta_script += header_time
+		+ fluid_adaptive_time_stepping
+		+ fluid_adapt_time_step;
+	if (noise) {
+		manta_script += fluid_adaptive_time_stepping_noise
+			+ fluid_adapt_time_step_noise;
 	}
 
-	manta_script += smoke_load_data;
-	if (highres)
+	// Import
+	manta_script += header_import
+		+ fluid_file_import
+		+ fluid_cache_helper
+		+ fluid_load_data
+		+ smoke_load_data;
+	if (noise)
 		manta_script += smoke_load_noise;
+	if (guiding)
+		manta_script += fluid_load_guiding;
 
-	manta_script += fluid_pre_step;
-	if (highres)
-		manta_script += smoke_pre_step_noise;
-
-	manta_script += fluid_post_step;
-	if (highres)
-		manta_script += smoke_post_step_noise;
-
-	manta_script += fluid_adapt_time_step;
-	if (highres)
-		manta_script += fluid_adapt_time_step_noise;
+	// Pre/Post Steps
+	manta_script += header_prepost
+		+ fluid_pre_step
+		+ fluid_post_step;
+	if (noise) {
+		manta_script += smoke_pre_step_noise
+			+ smoke_post_step_noise;
+	}
 
-	manta_script += smoke_step;
-	if (highres)
-		manta_script += smoke_step_noise;
+	// Steps
+	manta_script += header_steps
+		+ smoke_adaptive_step
+		+ smoke_step;
+	if (noise) {
+		manta_script += smoke_adaptive_step_noise
+			+ smoke_step_noise;
+	}
 
-	manta_script += smoke_adaptive_step
-			+ smoke_inflow_low
-			+ smoke_standalone;
+	// Main
+	manta_script += header_main
+		+ smoke_standalone
+		+ fluid_standalone;
 
 	// Fill in missing variables in script
 	std::string final_script = FLUID::parseScript(manta_script, smd);
@@ -1522,27 +1558,6 @@ void FLUID::exportSmokeScript(SmokeModifierData *smd)
 	myfile.close();
 }
 
-//void FLUID::exportSmokeData(SmokeModifierData *smd)
-//{
-//	bool highres = smd->domain->flags & MOD_SMOKE_NOISE;
-//	bool obstacle = smd->domain->active_fields & SM_ACTIVE_OBSTACLE;
-//	bool guiding  = smd->domain->active_fields & SM_ACTIVE_GUIDING;
-//	bool invel    = smd->domain->active_fields & SM_ACTIVE_INVEL;
-//
-//	char parent_dir[1024];
-//	BLI_split_dir_part(smd->domain->manta_filepath, parent_dir, sizeof(parent_dir));
-//
-//	FLUID::saveSmokeData(parent_dir);
-//	if (obstacle)
-//		FLUID::saveFluidObstacleData(parent_dir);
-//	if (guiding)
-//		FLUID::saveFluidGuidingData(parent_dir);
-//	if (invel)
-//		FLUID::saveFluidInvelData(parent_dir);
-//	if (highres)
-//		FLUID::saveSmokeDataHigh(parent_dir);
-//}
-
 void FLUID::exportLiquidScript(SmokeModifierData *smd)
 {
 	if (with_debug)
@@ -1552,71 +1567,103 @@ void FLUID::exportLiquidScript(SmokeModifierData *smd)
 	cacheDirScript[0] = '\0';
 
 	BLI_path_join(cacheDirScript, sizeof(cacheDirScript), smd->domain->cache_directory, FLUID_CACHE_DIR_SCRIPT, NULL);
-	BLI_path_join(cacheDirScript, sizeof(cacheDirScript), cacheDirScript, FLUID_CACHE_NAME_SCRIPT, NULL);
+	BLI_path_join(cacheDirScript, sizeof(cacheDirScript), cacheDirScript, FLUID_CACHE_LIQUID_SCRIPT, NULL);
 	BLI_path_make_safe(cacheDirScript);
 
-	bool mesh  = smd->domain->flags & MOD_SMOKE_MESH;
-	bool obstacle = smd->domain->active_fields & SM_ACTIVE_OBSTACLE;
-	bool guiding  = smd->domain->active_fields & SM_ACTIVE_GUIDING;
-	bool invel    = smd->domain->active_fields & SM_ACTIVE_INVEL;
+	bool mesh     = smd->domain->flags & MOD_SMOKE_MESH;
 	bool drops    = smd->domain->particle_type & MOD_SMOKE_PARTICLE_DROP;
 	bool bubble   = smd->domain->particle_type & MOD_SMOKE_PARTICLE_BUBBLE;
 	bool floater  = smd->domain->particle_type & MOD_SMOKE_PARTICLE_FLOAT;
 	bool tracer   = smd->domain->particle_type & MOD_SMOKE_PARTICLE_TRACER;
+	bool obstacle = smd->domain->active_fields & SM_ACTIVE_OBSTACLE;
+	bool guiding  = smd->domain->active_fields & SM_ACTIVE_GUIDING;
+	bool invel    = smd->domain->active_fields & SM_ACTIVE_INVEL;
 
 	std::string manta_script;
-	
-	manta_script += manta_import
+
+	// Libraries
+	manta_script += header_libraries
+		+ manta_import;
+
+	// Variables
+	manta_script += header_variables
 		+ fluid_variables
-		+ fluid_solver
-		+ fluid_alloc
-		+ fluid_adaptive_time_stepping
-		+ liquid_alloc
-		+ liquid_init_phi
 		+ liquid_variables;
+	if (mesh)
+		manta_script += fluid_variables_mesh;
+	if (drops || bubble || floater || tracer)
+		manta_script += fluid_variables_particles;
+	if (guiding)
+		manta_script += fluid_variables_guiding;
+
+	// Solvers
+	manta_script += header_solvers
+		+ fluid_solver;
+	if (mesh)
+		manta_script += fluid_solver_mesh;
+	if (drops || bubble || floater || tracer)
+		manta_script += fluid_solver_particles;
+	if (guiding)
+		manta_script += fluid_solver_guiding;
 
+	// Grids
+	manta_script += header_grids
+		+ fluid_alloc
+		+ liquid_alloc;
+	if (mesh)
+		manta_script += liquid_alloc_mesh;
+	if (drops || bubble || floater || tracer)
+		manta_script += fluid_alloc_sndparts;
+	if (guiding)
+		manta_script += fluid_alloc_guiding;
 	if (obstacle)
 		manta_script += fluid_alloc_obstacle;
 	if (invel)
 		manta_script += fluid_alloc_invel;
-	if (drops || bubble || floater || tracer) {
-		manta_script += fluid_variables_particles 
-			+ fluid_solver_particles
-			+ fluid_alloc_sndparts
-			+ liquid_step_particles;
-	}
-	if (mesh) {
-		manta_script += fluid_variables_mesh
-			+ fluid_solver_mesh
-			+ liquid_alloc_mesh
-			+ liquid_step_mesh;
-	}
-	if (guiding) {
-		manta_script += fluid_variables_guiding
-			+ fluid_solver_guiding
-			+ fluid_alloc_guiding;
-	}
 
-	manta_script += fluid_file_import
-			+ fluid_cache_helper
-			+ fluid_load_data
-			+ liquid_load_data
-			+ liquid_load_flip;
+	// Domain init
+	manta_script += header_gridinit
+		+ liquid_init_phi;
+
+	// Time
+	manta_script += header_time
+		+ fluid_adaptive_time_stepping
+		+ fluid_adapt_time_step;
+
+	// Import
+	manta_script += header_import
+		+ flui

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list