[Bf-blender-cvs] [f7eebdd] temp_merge_gooseberry_hair: Fix for merge errors and leftover unused code lines.

Lukas Tönne noreply at git.blender.org
Mon Jan 19 20:50:58 CET 2015


Commit: f7eebddc62bc6530b2b437fa35f8405a97f8e89d
Author: Lukas Tönne
Date:   Mon Jan 19 20:01:37 2015 +0100
Branches: temp_merge_gooseberry_hair
https://developer.blender.org/rBf7eebddc62bc6530b2b437fa35f8405a97f8e89d

Fix for merge errors and leftover unused code lines.

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

M	source/blender/physics/intern/BPH_mass_spring.cpp

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

diff --git a/source/blender/physics/intern/BPH_mass_spring.cpp b/source/blender/physics/intern/BPH_mass_spring.cpp
index d911a43..945cc0d 100644
--- a/source/blender/physics/intern/BPH_mass_spring.cpp
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
@@ -526,21 +526,15 @@ static void cloth_calc_force(ClothModifierData *clmd, float UNUSED(frame), ListB
 	}
 }
 
-#if 0
-#endif
-/* returns active vertexes' motion state, or original location the vertex is disabled */
-BLI_INLINE bool cloth_get_grid_location(Implicit_Data *data, float cell_scale, const float cell_offset[3],
-                                        ClothVertex *vert, int index, float x[3], float v[3])
+/* returns vertexes' motion state */
+BLI_INLINE void cloth_get_grid_location(Implicit_Data *data, float cell_scale, const float cell_offset[3],
+                                        int index, float x[3], float v[3])
 {
-	bool is_motion_state;
 	BPH_mass_spring_get_position(data, index, x);
 	BPH_mass_spring_get_new_velocity(data, index, v);
-	is_motion_state = true;
 	
 	mul_v3_fl(x, cell_scale);
 	add_v3_v3(x, cell_offset);
-	
-	return is_motion_state;
 }
 
 /* returns next spring forming a continous hair sequence */
