Commit: b818008ddf0a4dcbf9b0f993c21504a30fbf54c0 Author: jon denning Date: Tue Jun 7 11:12:28 2022 -0400 Branches: retopo_transform https://developer.blender.org/rBb818008ddf0a4dcbf9b0f993c21504a30fbf54c0
addressed reviewer comments, updated versioning (untested) =================================================================== M release/scripts/startup/bl_ui/space_view3d.py M source/blender/blenloader/intern/versioning_300.c M source/blender/editors/transform/transform_ops.c M source/blender/editors/transform/transform_snap.c M source/blender/editors/transform/transform_snap_object.cc M source/blender/makesdna/DNA_scene_defaults.h M source/blender/makesdna/DNA_scene_types.h M source/blender/makesrna/intern/rna_scene.c =================================================================== diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index d1aeeb80b94..e0e38f6e765 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -6780,15 +6780,15 @@ class VIEW3D_PT_snapping(Panel): if obj: col.label(text="Target Selection") - targetselection = col.column(align=True) + col_targetsel = col.column(align=True) if object_mode == 'EDIT' and obj.type not in {'LATTICE', 'META', 'FONT'}: # active_use_self = True # active_use_self &= not (tool_settings.use_proportional_edit and obj.type == 'MESH') # active_use_self &= tool_settings.use_snap_edit - targetselection.prop(tool_settings, "use_snap_self", text="Include Active", icon='EDITMODE_HLT') - targetselection.prop(tool_settings, "use_snap_edit", text="Include Edited", icon='OUTLINER_DATA_MESH') - targetselection.prop(tool_settings, "use_snap_nonedit", text="Include Non-edited", icon='OUTLINER_OB_MESH') - targetselection.prop(tool_settings, "use_snap_selectable", text="Exclude Non-Selectable", icon='RESTRICT_SELECT_OFF') + col_targetsel.prop(tool_settings, "use_snap_self", text="Include Active", icon='EDITMODE_HLT') + col_targetsel.prop(tool_settings, "use_snap_edit", text="Include Edited", icon='OUTLINER_DATA_MESH') + col_targetsel.prop(tool_settings, "use_snap_nonedit", text="Include Non-edited", icon='OUTLINER_OB_MESH') + col_targetsel.prop(tool_settings, "use_snap_selectable", text="Exclude Non-Selectable", icon='RESTRICT_SELECT_OFF') if object_mode in {'OBJECT', 'POSE', 'EDIT', 'WEIGHT_PAINT'}: col.prop(tool_settings, "use_snap_align_rotation") diff --git a/source/blender/blenloader/intern/versioning_300.c b/source/blender/blenloader/intern/versioning_300.c index 76d12cc1109..29ff7d7a0ae 100644 --- a/source/blender/blenloader/intern/versioning_300.c +++ b/source/blender/blenloader/intern/versioning_300.c @@ -3066,5 +3066,13 @@ void blo_do_versions_300(FileData *fd, Library *UNUSED(lib), Main *bmain) SEQ_for_each_callback(&ed->seqbase, version_merge_still_offsets, NULL); } } + + LISTBASE_FOREACH (Scene *, scene, &bmain->scenes) { + ToolSettings *tool_settings = scene->toolsettings; + /* Minimum of snap steps for face nearest is 1. */ + tool_settings->snap_face_nearest_steps = 1; + /* Set snap to edited and nonedited as default. */ + tool_settings->snap_flag |= SCE_SNAP_TO_INCLUDE_EDITED | SCE_SNAP_TO_INCLUDE_NONEDITED; + } } } diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 1098e8cb90c..73404811992 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -663,10 +663,10 @@ void Transform_Properties(struct wmOperatorType *ot, int flags) RNA_def_boolean(ot->srna, "use_snap_project", false, "Project Individual Elements", ""); if (flags & P_GEO_SNAP) { - /* TODO(@gfxcoder): Rename `snap_target` to `snap_source` to avoid - * previous ambiguity of "target" (now, "source" is geometry to be moved and "target" is - * geometry to which moved geometry is snapped). Use "Source snap point" and "Point on - * source that will snap to target" for name and description, respectively. */ + /* TODO(@gfxcoder): Rename `snap_target` to `snap_source` to avoid previous ambiguity of + * "target" (now, "source" is geometry to be moved and "target" is geometry to which moved + * geometry is snapped). Use "Source snap point" and "Point on source that will snap to + * target" for name and description, respectively. */ prop = RNA_def_enum(ot->srna, "snap_target", rna_enum_snap_source_items, 0, "Target", ""); // RNA_def_property_flag(prop, PROP_HIDDEN); prop = RNA_def_float_vector( diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index 507295fee18..2e3611b5182 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -413,12 +413,6 @@ static bool applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td return false; } -#if 0 - if (tc->use_local_mat) { - mul_m4_v3(tc->imat, loc); - } -#endif - float tvec[3]; sub_v3_v3v3(tvec, loc, iloc); @@ -431,7 +425,7 @@ static bool applyFaceProject(TransInfo *t, TransDataContainer *tc, TransData *td const float *original_normal; float mat[3][3]; - /* In pose mode, we want to align normals with Y axis of bones... */ + /* In pose mode, we want to align normals with Y axis of bones. */ original_normal = td->axismtx[2]; rotation_between_vecs_to_mat3(mat, original_normal, no); @@ -489,31 +483,12 @@ static void applyFaceNearest(TransInfo *t, TransDataContainer *tc, TransData *td return; } -#if 0 - if (tc->use_local_mat) { - mul_m4_v3(tc->imat, loc); - } -#endif - float tvec[3]; sub_v3_v3v3(tvec, snap_loc, prev_loc); mul_m3_v3(td->smtx, tvec); add_v3_v3(td->loc, tvec); - if (t->tsnap.align && (t->options & CTX_OBJECT)) { - /* handle alignment as well */ - const float *init_no; - float mat[3][3]; - - /* In pose mode, we want to align normals with Y axis of bones... */ - init_no = td->axismtx[2]; - - rotation_between_vecs_to_mat3(mat, init_no, snap_no); - - transform_data_ext_rotate(td, mat, true); - - /* TODO: support constraints for rotation too? see #ElementRotation. */ - } + /* TODO: support snap alignment similar to #SCE_SNAP_MODE_FACE_RAYCAST? */ } void applySnappingIndividual(TransInfo *t) @@ -759,10 +734,10 @@ static eSnapTargetSelect snap_select_target_get(TransInfo *t) eSnapTargetSelect ret = SCE_SNAP_TARGET_ALL; - bool snapto_self = !(t->tsnap.target_select & SCE_SNAP_TARGET_NOT_ACTIVE); - bool snapto_edit = !(t->tsnap.target_select & SCE_SNAP_TARGET_NOT_EDITED); - bool snapto_nonedit = !(t->tsnap.target_select & SCE_SNAP_TARGET_NOT_NONEDITED); - bool snapto_only_selectable = (t->tsnap.target_select & SCE_SNAP_TARGET_ONLY_SELECTABLE); + bool use_snap_active = !(t->tsnap.target_select & SCE_SNAP_TARGET_NOT_ACTIVE); + bool use_snap_edit = !(t->tsnap.target_select & SCE_SNAP_TARGET_NOT_EDITED); + bool use_snap_nonedit = !(t->tsnap.target_select & SCE_SNAP_TARGET_NOT_NONEDITED); + bool use_snap_selectable_only = (t->tsnap.target_select & SCE_SNAP_TARGET_ONLY_SELECTABLE); if (ELEM(t->spacetype, SPACE_VIEW3D, SPACE_IMAGE) && !(t->options & CTX_CAMERA)) { if (base_act && (base_act->object->mode & OB_MODE_PARTICLE_EDIT)) { @@ -770,7 +745,7 @@ static eSnapTargetSelect snap_select_target_get(TransInfo *t) return ret; } - if (snapto_only_selectable) { + if (use_snap_selectable_only) { ret |= SCE_SNAP_TARGET_ONLY_SELECTABLE; } @@ -792,13 +767,13 @@ static eSnapTargetSelect snap_select_target_get(TransInfo *t) /* Exclude editmesh when using proportional edit */ ret |= SCE_SNAP_TARGET_NOT_EDITED; } - if (!snapto_self) { + if (!use_snap_active) { ret |= SCE_SNAP_TARGET_NOT_ACTIVE; } - if (!snapto_edit) { + if (!use_snap_edit) { ret |= SCE_SNAP_TARGET_NOT_EDITED; } - if (!snapto_nonedit) { + if (!use_snap_nonedit) { ret |= SCE_SNAP_TARGET_NOT_NONEDITED; } } @@ -888,11 +863,11 @@ void initSnapping(TransInfo *t, wmOperator *op) t->tsnap.mode = RNA_property_enum_get(op->ptr, prop); } + /* TODO(@gfxcoder): Rename `snap_target` to `snap_source` to avoid previous ambiguity of + * "target" (now, "source" is geometry to be moved and "target" is geometry to which moved + * geometry is snapped). */ if ((prop = RNA_struct_find_property(op->ptr, "snap_target")) && RNA_property_is_set(op->ptr, prop)) { - /* TODO(@gfxcoder): Rename `snap_target` to `snap_source` to avoid - * previous ambiguity of "target" (now, "source" is geometry to be moved and "target" is - * geometry to which moved geometry is snapped). */ snap_source = RNA_property_enum_get(op->ptr, prop); } @@ -955,7 +930,7 @@ void initSnapping(TransInfo *t, wmOperator *op) t->tsnap.align = ((t->tsnap.flag & SCE_SNAP_ROTATE) != 0); t->tsnap.project = ((t->tsnap.flag & SCE_SNAP_PROJECT) != 0); SET_FLAG_FROM_TEST(t->tsnap.target_select, - (t->settings->snap_flag & SCE_SNAP_NO_SELF), + (t->settings->snap_flag & SCE_SNAP_NOT_TO_ACTIVE), SCE_SNAP_TARGET_NOT_ACTIVE); SET_FLAG_FROM_TEST(t->tsnap.target_select, !(t->settings->snap_flag & SCE_SNAP_TO_INCLUDE_EDITED), @@ -1517,7 +1492,7 @@ bool peelObjectsTransform(TransInfo *t, .edit_mode_type = (t->flag & T_EDIT) != 0 ? SNAP_GEOM_EDIT : SNAP_GEOM_FINAL, }, mval, - FLT_MAX, + -1.0f, false, &depths_peel); diff --git a/source/blender/editors/transform/transform_snap_object.cc b/source/blender/editors/transform/transform_snap_object.cc index 468cda98287..5ec23bd318f 100644 --- a/source/blender/editors/transform/transform_snap_object.cc +++ b/source/blender/editors/transform/transform_snap_object.cc @@ -1247,7 +1247,7 @@ static bool nearest_world_tree(SnapObjectContext *UNUSED(sctx), int *r_index) { if (curr_co == nullptr || init_co == nullptr) { - // TODO(jon): how to handle this case? + /* No location to work with, so just return. */ return false; } @@ -1456,7 +1456,7 @@ static void nearest_world_object_fn(SnapObjectContext *sctx, /** * Main Nearest World Surface Function - * ====================== + * =================================== * * Walks through all o @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org List details, subscription details or unsubscribe: https://lists.blender.org/mailman/listinfo/bf-blender-cvs