[Bf-blender-cvs] [0b25d923e53] retopo_transform: use face raycast initially with face nearest as fallback
jon denning
noreply at git.blender.org
Sat Jul 16 13:00:36 CEST 2022
Commit: 0b25d923e53c896e5e121a9c7aeb5592cf6a7d67
Author: jon denning
Date: Tue Jun 7 09:31:48 2022 -0400
Branches: retopo_transform
https://developer.blender.org/rB0b25d923e53c896e5e121a9c7aeb5592cf6a7d67
use face raycast initially with face nearest as fallback
===================================================================
M source/blender/editors/include/ED_transform.h
M source/blender/editors/transform/transform.c
M source/blender/editors/transform/transform_snap.c
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h
index 24fda1042ac..82cc518f029 100644
--- a/source/blender/editors/include/ED_transform.h
+++ b/source/blender/editors/include/ED_transform.h
@@ -24,7 +24,7 @@ void transform_operatortypes(void);
/* ******************** Macros & Prototypes *********************** */
/* MODE AND NUMINPUT FLAGS */
-typedef enum eTfmMode {
+typedef enum {
TFM_INIT = -1,
TFM_DUMMY,
TFM_TRANSLATION,
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index 8e0ea82bb32..fa99da2fe1f 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1580,7 +1580,7 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
if (transformModeUseSnap(t)) {
if (!(t->modifiers & MOD_SNAP) != !(t->tsnap.flag & SCE_SNAP)) {
/* Type is #eSnapFlag, but type must match various snap attributes in #ToolSettings. */
- char *snap_flag_ptr;
+ short *snap_flag_ptr;
wmMsgParams_RNA msg_key_params = {{0}};
RNA_pointer_create(&t->scene->id, &RNA_ToolSettings, ts, &msg_key_params.ptr);
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 3649e69281d..e69e996ca71 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -368,10 +368,10 @@ eRedrawFlag handleSnapping(TransInfo *t, const wmEvent *event)
return status;
}
-static void applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td)
+static bool applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td)
{
if (!(t->tsnap.mode & SCE_SNAP_MODE_FACE_RAYCAST)) {
- return;
+ return false;
}
float iloc[3], loc[3], no[3];
@@ -388,7 +388,7 @@ static void applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td
if (ED_view3d_project_float_global(t->region, iloc, mval_fl, V3D_PROJ_TEST_NOP) !=
V3D_PROJ_RET_OK) {
- return;
+ return false;
}
eSnapMode hit = ED_transform_snap_object_project_view3d(
@@ -410,7 +410,7 @@ static void applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td
loc,
no);
if (hit != SCE_SNAP_MODE_FACE_RAYCAST) {
- return;
+ return false;
}
#if 0
@@ -440,6 +440,7 @@ static void applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td
/* TODO: support constraints for rotation too? see #ElementRotation. */
}
+ return true;
}
static void applyFaceNearest(TransInfo *t, TransDataContainer *tc, TransData *td)
@@ -532,13 +533,17 @@ void applySnappingIndividual(TransInfo *t)
if ((t->flag & T_PROP_EDIT) && (td->factor == 0.0f)) {
continue;
}
- }
- applyFaceProject(t, tc, td);
- applyFaceNearest(t, tc, td);
+ /* If both face raycast and face nearest methods are enabled, start with face raycast and
+ * fallback to face nearest raycast does not hit. */
+ bool hit = applyFaceProject(t, tc, td);
+ if (!hit) {
+ applyFaceNearest(t, tc, td);
+ }
#if 0 /* TODO: support this? */
constraintTransLim(t, td);
#endif
+ }
}
}
@@ -863,7 +868,7 @@ static void initSnappingMode(TransInfo *t)
void initSnapping(TransInfo *t, wmOperator *op)
{
ToolSettings *ts = t->settings;
- eSnapTarget snap_target = ts->snap_target;
+ eSnapSourceSelect snap_source = ts->snap_target;
resetSnapping(t);
t->tsnap.mode = snap_mode_from_spacetype(t);
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index 86045fe2cdb..3524d61a52c 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -152,7 +152,7 @@ const EnumPropertyItem rna_enum_snap_element_items[] = {
{SCE_SNAP_MODE_VERTEX, "VERTEX", ICON_SNAP_VERTEX, "Vertex", "Snap to vertices"},
{SCE_SNAP_MODE_EDGE, "EDGE", ICON_SNAP_EDGE, "Edge", "Snap to edges"},
{SCE_SNAP_MODE_FACE_RAYCAST,
- "FACE",
+ "FACE", /* TODO(@gfxcoder): replace with "FACE_RAYCAST" as "FACE" is not descriptive. */
ICON_SNAP_FACE,
"Face Project",
"Snap by projecting onto faces"},
More information about the Bf-blender-cvs
mailing list