Commit Graph

3211 Commits

Author SHA1 Message Date
mano-wii
c22d2f9e01 Fix T73159: Crash transforming 0 edited grease objects 2020-01-17 09:17:36 -03:00
mano-wii
9a6551543b Fix crash with Proportional Edit Connected in UV editing
Caused by rB86a2ffc3ab32
2020-01-16 09:14:27 -03:00
Campbell Barton
f681e9ea49 Fix UV gizmos poll failing with multiple objects
Only the active objects UV selection was checked.
This also avoids checking UV selection for every poll call,
now this is only done on refresh.
2020-01-09 17:50:52 +11:00
Campbell Barton
ce5a5b553d Fix multiple UV gizmos being linked at once
This happened when reloading the file after using different gizmos.
2020-01-09 17:01:05 +11:00
Campbell Barton
ac4057b95a Gizmo: use pivot center for UV gizmos 2020-01-09 16:42:24 +11:00
Campbell Barton
1ef59d0eb5 BMesh: remove BMEditMesh.ob use for ED_transform_snap_object_* API 2020-01-07 17:02:50 +11:00
Campbell Barton
e95c0fba09 BMesh: remove BMEditMesh.ob use BKE_editmesh_lnorspace_* API
Note that this is a bit clumsy having both edit-mesh and mesh,
BKE_editmesh_ensure_autosmooth & BKE_editmesh_lnorspace_update
are often called together, these could be made into a single functions.
2020-01-07 14:27:59 +11:00
Campbell Barton
24d46bdbf7 Gizmo: match UV editor gizmos more closely to the 3D view 2020-01-06 23:21:50 +11:00
Campbell Barton
0d67eb277f Gizmo: support 3D arrow gizmos in 2D spaces
Allows 2D arrows to be removed, since they work slightly differently
and don't support offset matrices.

Use these in the UV editor.
2020-01-06 23:21:45 +11:00
Campbell Barton
98e4fbc7cc Gizmo: use compatible scale values between 2D/3D gizmos
Make the UV editor gizmos the same size as the 3D view.
2020-01-06 23:08:27 +11:00
mano-wii
de530a95dc Transform: Pose: Partial support for Auto IK + X-Mirror
Fix T69572

TODO: support `Relative-Mirror` as well.

Maniphest Tasks: T69572

Differential Revision: https://developer.blender.org/D5862
2020-01-02 12:53:46 -03:00
mano-wii
86a2ffc3ab Transform: Individual Origins: Create islands between only selected uvs.
Currently the islands are created depending only on the visible UVs.
This can be confusing because compared to Edit Meshes, islands are created based on the selected elements.

T68284 shows a case where this confusion is observed.

Differential Revision: https://developer.blender.org/D6502
2019-12-31 13:04:57 -03:00
Alexander Gavrilov
33eabb8220 Action Constraint: introduce a mix mode setting.
Currently the action channels are applied after the existing
transformation, as if the action controlled a child of the
bone. This is not very natural, but more importantly, the
transform tools are not designed to work conveniently with an
additional 'pseudo-child' transformation, resulting in effects
like an unexpected pivot location.

Implementing a Before mode that integrates the action channels
as if applied to a parent allows using the special transform
tool code intended for dealing with such constraints.

Note that in either mode, Action constraints should be added
in reverse order, putting a new constraint before the existing
ones that the Action was keyframed to work together.

In order to implement the option, extract a utility from
the Copy Transform constraint code for combining transforms
with special anti-shear scale handling that matches the
Aligned Inherit Scale mode.

The Before mode also requires switching the constraint to
the Local owner space, while the After mode can still use the
World space for efficiency as before. Since the constraint
doesn't have an Owner space option in the UI, this has to be
handled in an RNA setter.

For full backward compatibility, the original simple matrix
multiplication mode is preserved as the third option, but it
is not recommended due to creating shear.

Differential Revision: https://developer.blender.org/D6297
2019-12-24 19:58:09 +03:00
Campbell Barton
6929d8aa59 Object: extract data transform container into own API 2019-12-22 23:34:42 +11:00
Campbell Barton
9a1bbca5b1 Remove empty header added by accident 2019-12-20 23:05:50 +11:00
Campbell Barton
130ebfe43c Cleanup: simplify transform cursor DPI scaling 2019-12-20 18:23:41 +11:00
Campbell Barton
50a56f566f Cleanup: split transform cursor drawing into their own files 2019-12-20 18:19:56 +11:00
Campbell Barton
0971f56bac UI: use DPI scale for transform cursors 2019-12-19 16:48:45 +11:00
Campbell Barton
d591c8a350 Gizmo: add the ability to postpone refreshing while tweaking
This resolves a logical problem using tweak as a fallback tool.
See: T66304#828742

