Cleanup: rename 3D view ray calculation functions
authorCampbell Barton <ideasman42@gmail.com>
Thu, 20 Sep 2018 01:47:17 +0000 (11:47 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 20 Sep 2018 01:47:17 +0000 (11:47 +1000)
Using near far and optionally clipping planes is
involved and not needed in many cases.

Rename so a simpler version of this function can be added.

source/blender/editors/armature/editarmature_sketch.c
source/blender/editors/curve/editcurve_paint.c
source/blender/editors/include/ED_view3d.h
source/blender/editors/mesh/editmesh_knife.c
source/blender/editors/mesh/editmesh_utils.c
source/blender/editors/physics/particle_edit.c
source/blender/editors/sculpt_paint/sculpt.c
source/blender/editors/space_view3d/view3d_project.c
source/blender/editors/transform/transform_snap_object.c

index dd8006133823e3a537894f339f178d25fc3b7021..f789cd0e80a146080d54a6591bc37b8abf2a3048 100644 (file)
@@ -905,7 +905,7 @@ static void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end,
                float pval[2] = {0, 0};
 
                ED_view3d_project_float_global(ar, stk->points[i].p, pval, V3D_PROJ_TEST_NOP);
-               ED_view3d_win_to_ray(ar, v3d, pval, ray_start, ray_normal, false);
+               ED_view3d_win_to_ray_clipped(ar, v3d, pval, ray_start, ray_normal, false);
 
                mul_v3_fl(ray_normal, distance * progress / length);
                add_v3_v3(stk->points[i].p, ray_normal);
@@ -1502,7 +1502,7 @@ static int sk_getIntersections(bContext *C, ListBase *list, SK_Sketch *sketch, S
 
                                        mval[0] = vi[0];
                                        mval[1] = vi[1];
-                                       ED_view3d_win_to_segment(ar, v3d, mval, ray_start, ray_end, true);
+                                       ED_view3d_win_to_segment_clipped(ar, v3d, mval, ray_start, ray_end, true);
 
                                        isect_line_line_v3(stk->points[s_i].p,
                                                           stk->points[s_i + 1].p,
index 325c39d7f3873a65b0e41355aa41b043636b3d08..b4880e628dfa0a1364b526fdaa701d6d45a4bc2b 100644 (file)
@@ -196,7 +196,7 @@ static bool stroke_elem_project(
        if (cdd->project.use_plane) {
                /* get the view vector to 'location' */
                float ray_origin[3], ray_direction[3];
-               ED_view3d_win_to_ray(cdd->vc.ar, v3d, mval_fl, ray_origin, ray_direction, false);
+               ED_view3d_win_to_ray_clipped(cdd->vc.ar, v3d, mval_fl, ray_origin, ray_direction, false);
 
                float lambda;
                if (isect_ray_plane_v3(ray_origin, ray_direction, cdd->project.plane, &lambda, true)) {
index 781fd8eaac016de6d65b41cf041335ac97e62ac1..96047b306941f4f511dac72345ecb871544e7975 100644 (file)
@@ -221,10 +221,10 @@ float ED_view3d_pixel_size_no_ui_scale(const struct RegionView3D *rv3d, const fl
 
 float ED_view3d_calc_zfac(const struct RegionView3D *rv3d, const float co[3], bool *r_flip);
 bool ED_view3d_clip_segment(const struct RegionView3D *rv3d, float ray_start[3], float ray_end[3]);
-bool ED_view3d_win_to_ray(
+bool ED_view3d_win_to_ray_clipped(
         const struct ARegion *ar, const struct View3D *v3d, const float mval[2],
         float ray_start[3], float ray_normal[3], const bool do_clip);
-bool ED_view3d_win_to_ray_ex(
+bool ED_view3d_win_to_ray_clipped_ex(
         const struct ARegion *ar, const struct View3D *v3d, const float mval[2],
         float r_ray_co[3], float r_ray_normal[3], float r_ray_start[3], bool do_clip);
 void ED_view3d_global_to_vector(const struct RegionView3D *rv3d, const float coord[3], float vec[3]);
@@ -247,8 +247,9 @@ bool ED_view3d_win_to_3d_on_plane_int(
 void ED_view3d_win_to_delta(const struct ARegion *ar, const float mval[2], float out[3], const float zfac);
 void ED_view3d_win_to_origin(const struct ARegion *ar, const float mval[2], float out[3]);
 void ED_view3d_win_to_vector(const struct ARegion *ar, const float mval[2], float out[3]);
-bool ED_view3d_win_to_segment(const struct ARegion *ar, struct View3D *v3d, const float mval[2],
-                              float r_ray_start[3], float r_ray_end[3], const bool do_clip);
+bool ED_view3d_win_to_segment_clipped(
+        const struct ARegion *ar, struct View3D *v3d, const float mval[2],
+        float r_ray_start[3], float r_ray_end[3], const bool do_clip);
 void ED_view3d_ob_project_mat_get(const struct RegionView3D *v3d, struct Object *ob, float pmat[4][4]);
 void ED_view3d_ob_project_mat_get_from_obmat(const struct RegionView3D *rv3d, float obmat[4][4], float pmat[4][4]);
 void ED_view3d_unproject(struct bglMats *mats, float out[3], const float x, const float y, const float z);
index f83bc7d7d3421e2f35f3ad169a768dec12261a00..2fa39a7462b40c27316dec6afe53768b4920bf2f 100644 (file)
@@ -1542,8 +1542,8 @@ static void knife_find_line_hits(KnifeTool_OpData *kcd)
        }
 
        /* unproject screen line */
-       ED_view3d_win_to_segment(kcd->ar, kcd->vc.v3d, s1, v1, v3, true);
-       ED_view3d_win_to_segment(kcd->ar, kcd->vc.v3d, s2, v2, v4, true);
+       ED_view3d_win_to_segment_clipped(kcd->ar, kcd->vc.v3d, s1, v1, v3, true);
+       ED_view3d_win_to_segment_clipped(kcd->ar, kcd->vc.v3d, s2, v2, v4, true);
 
        mul_m4_v3(kcd->ob->imat, v1);
        mul_m4_v3(kcd->ob->imat, v2);
@@ -1551,7 +1551,7 @@ static void knife_find_line_hits(KnifeTool_OpData *kcd)
        mul_m4_v3(kcd->ob->imat, v4);
 
        /* numeric error, 'v1' -> 'v2', 'v2' -> 'v4' can end up being ~2000 units apart in otho mode
-        * (from ED_view3d_win_to_segment_clip() above)
+        * (from ED_view3d_win_to_segment_clipped() above)
         * this gives precision error; rather then solving properly
         * (which may involve using doubles everywhere!),
         * limit the distance between these points */
index 7a344be8e5a1a95163b3bbbc0eafd8f6fbef466e..f13209665164f8f5d2e22a45c3211b707817a91d 100644 (file)
@@ -1499,7 +1499,7 @@ bool BMBVH_EdgeVisible(struct BMBVHTree *tree, BMEdge *e, ARegion *ar, View3D *v
                ar->winy / 2.0f,
        };
 
-       ED_view3d_win_to_segment(ar, v3d, mval_f, origin, end, false);
+       ED_view3d_win_to_segment_clipped(ar, v3d, mval_f, origin, end, false);
 
        invert_m4_m4(invmat, obedit->obmat);
        mul_m4_v3(invmat, origin);
index a03892a26d1401c8f08b1164b90995f886ed0736..99bdeb3d4b5d9b24e04ea9acd80815fbce9f3297 100644 (file)
@@ -3522,7 +3522,7 @@ static int brush_add(PEData *data, short number)
 
                mco[0] = data->mval[0] + dmx;
                mco[1] = data->mval[1] + dmy;
-               ED_view3d_win_to_segment(data->vc.ar, data->vc.v3d, mco, co1, co2, true);
+               ED_view3d_win_to_segment_clipped(data->vc.ar, data->vc.v3d, mco, co1, co2, true);
 
                mul_m4_v3(imat, co1);
                mul_m4_v3(imat, co2);
index 74baa267b692e3f50a2e6b5b2de77127a13a7691..3895b8ed44be577033c96dbf18391630a5c50cc2 100644 (file)
@@ -4688,7 +4688,7 @@ static float sculpt_raycast_init(
        RegionView3D *rv3d = vc->ar->regiondata;
 
        /* TODO: what if the segment is totally clipped? (return == 0) */
-       ED_view3d_win_to_segment(vc->ar, vc->v3d, mouse, ray_start, ray_end, true);
+       ED_view3d_win_to_segment_clipped(vc->ar, vc->v3d, mouse, ray_start, ray_end, true);
 
        invert_m4_m4(obimat, ob->obmat);
        mul_m4_v3(obimat, ray_start);
index d5b6c60563f28cb75d21d861ef8f8f2561087736..63057e01f20a75ecec08943ba7763cd09e93be34 100644 (file)
@@ -367,19 +367,19 @@ bool ED_view3d_clip_segment(const RegionView3D *rv3d, float ray_start[3], float
  * \param r_ray_co The world-space point where the ray intersects the window plane.
  * \param r_ray_normal The normalized world-space direction of towards mval.
  * \param r_ray_start The world-space starting point of the ray.
- * \param do_clip Optionally clip the start of the ray by the view clipping planes.
+ * \param do_clip_planes Optionally clip the start of the ray by the view clipping planes.
  * \return success, false if the ray is totally clipped.
  */
-bool ED_view3d_win_to_ray_ex(
+bool ED_view3d_win_to_ray_clipped_ex(
         const ARegion *ar, const View3D *v3d, const float mval[2],
-        float r_ray_co[3], float r_ray_normal[3], float r_ray_start[3], bool do_clip)
+        float r_ray_co[3], float r_ray_normal[3], float r_ray_start[3], bool do_clip_planes)
 {
        float ray_end[3];
 
        view3d_win_to_ray_segment(ar, v3d, mval, r_ray_co, r_ray_normal, r_ray_start, ray_end);
 
        /* bounds clipping */
-       if (do_clip) {
+       if (do_clip_planes) {
                return ED_view3d_clip_segment(ar->regiondata, r_ray_start, ray_end);
        }
 
@@ -396,14 +396,14 @@ bool ED_view3d_win_to_ray_ex(
  * \param mval The area relative 2d location (such as event->mval, converted into float[2]).
  * \param r_ray_start The world-space point where the ray intersects the window plane.
  * \param r_ray_normal The normalized world-space direction of towards mval.
- * \param do_clip Optionally clip the start of the ray by the view clipping planes.
+ * \param do_clip_planes Optionally clip the start of the ray by the view clipping planes.
  * \return success, false if the ray is totally clipped.
  */
-bool ED_view3d_win_to_ray(
+bool ED_view3d_win_to_ray_clipped(
         const ARegion *ar, const View3D *v3d, const float mval[2],
-        float r_ray_start[3], float r_ray_normal[3], const bool do_clip)
+        float r_ray_start[3], float r_ray_normal[3], const bool do_clip_planes)
 {
-       return ED_view3d_win_to_ray_ex(ar, v3d, mval, NULL, r_ray_normal, r_ray_start, do_clip);
+       return ED_view3d_win_to_ray_clipped_ex(ar, v3d, mval, NULL, r_ray_normal, r_ray_start, do_clip_planes);
 }
 
 /**
@@ -655,16 +655,17 @@ void ED_view3d_win_to_vector(const ARegion *ar, const float mval[2], float out[3
  * \param mval The area relative 2d location (such as event->mval, converted into float[2]).
  * \param r_ray_start The world-space starting point of the segment.
  * \param r_ray_end The world-space end point of the segment.
- * \param do_clip Optionally clip the ray by the view clipping planes.
+ * \param do_clip_planes Optionally clip the ray by the view clipping planes.
  * \return success, false if the segment is totally clipped.
  */
-bool ED_view3d_win_to_segment(const ARegion *ar, View3D *v3d, const float mval[2],
-                              float r_ray_start[3], float r_ray_end[3], const bool do_clip)
+bool ED_view3d_win_to_segment_clipped(
+        const ARegion *ar, View3D *v3d, const float mval[2],
+        float r_ray_start[3], float r_ray_end[3], const bool do_clip_planes)
 {
        view3d_win_to_ray_segment(ar, v3d, mval, NULL, NULL, r_ray_start, r_ray_end);
 
        /* bounds clipping */
-       if (do_clip) {
+       if (do_clip_planes) {
                return ED_view3d_clip_segment((RegionView3D *)ar->regiondata, r_ray_start, r_ray_end);
        }
 
index f9c628877c1a25c636d78f53988c3df9ca0f8c79..1c6ad1fe752da0acf0f7444c13c49e65b5bb2da3 100644 (file)
@@ -2425,7 +2425,7 @@ bool ED_transform_snap_object_project_all_view3d_ex(
 {
        float ray_start[3], ray_normal[3];
 
-       if (!ED_view3d_win_to_ray_ex(
+       if (!ED_view3d_win_to_ray_clipped_ex(
                sctx->v3d_data.ar, sctx->v3d_data.v3d,
                mval, NULL, ray_normal, ray_start, true))
        {