[Bf-blender-cvs] [0c78ba1] master: Correct recent fix for knife in camera ortho mode

Campbell Barton noreply at git.blender.org
Wed Jul 2 22:57:28 CEST 2014


Commit: 0c78ba1ba87f516809c7e6ea98729e872b4bd5e3
Author: Campbell Barton
Date:   Thu Jul 3 05:39:22 2014 +1000
https://developer.blender.org/rB0c78ba1ba87f516809c7e6ea98729e872b4bd5e3

Correct recent fix for knife in camera ortho mode

now use real view clip ranges for win-to-ray segment

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

M	source/blender/editors/space_view3d/view3d_project.c

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

diff --git a/source/blender/editors/space_view3d/view3d_project.c b/source/blender/editors/space_view3d/view3d_project.c
index 9b14df4..073d4ed 100644
--- a/source/blender/editors/space_view3d/view3d_project.c
+++ b/source/blender/editors/space_view3d/view3d_project.c
@@ -315,23 +315,27 @@ static void view3d_win_to_ray_segment(const ARegion *ar, View3D *v3d, const floa
 
 	if (rv3d->is_persp) {
 		copy_v3_v3(r_ray_co, rv3d->viewinv[3]);
+	}
+	else {
+		r_ray_co[0] = 2.0f * mval[0] / ar->winx - 1.0f;
+		r_ray_co[1] = 2.0f * mval[1] / ar->winy - 1.0f;
+
+		if (rv3d->persp == RV3D_CAMOB) {
+			r_ray_co[1] = -1.0f;
+		}
+		else {
+			r_ray_co[1] = 0.0f;
+		}
+
+		mul_project_m4_v3(rv3d->persinv, r_ray_co);
+	}
 
-		start_offset = v3d->near;
-		end_offset = v3d->far;
+	if ((rv3d->is_persp == false) && (rv3d->persp != RV3D_CAMOB)) {
+		end_offset = v3d->far / 2.0f;
+		start_offset = -end_offset;
 	}
 	else {
-		const float ortho_extent = 1000.0f;
-		float vec[4];
-		vec[0] = 2.0f * mval[0] / ar->winx - 1;
-		vec[1] = 2.0f * mval[1] / ar->winy - 1;
-		vec[2] = 0.0f;
-		vec[3] = 1.0f;
-
-		mul_m4_v4(rv3d->persinv, vec);
-		copy_v3_v3(r_ray_co, vec);
-
-		start_offset = (rv3d->persp == RV3D_CAMOB) ? 0.0f : -ortho_extent;
-		end_offset   = ortho_extent;
+		ED_view3d_clip_range_get(v3d, rv3d, &start_offset, &end_offset, false);
 	}
 
 	if (r_ray_start) {




More information about the Bf-blender-cvs mailing list