Commit Graph

3471 Commits

Author SHA1 Message Date
Dalai Felinto
eeeb469db2 Select Similar: Cleanup 2018-09-21 15:42:07 -03:00
Dalai Felinto
c2582bfc63 Select Similar: Skip hidden elements 2018-09-21 15:39:36 -03:00
Dalai Felinto
e8ec01dbb5 Multi-Objects: Select similar edge SIMEDGE_SEAM/SIMEDGE_SHARP
I'm not sure why we may want to sample both a sharp and an unsharp edges at the
same time, maybe to see if the selected edges all have the same values?

Either way, implemented as in 2.79. I also believe we may have a faster way to
select all the edges, but let's file this under optimizations to be done later.
2018-09-21 15:33:09 -03:00
Dalai Felinto
438e09dbbe MESH_OT_select_similar: Cleanup 2018-09-21 14:46:50 -03:00
Dalai Felinto
e406a9f305 Multi-objects: Select similar edge SIMEDGE_FACE_ANGLE
I'm not sure why the original implementation was only checking for equal
comparison but I'm doing the same here. It is a one line change if we
want to support LT/GT anyways.

Also "technically" we should compare the angles in the worldspace, since
different scales will result in different angles. Added as a TODO but
honestly I think this is overkill.
2018-09-21 14:46:50 -03:00
Dalai Felinto
35f659aeb4 Rename bm_sel_similar_cmp_short > select_similar_compare_LONG 2018-09-21 14:46:50 -03:00
Dalai Felinto
3e46bea46b Multi-objects: Select similar edge SIMEDGE_LENGTH
I'm using kdtree here but there is nothing preventing us from using a simple
float linked list with a sorting and finding "nearest" equivalents.

At least we are benefitting from bisecting as oppose to the original solution.

Also we need epsilon for the float comparisons.
2018-09-21 14:46:50 -03:00
Dalai Felinto
b38be90515 Multi-objects: Select similar edge SIMEDGE_DIR 2018-09-21 14:46:50 -03:00
Dalai Felinto
acc6c50d8a Multi-objects: Select similar edge SIMEDGE_FACE 2018-09-21 14:46:50 -03:00
Dalai Felinto
850fda2358 Select similar edge: Granular error message
This way we can implement them onw by one
2018-09-21 14:46:50 -03:00
7a3474ddfd Gizmo: spin tool XYZ axis toggles
New handle type for initial spin,
gives clear differentiation between do & redo (similar to extrude).

Some tweaks still required to match T56571.
2018-09-21 13:48:22 +10:00
3266ebf9e5 Gizmo: enable spin tool redo gizmos again
- Add x,y rotate and translate controls.
- Remove x-depth adjustment.
2018-09-21 13:34:29 +10:00
Dalai Felinto
cffae36381 Fix build for MSVC: Remove trailing double semicolon
Not sure why but MSVC is complaining for some of those.

In particular for the struct in BKE_subdiv_ccg.h. Those were the ones
crashing here..
2018-09-20 14:59:55 +00:00
e8c27b1bba Cleanup: use win_to_3d_on_plane function 2018-09-20 12:53:39 +10:00
9dac8633d6 Merge branch 'master' into blender2.8 2018-09-20 12:51:16 +10:00
6672019484 Gizmo: use simple unclipped win_to_ray function
When projecting the cursor onto a plane, clipping isn't important.
2018-09-20 12:13:11 +10:00
1a2e41a0f2 Cleanup: renaming missed from merge 2018-09-20 12:05:10 +10:00
65fb2ebb3c Merge branch 'master' into blender2.8 2018-09-20 11:51:01 +10:00
de32dc6b27 Cleanup: rename 3D view ray calculation functions
Using near far and optionally clipping planes is
involved and not needed in many cases.

Rename so a simpler version of this function can be added.
2018-09-20 11:47:17 +10:00
ce56088bcd Gizmo: use ED_view3d_win_to_3d_on_plane 2018-09-20 11:38:11 +10:00
2c30922e2c Fix spin/rotate gizmo not updating view orientation
Check for navigation didn't refresh when navigation was completed.
2018-09-20 10:19:59 +10:00
574484006b EditMesh: show the spin arc as a thin ribbon
Closer to the design from T54661
2018-09-19 17:52:13 +10:00
6c7ad56f00 EditMesh: orient spin arc to follow the cursor 2018-09-19 16:41:56 +10:00
88cd23914f Gizmo: dial3d option to show the final angle
Was showing modal-delta-angle, which isn't useful for the spin tool.
2018-09-19 13:35:15 +10:00
bb3ec3ebaf BLI_utildefines: rename pointer conversion macros
Terms get/set don't make much sense when casting values.

Name macros so the conversion is obvious,
use common prefix for easier completion.

