[Bf-blender-cvs] [81f898f053d] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Fri Nov 30 22:34:36 CET 2018


Commit: 81f898f053d277a704c58031a56c261b974c36e2
Author: Campbell Barton
Date:   Sat Dec 1 08:17:00 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB81f898f053d277a704c58031a56c261b974c36e2

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/physics/intern/BPH_mass_spring.cpp
index d43ce37cbfe,1b8b05ac752..111d5c5b68f
--- a/source/blender/physics/intern/BPH_mass_spring.cpp
+++ b/source/blender/physics/intern/BPH_mass_spring.cpp
@@@ -967,15 -973,14 +967,15 @@@ int BPH_cloth_solve(Depsgraph *depsgrap
  	 * Collision detection and volumetrics work differently then.
  	 * Bad design, TODO
  	 */
 +	Scene *scene = DEG_get_evaluated_scene(depsgraph);
  	const bool is_hair = (clmd->hairdata != NULL);
  
- 	unsigned int i=0;
- 	float step=0.0f, tf=clmd->sim_parms->timescale;
+ 	unsigned int i = 0;
+ 	float step = 0.0f, tf = clmd->sim_parms->timescale;
  	Cloth *cloth = clmd->clothObject;
- 	ClothVertex *verts = cloth->verts/*, *cv*/;
+ 	ClothVertex *verts = cloth->verts /*, *cv*/;
  	unsigned int mvert_num = cloth->mvert_num;
 -	float dt = clmd->sim_parms->timescale / clmd->sim_parms->stepsPerFrame;
 +	float dt = clmd->sim_parms->dt * clmd->sim_parms->timescale;
  	Implicit_Data *id = cloth->implicit;
  	ColliderContacts *contacts = NULL;
  	int totcolliders = 0;
diff --cc source/blender/physics/intern/implicit.h
index f99812a8aa9,477bc704aff..11621ac812c
--- a/source/blender/physics/intern/implicit.h
+++ b/source/blender/physics/intern/implicit.h
@@@ -108,24 -107,19 +108,24 @@@ void BPH_mass_spring_force_drag(struct 
  /* Custom external force */
  void BPH_mass_spring_force_extern(struct Implicit_Data *data, int i, const float f[3], float dfdx[3][3], float dfdv[3][3]);
  /* Wind force, acting on a face */
- void BPH_mass_spring_force_face_wind(struct Implicit_Data *data, int v1, int v2, int v3, const float (*winvec)[3]);
+ void BPH_mass_spring_force_face_wind(struct Implicit_Data *data, int v1, int v2, int v3, const float(*winvec)[3]);
  /* Wind force, acting on an edge */
- void BPH_mass_spring_force_edge_wind(struct Implicit_Data *data, int v1, int v2, float radius1, float radius2, const float (*winvec)[3]);
+ void BPH_mass_spring_force_edge_wind(struct Implicit_Data *data, int v1, int v2, float radius1, float radius2, const float(*winvec)[3]);
  /* Wind force, acting on a vertex */
- void BPH_mass_spring_force_vertex_wind(struct Implicit_Data *data, int v, float radius, const float (*winvec)[3]);
+ void BPH_mass_spring_force_vertex_wind(struct Implicit_Data *data, int v, float radius, const float(*winvec)[3]);
  /* Linear spring force between two points */
  bool BPH_mass_spring_force_spring_linear(struct Implicit_Data *data, int i, int j, float restlen,
 -                                         float stiffness, float damping, bool no_compress, float clamp_force);
 +                                         float stiffness_tension, float damping_tension,
 +                                         float stiffness_compression, float damping_compression,
 +                                         bool resist_compress, bool new_compress, float clamp_force);
 +/* Angular spring force between two polygons */
 +bool BPH_mass_spring_force_spring_angular(struct Implicit_Data *data, int i, int j, int *i_a, int *i_b, int len_a, int len_b,
 +                                          float restang, float stiffness, float damping);
  /* Bending force, forming a triangle at the base of two structural springs */
  bool BPH_mass_spring_force_spring_bending(struct Implicit_Data *data, int i, int j, float restlen, float kb, float cb);
  /* Angular bending force based on local target vectors */
 -bool BPH_mass_spring_force_spring_bending_angular(struct Implicit_Data *data, int i, int j, int k,
 -                                                  const float target[3], float stiffness, float damping);
 +bool BPH_mass_spring_force_spring_bending_hair(struct Implicit_Data *data, int i, int j, int k,
-                                                   const float target[3], float stiffness, float damping);
++                                               const float target[3], float stiffness, float damping);
  /* Global goal spring */
  bool BPH_mass_spring_force_spring_goal(struct Implicit_Data *data, int i, const float goal_x[3], const float goal_v[3],
                                         float stiffness, float damping);