@@ -583,9 +577,9 @@ static LinkNode *cloth_continuum_add_hair_segments(HairGrid *grid, const float c
 	zero_v3(dir2);
 	
 	vert3 = &verts[spring3->kl];
-	cloth_get_grid_location(data, cell_scale, cell_offset, vert3, spring3->kl, x3, v3);
+	cloth_get_grid_location(data, cell_scale, cell_offset, spring3->kl, x3, v3);
 	vert4 = &verts[spring3->ij];
-	cloth_get_grid_location(data, cell_scale, cell_offset, vert4, spring3->ij, x4, v4);
+	cloth_get_grid_location(data, cell_scale, cell_offset, spring3->ij, x4, v4);
 	sub_v3_v3v3(dir3, x4, x3);
 	normalize_v3(dir3);
 	
@@ -610,7 +604,7 @@ static LinkNode *cloth_continuum_add_hair_segments(HairGrid *grid, const float c
 		if (spring_link) {
 			spring3 = (ClothSpring *)spring_link->link;
 			vert4 = &verts[spring3->ij];
-			cloth_get_grid_location(data, cell_scale, cell_offset, vert4, spring3->ij, x4, v4);
+			cloth_get_grid_location(data, cell_scale, cell_offset, spring3->ij, x4, v4);
 			sub_v3_v3v3(dir3, x4, x3);
 			normalize_v3(dir3);
 		}
@@ -700,8 +694,8 @@ static void cloth_continuum_step(ClothModifierData *clmd, float dt)
 	
 	const float fluid_factor = 0.95f; /* blend between PIC and FLIP methods */
 	float smoothfac = parms->velocity_smooth;
-	float pressfac = parms->pressure;
-	float minpress = parms->pressure_threshold;
+	float density_target = parms->density_target;
+	float density_strength = parms->density_strength;
 	float gmin[3], gmax[3];
 	int i;
 	
@@ -713,14 +707,14 @@ static void cloth_continuum_step(ClothModifierData *clmd, float dt)
 	hair_get_boundbox(clmd, gmin, gmax);
 	
 	/* gather velocities & density */
-	if (smoothfac > 0.0f || pressfac > 0.0f) {
+	if (smoothfac > 0.0f || density_strength > 0.0f) {
 		HairGrid *grid = BPH_hair_volume_create_vertex_grid(clmd->sim_parms->voxel_cell_size, gmin, gmax);
 		BPH_hair_volume_set_debug_data(grid, clmd->debug_data);
 		
 		cloth_continuum_fill_grid(grid, cloth);
 		
 		/* main hair continuum solver */
-		BPH_hair_volume_solve_divergence(grid, dt);
+		BPH_hair_volume_solve_divergence(grid, dt, density_target, density_strength);
 		
 		for (i = 0, vert = cloth->verts; i < numverts; i++, vert++) {
 			float x[3], v[3], nv[3];
@@ -838,270 +832,6 @@ static void cloth_calc_volume_force(ClothModifierData *clmd)
 }
 #endif
 
-/* returns active vertexes' motion state, or original location the vertex is disabled */
-BLI_INLINE bool cloth_get_grid_location(Implicit_Data *data, float cell_scale, const float cell_offset[3],
-                                        ClothVertex *vert, float x[3], float v[3])
-{
-	bool is_motion_state;
-	if (vert->solver_index < 0) {
-		copy_v3_v3(x, vert->x);
-		copy_v3_v3(v, vert->v);
-		is_motion_state = false;
-	}
-	else {
-		BPH_mass_spring_get_position(data, vert->solver_index, x);
-		BPH_mass_spring_get_new_velocity(data, vert->solver_index, v);
-		is_motion_state = true;
-	}
-	
-	mul_v3_fl(x, cell_scale);
-	add_v3_v3(x, cell_offset);
-	
-	return is_motion_state;
-}
-
-/* returns next spring forming a continous hair sequence */
-BLI_INLINE LinkNode *hair_spring_next(LinkNode *spring_link)
-{
-	ClothSpring *spring = (ClothSpring *)spring_link->link;
-	LinkNode *next = spring_link->next;
-	if (next) {
-		ClothSpring *next_spring = (ClothSpring *)next->link;
-		if (next_spring->type == CLOTH_SPRING_TYPE_STRUCTURAL && next_spring->kl == spring->ij)
-			return next;
-	}
-	return NULL;
-}
-
-/* XXX this is nasty: cloth meshes do not explicitly store
- * the order of hair segments!
- * We have to rely on the spring build function for now,
- * which adds structural springs in reverse order:
- *   (3,4), (2,3), (1,2)
- * This is currently the only way to figure out hair geometry inside this code ...
- */
-static LinkNode *cloth_continuum_add_hair_segments(HairGrid *grid, const float cell_scale, const float cell_offset[3], Cloth *cloth, LinkNode *spring_link)
-{
-	Implicit_Data *data = cloth->implicit;
-	LinkNode *next_spring_link = NULL; /* return value */
-	ClothSpring *spring1, *spring2, *spring3;
-	ClothVertex *verts = cloth->verts;
-	ClothVertex *vert3, *vert4;
-	float x1[3], v1[3], x2[3], v2[3], x3[3], v3[3], x4[3], v4[3];
-	float dir1[3], dir2[3], dir3[3];
-	
-	spring1 = NULL;
-	spring2 = NULL;
-	spring3 = (ClothSpring *)spring_link->link;
-	
-	zero_v3(x1); zero_v3(v1);
-	zero_v3(dir1);
-	zero_v3(x2); zero_v3(v2);
-	zero_v3(dir2);
-	
-	vert3 = &verts[spring3->kl];
-	cloth_get_grid_location(data, cell_scale, cell_offset, vert3, x3, v3);
-	vert4 = &verts[spring3->ij];
-	cloth_get_grid_location(data, cell_scale, cell_offset, vert4, x4, v4);
-	sub_v3_v3v3(dir3, x4, x3);
-	normalize_v3(dir3);
-	
-	while (spring_link) {
-		/* move on */
-		spring1 = spring2;
-		spring2 = spring3;
-		
-		vert3 = vert4;
-		
-		copy_v3_v3(x1, x2); copy_v3_v3(v1, v2);
-		copy_v3_v3(x2, x3); copy_v3_v3(v2, v3);
-		copy_v3_v3(x3, x4); copy_v3_v3(v3, v4);
-		
-		copy_v3_v3(dir1, dir2);
-		copy_v3_v3(dir2, dir3);
-		
-		/* read next segment */
-		next_spring_link = spring_link->next;
-		spring_link = hair_spring_next(spring_link);
-		
-		if (spring_link) {
-			spring3 = (ClothSpring *)spring_link->link;
-			vert4 = &verts[spring3->ij];
-			cloth_get_grid_location(data, cell_scale, cell_offset, vert4, x4, v4);
-			sub_v3_v3v3(dir3, x4, x3);
-			normalize_v3(dir3);
-		}
-		else {
-			spring3 = NULL;
-			vert4 = NULL;
-			zero_v3(x4); zero_v3(v4);
-			zero_v3(dir3);
-		}
-		
-		BPH_hair_volume_add_segment(grid, x1, v1, x2, v2, x3, v3, x4, v4,
-		                            spring1 ? dir1 : NULL,
-		                            dir2,
-		                            spring3 ? dir3 : NULL);
-	}
-	
-	/* last segment */
-	spring1 = spring2;
-	spring2 = spring3;
-	spring3 = NULL;
-	
-	vert3 = vert4;
-	vert4 = NULL;
-	
-	copy_v3_v3(x1, x2); copy_v3_v3(v1, v2);
-	copy_v3_v3(x2, x3); copy_v3_v3(v2, v3);
-	copy_v3_v3(x3, x4); copy_v3_v3(v3, v4);
-	zero_v3(x4);        zero_v3(v4);
-	
-	copy_v3_v3(dir1, dir2);
-	copy_v3_v3(dir2, dir3);
-	zero_v3(dir3);
-	
-	BPH_hair_volume_add_segment(grid, x1, v1, x2, v2, x3, v3, x4, v4,
-	                            spring1 ? dir1 : NULL,
-	                            dir2,
-	                            NULL);
-	
-	return next_spring_link;
-}
-
-static void cloth_continuum_fill_grid(HairGrid *grid, Cloth *cloth)
-{
-#if 0
-	Implicit_Data *data = cloth->implicit;
-	int numverts = cloth->numverts;
-	ClothVertex *vert;
-	int i;
-	
-	for (i = 0, vert = cloth->verts; i < numverts; i++, vert++) {
-		float x[3], v[3];
-		
-		cloth_get_vertex_motion_state(data, vert, x, v);
-		BPH_hair_volume_add_vertex(grid, x, v);
-	}
-#else
-	LinkNode *link;
-	float cellsize, gmin[3], cell_scale, cell_offset[3];
-	
-	/* scale and offset for transforming vertex locations into grid space
-	 * (cell size is 0..1, gmin becomes origin)
-	 */
-	BPH_hair_volume_grid_geometry(grid, &cellsize, NULL, gmin, NULL);
-	cell_scale = cellsize > 0.0f ? 1.0f / cellsize : 0.0f;
-	mul_v3_v3fl(cell_offset, gmin, cell_scale);
-	negate_v3(cell_offset);
-	
-	link = cloth->springs;
-	while (link) {
-		ClothSpring *spring = (ClothSpring *)link->link;
-		if (spring->type == CLOTH_SPRING_TYPE_STRUCTURAL)
-			link = cloth_continuum_add_hair_segments(grid, cell_scale, cell_offset, cloth, link);
-		else
-			link = link->next;
-	}
-#endif
-	BPH_hair_volume_normalize_vertex_grid(grid);
-}
-
-static void cloth_continuum_step(ClothModifierData *clmd, float dt)
-{
-	ClothSimSettings *parms = clmd->sim_parms;
-	Cloth *cloth = clmd->clothObject;
-	Implicit_Data *data = cloth->implicit;
-	int numverts = cloth->numverts;
-	ClothVertex *vert;
-	
-	const float fluid_factor = 0.95f; /* blend between PIC and FLIP methods */
-	float smoothfac = parms->velocity_smooth;
-	float denstarget = parms->density_target;
-	float densfac = parms->density_strength;
-	float gmin[3], gmax[3];
-	int i;
-	
-	/* clear grid info */
-	zero_v3_int(clmd->hair_grid_res);
-	zero_v3(clmd->hair_grid_min);
-	zero_v3(clmd->hair_grid_max);
-	
-	hair_get_boundbox(clmd, gmin, gmax);
-	
-	/* gather velocities & density */
-	if (smoothfac > 0.0f || densfac > 0.0f) {
-		HairGrid *grid = BPH_hair_volume_create_vertex_grid(clmd->sim_parms->voxel_cell_size, gmin, gmax);
-		BPH_hair_volume_set_debug_data(grid, clmd->debug_data);
-		
-//		BPH_hair_volume_set_debug_value(grid, (int)(spring2->ij == clmd->sim_parms->density_target));
-		cloth_continuum_fill_grid(grid, cloth);
-		
-		/* main hair continuum solver */
-		BPH_hair_volume_solve_divergence(grid, dt, denstarget, densfac);
-		
-		for (i = 0, vert = cloth->verts; i < numverts; i++, vert++) {
-			float x[3], v[3], nv[3];
-			
-			if (vert->solver_index < 0)
-				continue;
-			
-			/* calculate volumetric velocity influence */
-			BPH_mass_spring_get_position(data, vert->solver_index, x);
-			BPH_mass_spring_get_new_velocity(data, vert->solver_index, v);
-			
-			BPH_hair_volume_grid_velocity(grid, x, v, fluid_factor, nv);
-			
-			interp_v3_v3v3(nv, v, nv, smoothfac);
-			
-			/* apply on hair data */
-			BPH_mass_spring_set_new_velocity(data, vert->solver_index, nv);
-		}
-		
-		/* store 

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list