- Volume embed is available as a transform snap option (need new icon). Not as "continuous" as stroke embed, will have to be fixed somehow.
- Transform snaps work in armature edit mode (only snap to mesh, not other armatures, for now). Adding to other edit data type should be easy.
- Strokes can use all the transform snap options plus volume embed.
Bug fix: added small threshold to face snap (and volume embed) to prevent slipping in cracks between faces. More tweaking needed but this now takes care of all the worst cases.
Tighten test for excluding objects as snap target.
Now exclude all object that are themselves moving (that includes childs of selected objects) as well as objects with moving geometry (like hooked meshes).
The previous situation would cause unfrequent bugs, but especially present in alignment cases (those concerned will understand).
Snap to edges and vertice without have to go through faces.
This means you can import floor plans and use the edges as snapping guides and other sort of fun things.
The bounding box test still needs padding though.
Snap to cage only in edit mode (respect the edit cage flag of modifiers).
Especially important for subsurf, otherwise, Andy's automerge + snap video doesn't work in current SVN.
1. Updated selected restriction to not be so stingy. Snapping on edges and vertices work if they are part of a partially moving face
2. Change depth ordering (which didn't work all the time). Hits are sorted according to 2D distance and then depth, so for overlapping hits, it picks the one in front.
---------------------------------------------------
Snappy stuff
* Align rotation with snapping target: rotate the object, aligning it with the target (object mode only - temporarily) (New icon in the header when snap is turned on)
* Snap to different mesh elements (face, edge, vertice): snapping target slide on faces and edge or use exact position of vertice. When using Align rotation with edge snapping, the normal is interpolated as you slide along.
Snaps correctly to derived mesh (sculpt, modifiers, ...) and duplis. In object and edit mode.
NOTE: The snapping code is now based on faces, so even if you're snapping to vertices or edges, it will not work on meshes without faces. This might change if needed.
Snapping Mode: Active
With this mode, the active element (at this time, object or vertice) is used as snapping target. If there is no active element in the selection, it reverts back to median mode.
Edit Mode snapping, other meshes no longer have to be selected to act as snapping point.
Fix a potential bug with snapping point from other meshes.
Snapping for object mode
Changes:
- Transform snap now working in object mode and not just mesh edit mode
- Shift-Tab can be used to toggle snap on/off inside transform too (no more Esc,toggle,restart)
- Object mode snap: Closest uses the bounding box corners of all selected objects, Median uses object center and Center uses transform center (same as edit mode).
- Object mode snap: all visible meshes can be used to get the snapping point (unlike edit mode snap which is limited to selected mesh: this might be adjusted to make edit mode snap use all visible too).
To Do:
- Add "Active" snap target method: use active object (or mesh element) as snap target
- Add snapping capabilities to Scale
- (Maybe) Add "Near pointer" snap target method: use selected element that is closest to mouse pointer as snap target. Active could probably accomplish that already in a less confusing manner, so I might skip this.
Inter-mesh snap optimization and fixes.
For larger meshes, tests are made against the bounding box first to speed things up (suggested by Brecht).
Also, verts are accessed through mesh_get_mapped_verts_nors() it can snapped to deformed vertices (only the deformed originals, not new verts for now).
Snapping to other meshes from edit mode.
This commit adds the capacity to snap to vertice of other selected meshes. (This is for sanity reasons, big scenes would kill the speed)
So, if you want to snap to another mesh, just add it to the selection and you're done.
NOTE: Priority is given to vertice inside the current mesh (if they overlap with outside verts)
Snap/Grid icon button in 3D view header (edit mesh). FIXME NOTICE: make nice looking icons (yes, that's for you Matt)
When snap is on, a drop down appears for the target method (closest, median, center)
Hotkey to toggle snap is Shift-Tab (this was previously used for a not totally equivalent to Tab. Ton said OK to scrap it). That hotkey is currently restricted to edit mesh (where snap is currently restricted).
Changed a couple of ugliness on how snap settings are stored.
Fixed the bug where it would snap to a selected (moving) vertex.
Fixed a bug with Snap Closest with only one vertex selected.
=== Internals: EditMesh Mods ===
Modify and documented findnearestvert.
Added a new parameter to restrict the search to selected or unselected vert instead of just adding a bias to them (as previously). Currently, the "strict" method bypasses the openGL optimisation, people with more knowledge about that should feel invited to fix it.
=== Internals: EditMesh Tools ===
Adding missing newline at the end.
==== Rotation Snap ====
Snap is no longer limited to Translation, it works in Rotation too.
There's some bugs left with rotation snap when using constraints, I'll be ironing that next.
==== Bug Fixes ====
* Fix manipulators to always use Grid.
* Fix initialization bug (took two transform call to do a correct snap init when changing between Grid and Snap)
The circle drawn around the snap point is now truely constant regardless of zoom and size of the window. That size if linearly proportional to the vertex size (bigger vertex -> bigger circle).
(Implementing Matt's idea)
Grid and Snap are now exclusively controlled by the Control key (pun intented).
You can switch to Snap by selecting the snap option in the Transform menu (this option is only available in edit mode on a mesh. this option is per 3D view) (NOTE: There is currently no hotkey for that, anyone should feel free to add one).
When Snap is selected, holding down Ctrl during translations (grab) snaps to vertex.
All other situations which have no snapping code yet defaults to Grid.
Draw a circle around the snapping point for visual aid.
Different snapping target method, switchable in the 3d view header menu in the Transform menu.
* Closest: Snaps the closest vertex to the point
* Median: Snaps the median of the selection to the point
* Center: Snaps the transform center to the point (this is different from median because you can use Cursor/Boundbox as center)
Fix a bug with constraints/snap handling.
Work in Progress: this adds vertex snapping capabilities to translations.
As before, use the menu or the hotkey (` during transform) to turn on snapping.
Currently, snapping is restricted to translation and only snap to verts. Also, it will snap the nearest moving vert to the snapping vert.
This also has a timeout period and refreshes the snapping point only every 0.25 seconds (assuming the timer is precise enough to do that) to mitigate the slowdown due to repeated calls to findnearestvert. Eventually, a faster method will have to be used.
Also, this uncovered a bug in findnearestvert which can manifest itself as jumps and lags in snapping. People are looking into it.
Still, with all those disclaimers, get the suggestions/critics pouring in.
Modified version of patch #5281 by Joshua Leung.
It's a two part patch:
Add a Roll button in the transform properties floating panel with bones selected in edit mode
Add a Roll transform (Ctrl-R) that can be used to modify the roll of selected bones in edit mode
The transformation modifies the roll of all selected bones incrementally (like a rotation does to the bones' rotation) [that is the part that differs from the patch. The patch would set the same roll value to all bones]
Also, this commit includes some shuffling around of the functions, to keep the previously logical order. :)
Embryon functionnality for snapping.
- Only snaps to grid on translations (grab)
- Transform constraints are supported but header display is wrong.
- Can be turned on/off in the Object/Mesh header menu under Transform Properties (tentative spot, will have to integrate better and in other object type menus too)
- Can be turned on/off during transform with ` (Back Quote, also tentative)
This is, of course, very much Work in Progress.
This implements part of the structural ideas for the transform cleanup I've been juggling around with.