[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55132] trunk/blender/source/blender: code cleanup: move runtime var zfac out of RegionView3D.

Campbell Barton ideasman42 at gmail.com
Sat Mar 9 12:40:43 CET 2013


Revision: 55132
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55132
Author:   campbellbarton
Date:     2013-03-09 11:40:42 +0000 (Sat, 09 Mar 2013)
Log Message:
-----------
code cleanup: move runtime var zfac out of RegionView3D. rename initgrabz() -> ED_view3d_calc_zfac() and have it return the zfac to use.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/math_matrix.c
    trunk/blender/source/blender/editors/armature/editarmature_sketch.c
    trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/physics/particle_edit.c
    trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
    trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_project.c
    trunk/blender/source/blender/editors/space_view3d/view3d_select.c
    trunk/blender/source/blender/editors/transform/transform.c
    trunk/blender/source/blender/editors/transform/transform.h
    trunk/blender/source/blender/editors/transform/transform_constraints.c
    trunk/blender/source/blender/editors/transform/transform_generics.c
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h

Modified: trunk/blender/source/blender/blenlib/intern/math_matrix.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_matrix.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/blenlib/intern/math_matrix.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -367,7 +367,9 @@
 
 void mul_project_m4_v3(float mat[4][4], float vec[3])
 {
-	const float w = vec[0] * mat[0][3] + vec[1] * mat[1][3] + vec[2] * mat[2][3] + mat[3][3];
+	const float w = (mat[0][3] * vec[0]) +
+	                (mat[1][3] * vec[1]) +
+	                (mat[2][3] * vec[2]) + mat[3][3];
 	mul_m4_v3(mat, vec);
 
 	vec[0] /= w;

Modified: trunk/blender/source/blender/editors/armature/editarmature_sketch.c
===================================================================
--- trunk/blender/source/blender/editors/armature/editarmature_sketch.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/armature/editarmature_sketch.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -922,17 +922,18 @@
 	float fp[3] = {0, 0, 0};
 	float dvec[3];
 	float mval_f[2];
+	float zfac;
 
 	if (last != NULL) {
 		copy_v3_v3(fp, last->p);
 	}
 
-	initgrabz(ar->regiondata, fp[0], fp[1], fp[2]);
+	zfac = ED_view3d_calc_zfac(ar->regiondata, fp, NULL);
 
 	/* method taken from editview.c - mouse_cursor() */
 	if (ED_view3d_project_short_global(ar, fp, cval, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) {
 		VECSUB2D(mval_f, cval, dd->mval);
-		ED_view3d_win_to_delta(ar, mval_f, dvec);
+		ED_view3d_win_to_delta(ar, mval_f, dvec, zfac);
 		sub_v3_v3v3(vec, fp, dvec);
 	}
 	else {

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_paint.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_paint.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -277,6 +277,7 @@
 			int mval_prj[2];
 			float rvec[3], dvec[3];
 			float mval_f[2];
+			float zfac;
 			
 			/* Current method just converts each point in screen-coordinates to
 			 * 3D-coordinates using the 3D-cursor as reference. In general, this
@@ -288,12 +289,13 @@
 			 */
 			
 			gp_get_3d_reference(p, rvec);
+			zfac = ED_view3d_calc_zfac(p->ar->regiondata, rvec, NULL);
 			
 			/* method taken from editview.c - mouse_cursor() */
 			/* TODO, use ED_view3d_project_float_global */
 			if (ED_view3d_project_int_global(p->ar, rvec, mval_prj, V3D_PROJ_TEST_NOP) == V3D_PROJ_RET_OK) {
 				VECSUB2D(mval_f, mval_prj, mval);
-				ED_view3d_win_to_delta(p->ar, mval_f, dvec);
+				ED_view3d_win_to_delta(p->ar, mval_f, dvec, zfac);
 				sub_v3_v3v3(out, rvec, dvec);
 			}
 			else {
@@ -1237,13 +1239,6 @@
 		switch (p->sa->spacetype) {
 			case SPACE_VIEW3D:
 			{
-				RegionView3D *rv3d = p->ar->regiondata;
-				float rvec[3];
-				
-				/* get reference point for 3d space placement */
-				gp_get_3d_reference(p, rvec);
-				initgrabz(rv3d, rvec[0], rvec[1], rvec[2]);
-				
 				p->gpd->sbuffer_sflag |= GP_STROKE_3DSPACE;
 			}
 			break;

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2013-03-09 11:40:42 UTC (rev 55132)
@@ -197,11 +197,11 @@
 eV3DProjStatus ED_view3d_project_float_global(struct ARegion *ar, const float co[3], float r_co[2], const eV3DProjTest flag);
 eV3DProjStatus ED_view3d_project_float_object(struct ARegion *ar, const float co[3], float r_co[2], const eV3DProjTest flag);
 
-int initgrabz(struct RegionView3D *rv3d, float x, float y, float z);
+float ED_view3d_calc_zfac(struct RegionView3D *rv3d, const float co[3], bool *r_flip);
 void ED_view3d_win_to_ray(struct ARegion *ar, struct View3D *v3d, const float mval[2], float ray_start[3], float ray_normal[3]);
 void ED_view3d_global_to_vector(struct RegionView3D *rv3d, const float coord[3], float vec[3]);
 void ED_view3d_win_to_3d(struct ARegion *ar, const float depth_pt[3], const float mval[2], float out[3]);
-void ED_view3d_win_to_delta(struct ARegion *ar, const float mval[2], float out[3]);
+void ED_view3d_win_to_delta(struct ARegion *ar, const float mval[2], float out[3], const float zfac);
 void ED_view3d_win_to_vector(struct ARegion *ar, const float mval[2], float out[3]);
 void ED_view3d_win_to_segment(struct ARegion *ar, struct View3D *v3d, const float mval[2], float ray_start[3], float ray_end[3]);
 int  ED_view3d_win_to_segment_clip(struct ARegion *ar, struct View3D *v3d, const float mval[2], float ray_start[3], float ray_end[3]);

Modified: trunk/blender/source/blender/editors/physics/particle_edit.c
===================================================================
--- trunk/blender/source/blender/editors/physics/particle_edit.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/physics/particle_edit.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -3476,6 +3476,7 @@
 
 	int first;
 	int lastmouse[2];
+	float zfac;
 
 	/* optional cached view settings to avoid setting on every mousemove */
 	PEData data;
@@ -3498,7 +3499,6 @@
 	INIT_MINMAX(min, max);
 	PE_minmax(scene, min, max);
 	mid_v3_v3v3(min, min, max);
-	initgrabz(ar->regiondata, min[0], min[1], min[2]);
 
 	bedit= MEM_callocN(sizeof(BrushEdit), "BrushEdit");
 	bedit->first= 1;
@@ -3508,6 +3508,8 @@
 	bedit->ob= ob;
 	bedit->edit= edit;
 
+	bedit->zfac = ED_view3d_calc_zfac(ar->regiondata, min, NULL);
+
 	/* cache view depths and settings for re-use */
 	PE_set_view3d_data(C, &bedit->data);
 
@@ -3587,7 +3589,7 @@
 
 					invert_m4_m4(ob->imat, ob->obmat);
 
-					ED_view3d_win_to_delta(ar, mval_f, vec);
+					ED_view3d_win_to_delta(ar, mval_f, vec, bedit->zfac);
 					data.dvec= vec;
 
 					foreach_mouse_hit_key(&data, brush_comb, selected);

Modified: trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/sculpt_paint/paint_utils.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -160,13 +160,13 @@
 	Object *ob = vc->obact;
 	float delta[3], scale, loc[3];
 	const float mval_f[2] = {pixel_radius, 0.0f};
+	float zfac;
 
 	mul_v3_m4v3(loc, ob->obmat, center);
 
-	initgrabz(vc->rv3d, loc[0], loc[1], loc[2]);
+	zfac = ED_view3d_calc_zfac(vc->rv3d, loc, NULL);
+	ED_view3d_win_to_delta(vc->ar, mval_f, delta, zfac);
 
-	ED_view3d_win_to_delta(vc->ar, mval_f, delta);
-
 	scale = fabsf(mat4_to_scale(ob->obmat));
 	scale = (scale == 0.0f) ? 1.0f : scale;
 

Modified: trunk/blender/source/blender/editors/sculpt_paint/sculpt.c
===================================================================
--- trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/sculpt_paint/sculpt.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -1235,11 +1235,12 @@
 {
 	Object *ob = vc->obact;
 	float loc[3], mval_f[2] = {0.0f, 1.0f};
+	float zfac;
 
 	mul_v3_m4v3(loc, ob->imat, center);
-	initgrabz(vc->rv3d, loc[0], loc[1], loc[2]);
+	zfac = ED_view3d_calc_zfac(vc->rv3d, loc, NULL);
 
-	ED_view3d_win_to_delta(vc->ar, mval_f, y);
+	ED_view3d_win_to_delta(vc->ar, mval_f, y, zfac);
 	normalize_v3(y);
 
 	add_v3_v3(y, ob->loc);
@@ -3850,8 +3851,6 @@
 
 		/* compute 3d coordinate at same z from original location + mouse */
 		mul_v3_m4v3(loc, ob->obmat, cache->orig_grab_location);
-		initgrabz(cache->vc->rv3d, loc[0], loc[1], loc[2]);
-
 		ED_view3d_win_to_3d(cache->vc->ar, loc, mouse, grab_location);
 
 		/* compute delta to move verts by */

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_draw.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -1705,10 +1705,12 @@
 				float tvec[3];
 				float sco[2];
 				const float mval_f[2] = {1.0f, 0.0f};
+				const float co_zero[3] = {0};
+				float zfac;
 
 				/* calc window coord */
-				initgrabz(rv3d, 0.0, 0.0, 0.0);
-				ED_view3d_win_to_delta(ar, mval_f, tvec);
+				zfac = ED_view3d_calc_zfac(rv3d, co_zero, NULL);
+				ED_view3d_win_to_delta(ar, mval_f, tvec, zfac);
 				fac = max_ff(fabsf(tvec[0]), max_ff(fabsf(tvec[1]), fabsf(tvec[2]))); /* largest abs axis */
 				fac = 1.0f / fac;
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2013-03-09 11:18:01 UTC (rev 55131)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2013-03-09 11:40:42 UTC (rev 55132)
@@ -368,6 +368,7 @@
 	float reverse, dist0, camzoom0;
 	float grid, far;
 	short axis_snap; /* view rotate only */
+	float zfac;
 
 	/* use for orbit selection and auto-dist */
 	float ofs[3], dyn_ofs[3];
@@ -504,7 +505,11 @@
 
 	calctrackballvec(&vod->ar->winrct, event->x, event->y, vod->trackvec);
 
-	initgrabz(rv3d, -rv3d->ofs[0], -rv3d->ofs[1], -rv3d->ofs[2]);
+	{
+		float tvec[3];
+		negate_v3_v3(tvec, rv3d->ofs);
+		vod->zfac = ED_view3d_calc_zfac(rv3d, tvec, NULL);
+	}
 
 	vod->reverse = 1.0f;
 	if (rv3d->persmat[2][1] < 0.0f)
@@ -1508,7 +1513,7 @@
 
 		mval_f[0] = x - vod->oldx;
 		mval_f[1] = y - vod->oldy;
-		ED_view3d_win_to_delta(vod->ar, mval_f, dvec);
+		ED_view3d_win_to_delta(vod->ar, mval_f, dvec, vod->zfac);
 
 		add_v3_v3(vod->rv3d->ofs, dvec);
 
@@ -1665,16 +1670,17 @@
 		float tpos[3];
 		float mval_f[2];
 		float new_dist;
+		float zfac;
 
 		negate_v3_v3(tpos, rv3d->ofs);
 
-		/* Project cursor position into 3D space */
-		initgrabz(rv3d, tpos[0], tpos[1], tpos[2]);
-
 		mval_f[0] = (float)(((mx - ar->winrct.xmin) * 2) - ar->winx) / 2.0f;
 		mval_f[1] = (float)(((my - ar->winrct.ymin) * 2) - ar->winy) / 2.0f;
-		ED_view3d_win_to_delta(ar, mval_f, dvec);
 
+		/* Project cursor position into 3D space */
+		zfac = ED_view3d_calc_zfac(rv3d, tpos, NULL);
+		ED_view3d_win_to_delta(ar, mval_f, dvec, zfac);
+
 		/* Calculate view target position for dolly */
 		add_v3_v3v3(tvec, tpos, dvec);

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list