[Bf-blender-cvs] [55e719ec35a] blender2.8: Merge branch 'master' into blender2.8

Campbell Barton noreply at git.blender.org
Wed Nov 14 07:22:28 CET 2018


Commit: 55e719ec35a10c3f9e7231dee13d4b05aad7d965
Author: Campbell Barton
Date:   Wed Nov 14 17:12:52 2018 +1100
Branches: blender2.8
https://developer.blender.org/rB55e719ec35a10c3f9e7231dee13d4b05aad7d965

Merge branch 'master' into blender2.8

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



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

diff --cc source/blender/blenkernel/BKE_dynamicpaint.h
index 537a2946f36,c265672da88..cffadeb5fd9
--- a/source/blender/blenkernel/BKE_dynamicpaint.h
+++ b/source/blender/blenkernel/BKE_dynamicpaint.h
@@@ -27,14 -27,11 +27,14 @@@
   *  \ingroup bke
   */
  
 -struct EvaluationContext;
 +struct Depsgraph;
 +struct DynamicPaintCanvasSettings;
 +struct DynamicPaintModifierData;
  struct Main;
  struct Scene;
 +struct ViewLayer;
  
--/* Actual surface point	*/
++/* Actual surface point */
  typedef struct PaintSurfaceData {
  	void *format_data; /* special data for each surface "format" */
  	void *type_data; /* data used by specific surface type */
@@@ -45,7 -42,7 +45,7 @@@
  
  } PaintSurfaceData;
  
