[Bf-blender-cvs] [eb0f8317e23] master: Cleanup: ED_view3d_win_to_delta & ED_view3d_calc_zfac usage
Campbell Barton
noreply at git.blender.org
Tue Mar 1 01:18:46 CET 2022
Commit: eb0f8317e231c4a02940d0269125a96a47e94c7e
Author: Campbell Barton
Date: Tue Mar 1 10:56:28 2022 +1100
Branches: master
https://developer.blender.org/rBeb0f8317e231c4a02940d0269125a96a47e94c7e
Cleanup: ED_view3d_win_to_delta & ED_view3d_calc_zfac usage
- Rename ED_view3d_win_to_delta `mval` argument to `xy_delta` as it
as it was misleading since this is an screen-space offset not a region
relative cursor position (typical use of the name `mval`).
Also rename the variable passed to this function which also used the
term `mval` in many places.
- Re-order the output argument of ED_view3d_win_to_delta last.
use an r_ prefix for return arguments.
- Document how the `zfac` argument is intended to be used.
- Split ED_view3d_calc_zfac into two functions as the `r_flip` argument
was only used in some special cases.
===================================================================
M source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c
M source/blender/editors/gpencil/annotate_paint.c
M source/blender/editors/gpencil/gpencil_paint.c
M source/blender/editors/gpencil/gpencil_sculpt_paint.c
M source/blender/editors/gpencil/gpencil_utils.c
M source/blender/editors/include/ED_view3d.h
M source/blender/editors/mesh/editmesh_bisect.c
M source/blender/editors/physics/particle_edit.c
M source/blender/editors/sculpt_paint/paint_utils.c
M source/blender/editors/sculpt_paint/sculpt.c
M source/blender/editors/space_view3d/view3d_edit.c
M source/blender/editors/space_view3d/view3d_navigate.c
M source/blender/editors/space_view3d/view3d_navigate_ndof.c
M source/blender/editors/space_view3d/view3d_navigate_zoom.c
M source/blender/editors/space_view3d/view3d_navigate_zoom_border.c
M source/blender/editors/space_view3d/view3d_project.c
M source/blender/editors/transform/transform.c
M source/blender/editors/transform/transform_constraints.c
M source/blender/editors/transform/transform_generics.c
M source/blender/editors/transform/transform_mode_vert_slide.c
M source/blender/io/gpencil/intern/gpencil_io_base.cc
===================================================================
diff --git a/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c b/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c
index aea6d41202e..447fe1005a1 100644
--- a/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c
+++ b/source/blender/editors/gizmo_library/gizmo_types/move3d_gizmo.c
@@ -147,7 +147,7 @@ static void move3d_get_translate(const wmGizmo *gz,
float co_delta[3])
{
MoveInteraction *inter = gz->interaction_data;
- const float mval_delta[2] = {
+ const float xy_delta[2] = {
event->mval[0] - inter->init.mval[0],
event->mval[1] - inter->init.mval[1],
};
@@ -155,9 +155,9 @@ static void move3d_get_translate(const wmGizmo *gz,
RegionView3D *rv3d = region->regiondata;
float co_ref[3];
mul_v3_mat3_m4v3(co_ref, gz->matrix_space, inter->init.prop_co);
- const float zfac = ED_view3d_calc_zfac(rv3d, co_ref, NULL);
+ const float zfac = ED_view3d_calc_zfac(rv3d, co_ref);
- ED_view3d_win_to_delta(region, mval_delta, co_delta, zfac);
+ ED_view3d_win_to_delta(region, xy_delta, zfac, co_delta);
float matrix_space_inv[3][3];
copy_m3_m4(matrix_space_inv, gz->matrix_space);
diff --git a/source/blender/editors/gpencil/annotate_paint.c b/source/blender/editors/gpencil/annotate_paint.c
index b40dda146dc..5ab4a663efe 100644
--- a/source/blender/editors/gpencil/annotate_paint.c
+++ b/source/blender/editors/gpencil/annotate_paint.c
@@ -326,8 +326,7 @@ static void annotation_stroke_convertcoords(tGPsdata *p,
}
else {
float mval_prj[2];
- float rvec[3], dvec[3];
- float zfac;
+ float rvec[3];
/* Current method just converts each point in screen-coordinates to
* 3D-coordinates using the 3D-cursor as reference. In general, this
@@ -339,13 +338,14 @@ static void annotation_stroke_convertcoords(tGPsdata *p,
*/
annotation_get_3d_reference(p, rvec);
- zfac = ED_view3d_calc_zfac(p->region->regiondata, rvec, NULL);
+ const float zfac = ED_view3d_calc_zfac(p->region->regiondata, rvec);
if (ED_view3d_project_float_global(p->region, rvec, mval_prj, V3D_PROJ_TEST_NOP) ==
V3D_PROJ_RET_OK) {
- float mval_f[2];
- sub_v2_v2v2(mval_f, mval_prj, mval);
- ED_view3d_win_to_delta(p->region, mval_f, dvec, zfac);
+ float dvec[3];
+ float xy_delta[2];
+ sub_v2_v2v2(xy_delta, mval_prj, mval);
+ ED_view3d_win_to_delta(p->region, xy_delta, zfac, dvec);
sub_v3_v3v3(out, rvec, dvec);
}
else {
diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c
index 9442b2edc13..5409cea2a2a 100644
--- a/source/blender/editors/gpencil/gpencil_paint.c
+++ b/source/blender/editors/gpencil/gpencil_paint.c
@@ -447,21 +447,21 @@ static void gpencil_stroke_convertcoords(tGPsdata *p,
}
float mval_prj[2];
- float rvec[3], dvec[3];
- float mval_f[2];
- float zfac;
+ float rvec[3];
/* Current method just converts each point in screen-coordinates to
* 3D-coordinates using the 3D-cursor as reference. In general, this
* works OK, but it could of course be improved. */
gpencil_get_3d_reference(p, rvec);
- zfac = ED_view3d_calc_zfac(p->region->regiondata, rvec, NULL);
+ const float zfac = ED_view3d_calc_zfac(p->region->regiondata, rvec);
if (ED_view3d_project_float_global(p->region, rvec, mval_prj, V3D_PROJ_TEST_NOP) ==
V3D_PROJ_RET_OK) {
- sub_v2_v2v2(mval_f, mval_prj, mval);
- ED_view3d_win_to_delta(p->region, mval_f, dvec, zfac);
+ float dvec[3];
+ float xy_delta[2];
+ sub_v2_v2v2(xy_delta, mval_prj, mval);
+ ED_view3d_win_to_delta(p->region, xy_delta, zfac, dvec);
sub_v3_v3v3(out, rvec, dvec);
}
else {
diff --git a/source/blender/editors/gpencil/gpencil_sculpt_paint.c b/source/blender/editors/gpencil/gpencil_sculpt_paint.c
index ebe879959c9..67325e8a3d1 100644
--- a/source/blender/editors/gpencil/gpencil_sculpt_paint.c
+++ b/source/blender/editors/gpencil/gpencil_sculpt_paint.c
@@ -507,7 +507,7 @@ static void gpencil_brush_grab_calc_dvec(tGP_BrushEditData *gso)
/* Convert mouse-movements to movement vector */
RegionView3D *rv3d = gso->region->regiondata;
float *rvec = gso->object->loc;
- float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL);
+ const float zfac = ED_view3d_calc_zfac(rv3d, rvec);
float mval_f[2];
@@ -525,7 +525,7 @@ static void gpencil_brush_grab_calc_dvec(tGP_BrushEditData *gso)
copy_v2_v2(mval_f, r);
}
- ED_view3d_win_to_delta(gso->region, mval_f, gso->dvec, zfac);
+ ED_view3d_win_to_delta(gso->region, mval_f, zfac, gso->dvec);
}
/* Apply grab transform to all relevant points of the affected strokes */
@@ -624,17 +624,16 @@ static void gpencil_brush_calc_midpoint(tGP_BrushEditData *gso)
*/
RegionView3D *rv3d = gso->region->regiondata;
const float *rvec = gso->object->loc;
- float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL);
+ const float zfac = ED_view3d_calc_zfac(rv3d, rvec);
- float mval_f[2];
- copy_v2_v2(mval_f, gso->mval);
float mval_prj[2];
- float dvec[3];
if (ED_view3d_project_float_global(gso->region, rvec, mval_prj, V3D_PROJ_TEST_NOP) ==
V3D_PROJ_RET_OK) {
- sub_v2_v2v2(mval_f, mval_prj, mval_f);
- ED_view3d_win_to_delta(gso->region, mval_f, dvec, zfac);
+ float dvec[3];
+ float xy_delta[2];
+ sub_v2_v2v2(xy_delta, mval_prj, gso->mval);
+ ED_view3d_win_to_delta(gso->region, xy_delta, zfac, dvec);
sub_v3_v3v3(gso->dvec, rvec, dvec);
}
else {
@@ -830,10 +829,10 @@ static bool gpencil_brush_randomize_apply(tGP_BrushEditData *gso,
/* 3D: Project to 3D space */
bool flip;
RegionView3D *rv3d = gso->region->regiondata;
- float zfac = ED_view3d_calc_zfac(rv3d, &pt->x, &flip);
+ const float zfac = ED_view3d_calc_zfac_ex(rv3d, &pt->x, &flip);
if (flip == false) {
float dvec[3];
- ED_view3d_win_to_delta(gso->gsc.region, svec, dvec, zfac);
+ ED_view3d_win_to_delta(gso->gsc.region, svec, zfac, dvec);
add_v3_v3(&pt->x, dvec);
/* compute lock axis */
gpencil_sculpt_compute_lock_axis(gso, pt, save_pt);
diff --git a/source/blender/editors/gpencil/gpencil_utils.c b/source/blender/editors/gpencil/gpencil_utils.c
index c0777ac3105..9a658b68f21 100644
--- a/source/blender/editors/gpencil/gpencil_utils.c
+++ b/source/blender/editors/gpencil/gpencil_utils.c
@@ -822,17 +822,16 @@ bool gpencil_point_xy_to_3d(const GP_SpaceConversion *gsc,
ED_gpencil_drawing_reference_get(scene, gsc->ob, scene->toolsettings->gpencil_v3d_align, rvec);
- float zfac = ED_view3d_calc_zfac(rv3d, rvec, NULL);
+ float zfac = ED_view3d_calc_zfac(rv3d, rvec);
- float mval_f[2], mval_prj[2];
- float dvec[3];
-
- copy_v2_v2(mval_f, screen_co);
+ float mval_prj[2];
if (ED_view3d_project_float_global(gsc->region, rvec, mval_prj, V3D_PROJ_TEST_NOP) ==
V3D_PROJ_RET_OK) {
- sub_v2_v2v2(mval_f, mval_prj, mval_f);
- ED_view3d_win_to_delta(gsc->region, mval_f, dvec, zfac);
+ float dvec[3];
+ float xy_delta[2];
+ sub_v2_v2v2(xy_delta, mval_prj, screen_co);
+ ED_view3d_win_to_delta(gsc->region, xy_delta, zfac, dvec);
sub_v3_v3v3(r_out, rvec, dvec);
return true;
@@ -863,21 +862,21 @@ void gpencil_stroke_convertcoords_tpoint(Scene *scene,
*/
}
else {
- float mval_f[2] = {UNPACK2(point2D->m_xy)};
float mval_prj[2];
- float rvec[3], dvec[3];
- float zfac;
+ float rvec[3];
/* Current method just converts each point in screen-coordinates to
* 3D-coordinates using the 3D-cursor as reference.
*/
ED_gpencil_drawing_reference_get(scene, ob, ts->gpencil_v3d_align, rvec);
- zfac = ED_view3d_calc_zfac(region->regiondata, rvec, NULL);
+ const float zfac = ED_view3d_calc_zfac(region->regiondata, rvec);
if (ED_view3d_project_float_global(region, rvec, mval_prj, V3D_PROJ_TEST_NOP) ==
V3D_PROJ_RET_OK) {
- sub_v2_v2v2(mval_f, mval_prj, mval_f);
- ED_view3d_win_to_delta(region, mval_f, dvec, zfac);
+ float dvec[3];
+ float xy_delta[2];
+ sub_v2_v2v2(xy_delta, mval_prj, point2D->m_xy);
+ ED_view3d_win_to_delta(region, xy_delta, zfac, dvec);
sub_v3_v3v3(r_out, rvec, dvec);
}
else {
@@ -2005,19 +2004,19 @@ static void gpencil_stroke_convertcoords(ARegion *region,
const float origin[3],
float out[3])
{
- float mval_f[2] = {UNPACK2(point2D->m_xy)};
float mval_prj[2];
- float rvec[3], dvec[3];
- float zfac;
+ float rvec[3];
copy_v3_v3(rvec, origin);
- zfac = ED_view3d_calc_zfac(region->regiondata, rvec, NULL);
+ const float zfac = ED_view3d_calc_zfac(region->regiondata, rvec);
if (ED_view3d_project_float_global(region, rvec, mval_prj, V3D_PROJ_TEST_NOP) ==
V3D_PROJ_RET_OK) {
- sub_v2_v2v2(mval_f, mval_prj, mval_f);
- ED_view3d_win_to_delta(region, mval_f, dvec, zfac);
+ float dvec[3];
+ float xy_delta[2];
+ sub_v2_v2v2(xy_delta, mval_prj, point2D->m_xy);
+ ED_view3d_win_to_delta(region, xy_delta, zfac, dvec);
sub_v3_v3v3(out, rvec, dvec);
}
else {
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 18b63403fcb..b1435e76eb2 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -507,9 +507,18 @@ float ED_view3d_pixel_size(const struct RegionView3D *rv3d, const float co[3]);
float ED_view3d_pixel_size_no_ui_scale(const struct RegionView3D *rv3d, const float co[3]);
/**
- * Calculate a depth value from \a co, use with #ED_view3d_win_to_delta
+ * Calculate a depth value from \a co, use with #ED_view3d_win_to_delta.
+ *
+ * \param r_flip: Set to `zfac < 0.0` before the value is made signed.
+ * Since it's important in some cases to know if the value was flipped.
+ *
+ * \return The unsigned depth component of `co` multiplied by `rv3d->persmat` matrix,
+ * with additional sanitation to ensure the result is never negative
+ * as this is
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list