- GET_INT_FROM_POINTER  -> POINTER_AS_INT
- SET_INT_IN_POINTER    -> POINTER_FROM_INT
- GET_UINT_FROM_POINTER -> POINTER_AS_UINT
- SET_UINT_IN_POINTER   -> POINTER_FROM_UINT
2018-09-19 12:12:21 +10:00
4597589503 Cleanup: replace pointer/int casts with macros 2018-09-19 12:22:48 +10:00
f35e9f047a Merge branch 'master' into blender2.8 2018-09-19 12:14:36 +10:00
Dalai Felinto
c0fb90ff9a Multi-Objects: Initial select similar support
Note: I had to add an epsilon on top of the threshould for SIMVERT_NORMAL.
Otherwise I was getting differences such as 0.000000something when comparing
supposed-to-be-identical normals.

The way I see it, the Threshold option is a user feature, where users can
control more or less what they want selected. While the epsilon is a
non-negotiable requirement for our float comparison here.

This includes support for:
* SIMVERT_NORMAL
* SIMVERT_FACE
* SIMVERT_EDGE

Not included and currently not supported/disabled:
* SIMVERT_VGROUP
* SIMEDGE_*
* SIMFACE_*

While we are working on this, we prevent users from using the non-ported modes.
Note: the bmo_similar.c file is still around, to be removed in the near future.

Everyone: Please fell free to jump in and help tackling the missing modes.

For details on the implementation discussion:
https://developer.blender.org/D3674
2018-09-18 22:42:07 -03:00
Dalai Felinto
a1acff5459 Move select similar to its own file 2018-09-18 22:42:07 -03:00
d421adb83e Gizmo: de-duplicate poll logic
Checking the active tool or operator was a common way to check
if the gizmo was still in use.
2018-09-18 16:15:06 +10:00
0a3b66cfb5 Gizmo: dial3d option to get angles w/o wrapping
Needed for spinning multiple revolutions.
2018-09-18 14:58:20 +10:00
add961c209 Correct view orientation update in last commit 2018-09-18 14:04:55 +10:00
e16e17486b Gizmo: use spin widgets by default
- Now the spin tool has a persistent gizmo.
- Uses scene orientation, with additional view orientation.
- Uses the cursor center, ignoring the pivot since the
  selection center is rarely useful.
- Disable most of the redo gizmo's for now since they overlap,
  only allow adjusting the angle.

  Note: mixing new action with adjusting previous is confusing,
  we'll want to have design guidelines regarding this.
2018-09-18 13:44:41 +10:00
67f3f31f00 Cleanup: spin redo naming changes 2018-09-18 13:22:14 +10:00
2ca7d14814 Cleanup: spin redo naming changes 2018-09-18 09:58:27 +10:00
2f8994f4af Cleanup: spin redo naming changes 2018-09-18 09:55:20 +10:00
03bccd0010 Cleanup: move editmesh spin gizmo into own file
To mix both initial spin and redo ends up being more involved,
move into own file.
2018-09-18 09:51:12 +10:00
5b221f1a6e Gizmo: minor tweak to spin tool
Make main angle adjustment radius larger since it's the most useful.
2018-09-18 09:41:54 +10:00
2997f11941 Gizmo: start spin gizmo dragging
- Only respond to drag event, so placing the cursor is possible.
- Start off with zero rotation, dragging adjusts.
2018-09-17 14:34:51 +10:00
b8592b656b Gizmo: Functions to re-initialize a group type
Partially re-initializing a gizmo is often more trouble then removing
and re-adding.
2018-09-17 14:30:46 +10:00
ae3754838a Cleanup: rename gizmo group data
Abbreviate to 'ggd', replacing manipulator reference.
2018-09-17 12:47:45 +10:00
9e5259b043 Tool System: make smooth and randomize interactive 2018-09-13 09:19:30 +10:00
ad713dc457 Cleanup: Warning in release builds 2018-09-10 09:50:50 +02:00
c30e12455b Correct argument type 2018-09-10 17:45:54 +10:00
18dc84dc35 Poly Build: disable use_boundary_tear
Without this, it's more like deleting the vertex than dissolving.
2018-09-10 17:35:03 +10:00
7283179a00 Poly Build: dissolve was using selection, not highlighted
Also no need to clear selection history,
BM_mesh_elem_hflag_disable_all handles this.
2018-09-10 17:29:24 +10:00
5b39b83af4 Poly Build: set newly added elements active 2018-09-10 16:24:38 +10:00
a4d126cac6 Cleanup: use title caps 2018-09-10 16:14:26 +10:00
549ac6ddeb Edit Mesh: pass Base array to picking functions
In some cases we need to use this array afterwards,
so this gives control over which objects are used for picking.

Also use an index argument as return argument
so callers that need to know the index in the array
don't need to calculate it afterwards.
2018-09-10 16:02:12 +10:00
a331b5dde6 Cleanup: rename edge-ring preselect file
Having all pre-selection in one file isn't so nice,
differentiate edge-ring from element pre-selection.
2018-09-10 14:38:13 +10:00