--/* Paint type surface point	*/
++/* Paint type surface point */
  typedef struct PaintPoint {
  
  	/* Wet paint is handled at effect layer only
@@@ -56,7 -53,7 +56,7 @@@
  	float color[4];
  } PaintPoint;
  
--/* height field waves	*/
++/* height field waves */
  typedef struct PaintWavePoint {
  
  	float height;
diff --cc source/blender/blenkernel/intern/anim.c
index 89291b158b7,d5f269b82a8..c3b6041243d
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@@ -347,34 -367,25 +347,34 @@@ static void motionpaths_calc_bake_targe
  	/* for each target, check if it can be baked on the current frame */
  	for (mpt = targets->first; mpt; mpt = mpt->next) {
  		bMotionPath *mpath = mpt->mpath;
 -		bMotionPathVert *mpv;
  
  		/* current frame must be within the range the cache works for
- 		 *	- is inclusive of the first frame, but not the last otherwise we get buffer overruns
+ 		 * - is inclusive of the first frame, but not the last otherwise we get buffer overruns
  		 */
 -		if ((CFRA < mpath->start_frame) || (CFRA >= mpath->end_frame))
 +		if ((cframe < mpath->start_frame) || (cframe >= mpath->end_frame)) {
  			continue;
 +		}
  
  		/* get the relevant cache vert to write to */
 -		mpv = mpath->points + (CFRA - mpath->start_frame);
 +		bMotionPathVert *mpv = mpath->points + (cframe - mpath->start_frame);
  
 -		/* pose-channel or object path baking? */
 +		Object *ob_eval = mpt->ob_eval;
 +
 +		/* Lookup evaluated pose channel, here because the depsgraph
 +		 * evaluation can change them so they are not cached in mpt. */
 +		bPoseChannel *pchan_eval = NULL;
  		if (mpt->pchan) {
 +			pchan_eval = BKE_pose_channel_find_name(ob_eval->pose, mpt->pchan->name);
 +		}
 +
 +		/* pose-channel or object path baking? */
 +		if (pchan_eval) {
  			/* heads or tails */
  			if (mpath->flag & MOTIONPATH_FLAG_BHEAD) {
 -				copy_v3_v3(mpv->co, mpt->pchan->pose_head);
 +				copy_v3_v3(mpv->co, pchan_eval->pose_head);
  			}
  			else {
 -				copy_v3_v3(mpv->co, mpt->pchan->pose_tail);
 +				copy_v3_v3(mpv->co, pchan_eval->pose_tail);
  			}
  
  			/* result must be in worldspace */
@@@ -414,18 -399,17 +414,18 @@@
  }
  
  /* Perform baking of the given object's and/or its bones' transforms to motion paths
-  *	- scene: current scene
-  *	- ob: object whose flagged motionpaths should get calculated
-  *	- recalc: whether we need to
+  * - scene: current scene
+  * - ob: object whose flagged motionpaths should get calculated
+  * - recalc: whether we need to
   */
  /* TODO: include reports pointer? */
 -void animviz_calc_motionpaths(Main *bmain, Scene *scene, ListBase *targets)
 +void animviz_calc_motionpaths(Depsgraph *depsgraph,
 +                              Main *bmain,
 +                              Scene *scene,
 +                              ListBase *targets,
 +                              bool restore,
 +                              bool current_frame_only)
  {
 -	MPathTarget *mpt;
 -	int sfra, efra;
 -	int cfra;
 -
  	/* sanity check */
  	if (ELEM(NULL, targets, targets->first))
  		return;
diff --cc source/blender/blenkernel/intern/anim_sys.c
index d4355546c19,b17bc70c51a..351e765a8ea
--- a/source/blender/blenkernel/intern/anim_sys.c
+++ b/source/blender/blenkernel/intern/anim_sys.c
@@@ -1971,11 -1969,11 +1971,11 @@@ NlaEvalStrip *nlastrips_ctime_get_strip
  	}
  
  	/* evaluate strip's evaluation controls
- 	 *  - skip if no influence (i.e. same effect as muting the strip)
- 	 *	- negative influence is not supported yet... how would that be defined?
+ 	 * - skip if no influence (i.e. same effect as muting the strip)
+ 	 * - negative influence is not supported yet... how would that be defined?
  	 */
  	/* TODO: this sounds a bit hacky having a few isolated F-Curves stuck on some data it operates on... */
 -	nlastrip_evaluate_controls(estrip, ctime);
 +	nlastrip_evaluate_controls(depsgraph, estrip, ctime);
  	if (estrip->influence <= 0.0f)
  		return NULL;
  
@@@ -2016,9 -2014,9 +2016,9 @@@
  /* ---------------------- */
  
  /* find an NlaEvalChannel that matches the given criteria
-  *	- ptr and prop are the RNA data to find a match for
+  * - ptr and prop are the RNA data to find a match for
   */
 -static NlaEvalChannel *nlaevalchan_find_match(ListBase *channels, PointerRNA *ptr, PropertyRNA *prop, int array_index)
 +static NlaEvalChannel *nlaevalchan_find_match(ListBase *channels, const PathResolvedRNA *prna)
  {
  	NlaEvalChannel *nec;
  
@@@ -2031,9 -2029,9 +2031,9 @@@
  		/* - comparing the PointerRNA's is done by comparing the pointers
  		 *   to the actual struct the property resides in, since that all the
  		 *   other data stored in PointerRNA cannot allow us to definitively
- 		 *	identify the data
+ 		 *   identify the data
  		 */
 -		if ((nec->ptr.data == ptr->data) && (nec->prop == prop) && (nec->index == array_index))
 +		if ((nec->rna.ptr.data == prna->ptr.data) && (nec->rna.prop == prna->prop) && ELEM(nec->rna.prop_index, -1, prna->prop_index))
  			return nec;
  	}
  
@@@ -2585,10 -2625,21 +2585,10 @@@ static void animsys_evaluate_nla(Depsgr
  }
  
  /* NLA Evaluation function (mostly for use through do_animdata)
-  *	- All channels that will be affected are not cleared anymore. Instead, we just evaluate into
-  *		some temp channels, where values can be accumulated in one go.
+  * - All channels that will be affected are not cleared anymore. Instead, we just evaluate into
+  *   some temp channels, where values can be accumulated in one go.
   */
 -static void animsys_calculate_nla(PointerRNA *ptr, AnimData *adt, float ctime)
 +static void animsys_calculate_nla(Depsgraph *depsgraph, PointerRNA *ptr, AnimData *adt, float ctime)
  {
  	ListBase echannels = {NULL, NULL};
  
@@@ -2682,9 -2746,9 +2682,9 @@@ void BKE_animsys_evaluate_animdata(Deps
  		/* evaluate NLA data */
  		if ((adt->nla_tracks.first) && !(adt->flag & ADT_NLA_EVAL_OFF)) {
  			/* evaluate NLA-stack
- 			 *	- active action is evaluated as part of the NLA stack as the last item
+ 			 * - active action is evaluated as part of the NLA stack as the last item
  			 */
 -			animsys_calculate_nla(&id_ptr, adt, ctime);
 +			animsys_calculate_nla(depsgraph, &id_ptr, adt, ctime);
  		}
  		/* evaluate Active Action only */
  		else if (adt->action)
diff --cc source/blender/blenkernel/intern/armature.c
index fa5b59b739d,4ad9e9c8205..66106a97566
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@@ -2330,11 -2311,11 +2330,11 @@@ void BKE_pose_where_is(struct Depsgrap
  		}
  
  		/* 2a. construct the IK tree (standard IK) */
 -		BIK_initialize_tree(scene, ob, ctime);
 +		BIK_initialize_tree(depsgraph, scene, ob, ctime);
  
  		/* 2b. construct the Spline IK trees
- 		 *  - this is not integrated as an IK plugin, since it should be able
- 		 *	  to function in conjunction with standard IK
+ 		 * - this is not integrated as an IK plugin, since it should be able
+ 		 *   to function in conjunction with standard IK
  		 */
  		BKE_pose_splineik_init_tree(scene, ob, ctime);
  
diff --cc source/blender/blenkernel/intern/armature_update.c
index 2d9e2a0d84b,241a842d73f..ce87050f8bf
--- a/source/blender/blenkernel/intern/armature_update.c
+++ b/source/blender/blenkernel/intern/armature_update.c
@@@ -621,10 -602,10 +621,10 @@@ void BKE_pose_eval_init_ik(struct Depsg
  		return;
  	}
  	/* construct the IK tree (standard IK) */
 -	BIK_initialize_tree(scene, ob, ctime);
 +	BIK_initialize_tree(depsgraph, scene, ob, ctime);
  	/* construct the Spline IK trees
- 	 *  - this is not integrated as an IK plugin, since it should be able
- 	 *    to function in conjunction with standard IK
+ 	 * - this is not integrated as an IK plugin, since it should be able
+ 	 *   to function in conjunction with standard IK
  	 */
  	BKE_pose_splineik_init_tree(scene, ob, ctime);
  }
diff --cc source/blender/blenkernel/intern/constraint.c
index dccc959b4ea,66147c44352..e16117745c9
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@@ -434,63 -443,48 +434,63 @@@ static void contarget_get_mesh_mat(Obje
  					weightsum += dw->weight;
  				}
  			}
 +		}
 +	}
 +	else if (em) {
 +		if (CustomData_has_layer(&em->bm->vdata, CD_MDEFORMVERT)) {
 +			BMVert *v;
 +			BMIter iter;
  
 -			/* calculate averages of normal and coordinates */
 -			if (weightsum > 0) {
 -				mul_v3_fl(vec, 1.0f / weightsum);
 -				mul_v3_fl(normal, 1.0f / weightsum);
 -			}
 -
 +			BM_ITER_MESH (v, &iter, em->bm, BM_VERTS_OF_MESH) {
 +				MDeformVert *dv = CustomData_bmesh_get(&em->bm->vdata, v->head.data, CD_MDEFORMVERT);
 +				MDeformWeight *dw = defvert_find_index(dv, defgroup);
  
 -			/* derive the rotation from the average normal:
 -			 * - code taken from transform_manipulator.c,
 -			 *   calc_manipulator_stats, V3D_MANIP_NORMAL case
 -			 */
 -			/* we need the transpose of the inverse for a normal... */
 -			copy_m3_m4(imat, ob->obmat);
 +				if (dw && dw->weight > 0.0f) {
 +					madd_v3_v3fl(vec, v->co, dw->weight);
 +					madd_v3_v3fl(normal, v->no, dw->weight);
 +					weightsum += dw->weight;
 +				}
 +			}
 +		}
 +	}
 +	else {
 +		/* No valid edit or evaluated mesh, just abort. */
 +		return;
 +	}
  
 -			invert_m3_m3(tmat, imat);
 -			transpose_m3(tmat);
 -			mul_m3_v3(tmat, normal);
 +	/* calculate averages of normal and coordinates */
 +	if (weightsum > 0) {
 +		mul_v3_fl(vec, 1.0f / weightsum);
 +		mul_v3_fl(normal, 1.0f / weightsum);
 +	}
  
 -			normalize_v3(normal);
 -			c

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list