diff --cc source/blender/physics/intern/implicit_blender.c
index 20f4a9f3163,8ee9513e81b..28546f8ca0d
--- a/source/blender/physics/intern/implicit_blender.c
+++ b/source/blender/physics/intern/implicit_blender.c
@@@ -610,10 -603,8 +610,10 @@@ DO_INLINE void mul_bfmatrix_lfvector(fl
  	{
  #pragma omp section
  		{
- 			for (i = from[0].vcount; i < from[0].vcount+from[0].scount; i++) {
+ 			for (i = from[0].vcount; i < from[0].vcount + from[0].scount; i++) {
 -				muladd_fmatrix_fvector(to[from[i].c], from[i].m, fLongVector[from[i].r]);
 +				/* This is the lower triangle of the sparse matrix,
 +				 * therefore multiplication occurs with transposed submatrices. */
 +				muladd_fmatrixT_fvector(to[from[i].c], from[i].m, fLongVector[from[i].r]);
  			}
  		}
  #pragma omp section
@@@ -1802,11 -1671,11 +1802,11 @@@ BLI_INLINE void spring_grad_dir(Implici
  	}
  }
  
 -BLI_INLINE void spring_angbend_forces(Implicit_Data *data, int i, int j, int k,
 -                                      const float goal[3],
 -                                      float stiffness, float damping,
 -                                      int q, const float dx[3], const float dv[3],
 -                                      float r_f[3])
 +BLI_INLINE void spring_hairbend_forces(Implicit_Data *data, int i, int j, int k,
-                                       const float goal[3],
-                                       float stiffness, float damping,
-                                       int q, const float dx[3], const float dv[3],
-                                       float r_f[3])
++                                       const float goal[3],
++                                       float stiffness, float damping,
++                                       int q, const float dx[3], const float dv[3],
++                                       float r_f[3])
  {
  	float edge_ij[3], dir_ij[3];
  	float edge_jk[3], dir_jk[3];
@@@ -1851,10 -1720,10 +1851,10 @@@
  }
  
  /* Finite Differences method for estimating the jacobian of the force */
 -BLI_INLINE void spring_angbend_estimate_dfdx(Implicit_Data *data, int i, int j, int k,
 -                                             const float goal[3],
 -                                             float stiffness, float damping,
 -                                             int q, float dfdx[3][3])
 +BLI_INLINE void spring_hairbend_estimate_dfdx(Implicit_Data *data, int i, int j, int k,
-                                              const float goal[3],
-                                              float stiffness, float damping,
-                                              int q, float dfdx[3][3])
++                                              const float goal[3],
++                                              float stiffness, float damping,
++                                              int q, float dfdx[3][3])
  {
  	const float delta = 0.00001f; // TODO find a good heuristic for this
  	float dvec_null[3][3], dvec_pos[3][3], dvec_neg[3][3];
@@@ -1870,12 -1739,12 +1870,12 @@@
  	/* XXX TODO offset targets to account for position dependency */
  
  	for (a = 0; a < 3; ++a) {
 -		spring_angbend_forces(data, i, j, k, goal, stiffness, damping,
 -		                      q, dvec_pos[a], dvec_null[a], f);
 +		spring_hairbend_forces(data, i, j, k, goal, stiffness, damping,
- 		                      q, dvec_pos[a], dvec_null[a], f);
++		                       q, dvec_pos[a], dvec_null[a], f);
  		copy_v3_v3(dfdx[a], f);
  
 -		spring_angbend_forces(data, i, j, k, goal, stiffness, damping,
 -		                      q, dvec_neg[a], dvec_null[a], f);
 +		spring_hairbend_forces(data, i, j, k, goal, stiffness, damping,
- 		                      q, dvec_neg[a], dvec_null[a], f);
++		                       q, dvec_neg[a], dvec_null[a], f);
  		sub_v3_v3(dfdx[a], f);
  
  		for (b = 0; b < 3; ++b) {
@@@ -1885,10 -1754,10 +1885,10 @@@
  }
  
  /* Finite Differences method for estimating the jacobian of the force */
 -BLI_INLINE void spring_angbend_estimate_dfdv(Implicit_Data *data, int i, int j, int k,
 -                                             const float goal[3],
 -                                             float stiffness, float damping,
 -                                             int q, float dfdv[3][3])
 +BLI_INLINE void spring_hairbend_estimate_dfdv(Implicit_Data *data, int i, int j, int k,
-                                              const float goal[3],
-                                              float stiffness, float damping,
-                                              int q, float dfdv[3][3])
++                                              const float goal[3],
++                                              float stiffness, float damping,
++                                              int q, float dfdv[3][3])
  {
  	const float delta = 0.00001f; // TODO find a good heuristic for this
  	float dvec_null[3][3], dvec_pos[3][3], dvec_neg[3][3];
@@@ -1904,12 -1773,12 +1904,12 @@@
  	/* XXX TODO offset targets to account for position dependency */
  
  	for (a = 0; a < 3; ++a) {
 -		spring_angbend_forces(data, i, j, k, goal, stiffness, damping,
 -		                      q, dvec_null[a], dvec_pos[a], f);
 +		spring_hairbend_forces(data, i, j, k, goal, stiffness, damping,
- 		                      q, dvec_null[a], dvec_pos[a], f);
++		                       q, dvec_null[a], dvec_pos[a], f);
  		copy_v3_v3(dfdv[a], f);
  
 -		spring_angbend_forces(data, i, j, k, goal, stiffness, damping,
 -		                      q, dvec_null[a], dvec_neg[a], f);
 +		spring_hairbend_forces(data, i, j, k, goal, stiffness, damping,
- 		                      q, dvec_null[a], dvec_neg[a], f);
++		                       q, dvec_null[a], dvec_neg[a], f);
  		sub_v3_v3(dfdv[a], f);
  
  		for (b = 0; b < 3; ++b) {
@@@ -1921,8 -1790,8 +1921,8 @@@
  /* Angular spring that pulls the vertex toward the local target
   * See "Artistic Simulation of Curly Hair" (Pixar technical memo #12-03a)
   */
 -bool BPH_mass_spring_force_spring_bending_angular(Implicit_Data *dat

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list