[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53643] trunk/blender/source/blender/ editors/space_view3d/drawanimviz.c: Motion Path drawing tweaks and fixes

Joshua Leung aligorith at gmail.com
Tue Jan 8 02:01:03 CET 2013


Revision: 53643
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53643
Author:   aligorith
Date:     2013-01-08 01:00:59 +0000 (Tue, 08 Jan 2013)
Log Message:
-----------
Motion Path drawing tweaks and fixes

* Green (current frame) color now extends to the segments on either side of the
current frame point. This is so that the path is more visible (especially on the
black/dark side), as those segments were prone to being interpolated such that
they became invisible

* Added padding for frame number strings so that they do not overlap the dots
anymore

* Fixed off-by-one error, which meant that the frame number for the first frame
step (white dot) didn't get shown

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/drawanimviz.c

Modified: trunk/blender/source/blender/editors/space_view3d/drawanimviz.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/drawanimviz.c	2013-01-07 21:56:13 UTC (rev 53642)
+++ trunk/blender/source/blender/editors/space_view3d/drawanimviz.c	2013-01-08 01:00:59 UTC (rev 53643)
@@ -139,35 +139,38 @@
 		short sel = (pchan) ? (pchan->bone->flag & BONE_SELECTED) : (ob->flag & SELECT);
 		float intensity;  /* how faint */
 		
+		int frame = sfra + i;
+		int blend_base = (abs(frame - CFRA) == 1) ? TH_CFRAME : TH_BACK; /* "bleed" cframe color to ease color blending */
+		
 		/* set color
 		 * - more intense for active/selected bones, less intense for unselected bones
 		 * - black for before current frame, green for current frame, blue for after current frame
 		 * - intensity decreases as distance from current frame increases
 		 */
 		#define SET_INTENSITY(A, B, C, min, max) (((1.0f - ((C - B) / (C - A))) * (max - min)) + min)
-		if ((sfra + i) < CFRA) {
+		if (frame < CFRA) {
 			/* black - before cfra */
 			if (sel) {
-				// intensity = 0.5f;
+				/* intensity = 0.5f; */
 				intensity = SET_INTENSITY(sfra, i, CFRA, 0.25f, 0.75f);
 			}
 			else {
-				//intensity = 0.8f;
+				/* intensity = 0.8f; */
 				intensity = SET_INTENSITY(sfra, i, CFRA, 0.68f, 0.92f);
 			}
-			UI_ThemeColorBlend(TH_WIRE, TH_BACK, intensity);
+			UI_ThemeColorBlend(TH_WIRE, blend_base, intensity);
 		}
-		else if ((sfra + i) > CFRA) {
+		else if (frame > CFRA) {
 			/* blue - after cfra */
 			if (sel) {
-				//intensity = 0.5f;
+				/* intensity = 0.5f; */
 				intensity = SET_INTENSITY(CFRA, i, efra, 0.25f, 0.75f);
 			}
 			else {
-				//intensity = 0.8f;
+				/* intensity = 0.8f; */
 				intensity = SET_INTENSITY(CFRA, i, efra, 0.68f, 0.92f);
 			}
-			UI_ThemeColorBlend(TH_BONE_POSE, TH_BACK, intensity);
+			UI_ThemeColorBlend(TH_BONE_POSE, blend_base, intensity);
 		}
 		else {
 			/* green - on cfra */
@@ -232,21 +235,22 @@
 		col[3] = 255;
 		
 		for (i = 0, mpv = mpv_start; i < len; i += stepsize, mpv += stepsize) {
+			int frame = sfra + i;
 			char numstr[32];
 			float co[3];
 			
 			/* only draw framenum if several consecutive highlighted points don't occur on same point */
 			if (i == 0) {
-				sprintf(numstr, "%d", (i + sfra));
+				sprintf(numstr, " %d", frame);
 				mul_v3_m4v3(co, ob->imat, mpv->co);
 				view3d_cached_text_draw_add(co, numstr, 0, V3D_CACHE_TEXT_WORLDSPACE | V3D_CACHE_TEXT_ASCII, col);
 			}
-			else if ((i > stepsize) && (i < len - stepsize)) {
+			else if ((i >= stepsize) && (i < len - stepsize)) {
 				bMotionPathVert *mpvP = (mpv - stepsize);
 				bMotionPathVert *mpvN = (mpv + stepsize);
 				
 				if ((equals_v3v3(mpv->co, mpvP->co) == 0) || (equals_v3v3(mpv->co, mpvN->co) == 0)) {
-					sprintf(numstr, "%d", (sfra + i));
+					sprintf(numstr, " %d", frame);
 					mul_v3_m4v3(co, ob->imat, mpv->co);
 					view3d_cached_text_draw_add(co, numstr, 0, V3D_CACHE_TEXT_WORLDSPACE | V3D_CACHE_TEXT_ASCII, col);
 				}
@@ -286,12 +290,13 @@
 		UI_GetThemeColor3ubv(TH_VERTEX_SELECT, col);
 		col[3] = 255;
 		
-		glPointSize(4.0f); // XXX perhaps a bit too big
+		glPointSize(4.0f);
 		glColor3ubv(col);
 		
 		glBegin(GL_POINTS);
 		for (i = 0, mpv = mpv_start; i < len; i++, mpv++) {
-			float mframe = (float)(sfra + i);
+			int    frame = sfra + i; 
+			float mframe = (float)(frame);
 			
 			if (BLI_dlrbTree_search_exact(&keys, compare_ak_cfraPtr, &mframe))
 				glVertex3fv(mpv->co);
@@ -309,7 +314,7 @@
 				if (BLI_dlrbTree_search_exact(&keys, compare_ak_cfraPtr, &mframe)) {
 					char numstr[32];
 					
-					sprintf(numstr, "%d", (sfra + i));
+					sprintf(numstr, " %d", (sfra + i));
 					mul_v3_m4v3(co, ob->imat, mpv->co);
 					view3d_cached_text_draw_add(co, numstr, 0, V3D_CACHE_TEXT_WORLDSPACE | V3D_CACHE_TEXT_ASCII, col);
 				}




More information about the Bf-blender-cvs mailing list