The select action would immediately show the gizmo underneath it,
then the tweak would be handled by the gizmo instead of moving the item
under the cursor.

Currently this works by hiding the gizmo until the tweak event ends.
While it's simpler to check if the gizmo received a mouse-down event,
it causes flickering before each drag event which feels like a glitch.

This is optional for each gizmo type because there are cases where this
can be useful to activate the gizmo immediately (mesh rip for example).
2019-12-19 01:53:15 +11:00
Campbell Barton
1ef6be3686 Cleanup: redundant struct declarations 2019-12-17 10:15:22 +11:00
Campbell Barton
82755f5137 Gizmo: add gizmos for UV transform translate/rotate/scale 2019-12-13 22:43:48 +11:00
Campbell Barton
2f1b891dd9 Fix tool fallback being ignored with transform gizmos
This only worked once the gizmo was displayed.
2019-12-12 18:39:34 +11:00
Campbell Barton
3d5775b69a Gizmo: add view aligned gizmo for shear 2019-12-09 19:45:15 +11:00
Campbell Barton
6ffcddc10a Tool System: experimental fallback tool support
Implement T66304 as an experimental option,
available under the preferences "Experimental" section.

- When enabled most tools in the 3D view have a gizmo.
- Dragging outside the gizmo uses the 'fallback' tool.
- The fallback tool can be changed or disabled in the tool options
  or from a pie menu (Alt-W).
2019-12-07 06:03:00 +11:00
mano-wii
574a59dfb0 Fix T72112: Perpendicular snapping with closest not working
The closest target is calculated only after a snap point is found.
So use `center_global` while the target is not calculated.
2019-12-03 12:20:41 -03:00
mano-wii
0f521ca4d9 Fix T72071: Crash on snap to edge
Caused when the vertices index is dirty due to some mesh editing
operation like Extrude
2019-12-02 10:30:37 -03:00
Clément Foucault
9516921c05 Overlay Engine: Refactor & Cleanup
This is the unification of all overlays into one overlay engine as described in T65347.

I went over all the code making it more future proof with less hacks and removing old / not relevent parts.

Goals / Acheivements:
- Remove internal shader usage (only drw shaders)
- Remove viewportSize and viewportSizeInv and put them in gloabl ubo
- Fixed some drawing issues: Missing probe option and Missing Alt+B clipping of some shader
- Remove old (legacy) shaders dependancy (not using view UBO).
- Less shader variation (less compilation time at first load and less patching needed for vulkan)
- removed some geom shaders when I could
- Remove static e_data (except shaders storage where it is OK)
- Clear the way to fix some anoying limitations (dithered transparency, background image compositing etc...)
- Wireframe drawing now uses the same batching capabilities as workbench & eevee (indirect drawing).
- Reduced complexity, removed ~3000 Lines of code in draw (also removed a lot of unused shader in GPU).
- Post AA to avoid complexity and cost of MSAA.

Remaining issues:
- ~~Armature edits, overlay toggles, (... others?) are not refreshing viewport after AA is complete~~
- FXAA is not the best for wires, maybe investigate SMAA
- Maybe do something more temporally stable for AA.
- ~~Paint overlays are not working with AA.~~
- ~~infront objects are difficult to select.~~
- ~~the infront wires sometimes goes through they solid counterpart (missing clear maybe?) (toggle overlays on-off when using infront+wireframe overlay in solid shading)~~

Note: I made some decision to change slightly the appearance of some objects to simplify their drawing. Namely the empty arrows end (which is now hollow/wire) and distance points of the cameras/spots being done by lines.

Reviewed By: jbakker

Differential Revision: https://developer.blender.org/D6296
2019-12-02 13:15:52 +01:00
mano-wii
3a5d398aaf Fix T72024: Transform Snap: Alingn Rotation distorts object
Occurs in edit mode when object has no uniform scale.
2019-11-29 12:06:16 -03:00
Campbell Barton
249f4423ee Cleanup: doxygen comments
Also correct some outdated symbol references,
add missing 'name' commands.
2019-11-25 01:51:11 +11:00
Campbell Barton
ace5677ef0 Cleanup: spelling, repeated words 2019-11-25 00:55:11 +11:00
Julian Eisel
b037ba2665 UI: Changes to Graph Editor selection and transform
When introducing "drag-all-selected" support all over Blender, we
figured this wouldn't work well with the Graph Editor
selection/transform behavior.
Hence, William and I worked on the following changes, although we used
this chance to improve the behavior in general too.
For more info see T70634.

* Handles now always move with the key, regardless if they are selected
  or not.
* Selecting the key doesn't select the handles anymore, their selection
  is separate.
