Blender Git Loki
Git Commits -> Revision 69991b8
Revision 69991b8 by Germano Cavalcante (transform-snap-base) November 18, 2021, 17:46 (GMT) |
Transform: interactive mode for setting a 'Snap Source' This patch implements part of what was stated in {T66484}, with respect to `Base Point`. ## Introduction The snapping feature of the transform tools has a variety of applications: - Organization of nodes. - Positioning of frames in precise time units. - Retopology with snap to face - Creation of armatures with bone positioning through the snap to volume - Precise positioning of 3D or 2D objects in the surrounding geometry (CAD modeling) The goal of this document is to make it more powerful for precision modeling and still supporting the old use cases without extra complexity. The main topic addressed here is the introduction of a **interactive mode for setting a snap source** (See terminology). ## Terminology * **Snap Source**: 3d coordinate * we want to snap from. (Currently defined by the `Snap With` options: `Closest`, `Center`, `Median` and `Active`). * **Snap Target**: 3d coordinate* we want to snap to. (Vertices, Edges, Faces, Grid...) ## Interactive Mode for Editing a Snap Source Currently the fixed snap point can only be obtained through the `Snap With` options. So it's a little tricky for the user to define a snap source point having so much geometry on an object. Because of this, the user needs to resort to impractical solutions to get a point in the geometry. See example of an impractical use: {F11714181, layout=left, width=960, alt="The user used the cursor (which can be snapped) to choose the snap origin point."} The user used the cursor (which can be snapped) to choose the snap source point. While it is possible to work around this current limitation, it is important to reduce the number of steps and allow the user to set a snap source point through an optional interactive mode during a transformation. The proposed solution is to be able to move the current snap source point through a modal modifier activated with a key (eg. B). The snap source point can thus "snap" to the elements in the scene (vertex, mid-edge, Lamp, ?) during this mode. {F9122814, layout=left, width=960, alt="Base Point Snap, example of transform operation via the shortcut (not the tool). After pressing g and the snap base change shortcut (e.g., shift + ctrl) the user set the base point. The base point is then visible until the end of the operation. The z axis constrains the final position."} ## Implementation Details - The feature will only be available in 3D View. - The feature will only be available for `Move`, `Rotate` and `Scale` transform modes. - The snap source editing will be enabled with a single click on the modifier key (B). - Having a snap point indicated, the new snap origin point will be confirmed with the same buttons that confirms the transformation (but the transformation will not be concluded). - The snap source editing can be canceled with the same key that activated it (B). - If the transformation is done with "release_confirm" (common for gizmos), the new feature cannot be enabled. - During the transformation, when enabling the feature, if the snap option is turned off in the scene, the snap will be forced on throughout the rest of the transformation (unless interactive mode is canceled). - During a transformation, if no snap target is set for an element in the scene (Vertex, Grid...), the snap targets to geometry Vertex, Edge, Face, Center of Edge and Perpendicular of Edge will be set automatically. - Snap cannot be turned off during the snap source editing. - Constraint or similar modification features will not be available during the snap source editing. - Text input will not be available during the snap source editing. - When adding multiple snap points (A) the new prone snap source point will be indicated with an "X" drawing. {F11817267} Maniphest Tasks: T66484 Differential Revision: https://developer.blender.org/D9415 |
Commit Details:
Full Hash: 69991b82f29dd3d72577e91539085638c4a776d1
Parent Commit: f190f2d
Lines Changed: +278, -35
8 Modified Paths:
/release/scripts/presets/keyconfig/keymap_data/blender_default.py (+1, -0) (Diff)
/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py (+1, -0) (Diff)
/source/blender/editors/transform/transform.c (+53, -6) (Diff)
/source/blender/editors/transform/transform.h (+6, -1) (Diff)
/source/blender/editors/transform/transform_input.c (+15, -0) (Diff)
/source/blender/editors/transform/transform_snap.c (+168, -22) (Diff)
/source/blender/editors/transform/transform_snap.h (+4, -0) (Diff)
/source/blender/editors/transform/transform_snap_object.c (+30, -6) (Diff)
/release/scripts/presets/keyconfig/keymap_data/industry_compatible_data.py (+1, -0) (Diff)
/source/blender/editors/transform/transform.c (+53, -6) (Diff)
/source/blender/editors/transform/transform.h (+6, -1) (Diff)
/source/blender/editors/transform/transform_input.c (+15, -0) (Diff)
/source/blender/editors/transform/transform_snap.c (+168, -22) (Diff)
/source/blender/editors/transform/transform_snap.h (+4, -0) (Diff)
/source/blender/editors/transform/transform_snap_object.c (+30, -6) (Diff)