* Multiple keys and handles can now be dragged.
* Dragging a handle moves all selected handles **on the same side**.
* Tweak-dragging any handle can never affect any keyframe location,
  only handles.
* G/R/S should behave as before.
* Changing the handle type with a key selected always applies the change
  to both handles.
* Box selection with Ctrl+Drag now allows deselecting handles (used to
  act on entire triple only).
* Box selection //Include Handles// option now only acts on visible
  handles, wasn't the case with Only Selected Keyframes Handles enabled.
* Box selection //Include Handles// is now enabled by default in all
  bundled keymaps.

The changes have been tested for some days by the animators here in the
Blender Animation Studio. Some changes are based on their feedback.

Also, this improves/adds comments for related code.

Differential Revision: https://developer.blender.org/D6235

Reviewed by: Sybren Stüvel, William Reynish
2019-11-22 16:54:43 +01:00
Campbell Barton
3d015c71cc Gizmo: show extrude gizmos with dark '+' instead of negative space 2019-11-22 17:23:24 +11:00
Campbell Barton
c98b062f87 Merge branch 'blender-v2.81-release' 2019-11-13 15:08:29 +11:00
Campbell Barton
4782e941c8 Fix T71494: brush curve transform crash in sculpt mode
Error in 309cd047ef
2019-11-13 13:33:46 +11:00
Dalai Felinto
fc79d27951 Merge remote-tracking branch 'origin/blender-v2.81-release' 2019-11-11 12:20:36 -03:00
Dalai Felinto
c1af9ef031 Fix T71487: Crashes When Calling Texture Space Operators
Issue introduced on 69ad44d5b4.

Differential Revision: https://developer.blender.org/D6224
2019-11-11 11:39:20 -03:00
mano-wii
b720c0f6aa Fix T71436: proportional_edit_objects turns off when translating cursor in edit mode 2019-11-09 16:12:42 -03:00
Campbell Barton
3ed7ff1f9f Merge branch 'blender-v2.81-release' 2019-11-09 10:05:30 +11:00
Campbell Barton
0a0d735acd Fix T71379: Even edge slide shows random points on screen 2019-11-09 09:59:10 +11:00
mano-wii
4b229f9e2d Fix T69799: Glitches when moving object camera is locked to
The idea is to indicate that the view3d matrix is being transformed too
and this avoids cyclic dependencies.
2019-11-08 17:58:00 -03:00
mano-wii
44d67b6dc8 Transform: Add option to exclude back facing geometry from snapping
Add new `Backface Culling` option to the snapping properties.
This option has nothing to do with the view3d display or the
workbench `Backface Culling` option.

Limitation:
- In edit mode, this option only affects snap to faces.

Maniphest Tasks: T71217

Differential Revision: https://developer.blender.org/D6155
2019-10-31 14:09:53 -03:00
Campbell Barton
f5ebe8395d Cleanup: correct argument type mismatch
Add transform_snap.h header which includes DNA enum.
2019-10-29 00:45:05 +11:00
mano-wii
ce0db668ec Fix T50148: Header: Wrong rounding when moving frames
Deduplicate the code and use the same logic used to
calculate individual elements in `t->values_final[0]`.

Differential revision: https://developer.blender.org/D6135
2019-10-28 09:51:53 -03:00
mano-wii
a83bbefec6 Cleanup: use doxy sections for transform_snap 2019-10-28 09:32:59 -03:00
Campbell Barton
892c3891ed UI: partial revert of renaming Normal -> Regular
These instances refer to winding/direction.
2019-10-25 06:00:46 +11:00
Campbell Barton
ce6e7a0941 Fix T60689: Flip Active/Selected bone fails in weight paint mode
Multiple selection operations failed with weight-paint + pose mode.

Weight-paint + pose mode is a special case that doesn't support
multi-pose mode, so we need to use this instead of the generic
function.
2019-10-25 00:49:39 +11:00
Campbell Barton
bf3c382c47 Cleanup: comments, formatting 2019-10-24 18:15:08 +11:00
Campbell Barton
1afdea624c Transform: reverse absolute, ratio vertical motion
This only impacts push-pull & shrink-fatten.

Flipping this matches zoom where moving the mouse cursor up
increases the zoom-level.

Previous behavior felt unnatural when adding gizmos to these tools.
2019-10-24 17:56:40 +11:00
mano-wii
cfb6ffd48f Fix T70386: Crash when snapping to edges in specific situations
The callbacks get elements through indexes,
so make sure they're not "dirty".
2019-10-15 14:59:30 -03:00
Sebastian Parborg
5ba41bea8a Fix autokeyframe not working on bones mirrored bones
The previous code for this didn't work as the MIRROR bone flag would be
cleared before the autokeyframe code was run.
2019-10-14 18:16:21 +02:00