Age | Commit message (Collapse) | Author |
|
When the desired widths (offsets) of beveled edges cannot be
satisfied, often because we want them to meet on an intermediate
non-beveled edge, we need to compromise on the widths somehow.
This code changes the compromise to minimize the sum of squares
of errors in the offsets. It also adds a global width consistency
pass: starting from a vertex that needed width adjustment, it
uses a breadth-first search to try to propagate the adjustments
and keep the bevel widths from having to taper along the edges.
Also fixed a case where a reflex angle would cause bad results.
Also fixed the way the 'percentage' width method was calculated.
|
|
- could crash if triangulate attempted to create an existing face.
- tagging edges to rotate was unreliable, don't do this anymore.
now check if edge is in the array passed to the beauty function.
|
|
|
|
|
|
some scripts depended on uv's default values
|
|
|
|
This should prevent accidental use-after-free.
|
|
|
|
|
|
|
|
Was a regression from rBaa3c06b41ca9, hope this time all things are OK again (note the X/Y subdivision values still are different than before (-1 for same result), but imho they make more sense this way).
|
|
rename change/is_change/is_changed/modified -> changed
also use bools over int/short/char and once accidental float.
|
|
|
|
|
|
|
|
|
|
|
|
When beveling two adjacent edges, code used face normal instead
of the face-corner normal (these can be different for nonplanar
faces); the bevel may look uneven in such cases.
Switched to using corner normal, and needed to fix the case
where the edges meet at a reflex angle. Fixed a similar case
when beveling two edges with one non-beveled in between.
Also removed unnecessary argument from offset_meet.
|
|
|
|
|
|
|
|
This adds BM_bmesh_calc_tessellation() so we can get triangles from a
bmesh without having to have an editmesh available.
|
|
|
|
The bevel modifier with 'weight' activated was reading
the weights from the wrong edges.
|
|
In the case that there are two beveled edges with one unbeveled
one in between, and the widths don't allow them to magically
line up, it is better to slide along unbeveled edge.
Sometimes bevel widths are uneven (this was the case before)
and it is a followup TODO to do a width cleanup pass afterwards
to even the edges up as much as possible.
|
|
With some geometries, we can have a valid first path, without being able to find a valid second one, added needed check.
|
|
Now there is an 'Offset Type' dropdown on tool
shelf with types:
Offset - current method, offset of new edge
from old along sliding face
Width - width of new bevel face (if segments=1)
Depth - amount a chamfering plane moves down
from original edge
Percent - percent of way sliding edges move
along their adjacent edges
The different options mainly are useful when
beveling more than one edge at once.
Leaving as a TODO to put these in the modifier,
as doing that has more permanent effects so
want to let users shake out problems with this
first.
|
|
|
|
Quads: Beauty, Fixed, Fixed Alternate, Shortest Diagonal
Ngons: Beauty, Scanfill
* Shortest Diagonal is the default method in the modifier (popular
elsewhere), but beauty is the default in Ctrl+T).
* Remove the need for output slot and beauty operator to be called
after Clt+T
Patch with collaborations and reviewed by Campbell Barton
|
|
|
|
since enough bmesh operations can also take advantage of direct index lookups on verts/edges/faces.
developers note:
- EDBM_index_arrays_init/ensure/free -> BM_mesh_elem_table_ensure/init/free
- EDBM_vert/edge/face_at_index -> BM_vert/edge/face_at_index
- EDBM_uv_element_map_create/free -> BM_uv_element_map_create/free
- ED_uv_element_get -> BM_uv_element_get
|
|
|
|
mempool).
needed for other changes - coming.
|
|
an edge, face winding could be flipped incorrectly.
also remove search for shared edges - all callers pass the edge in.
|
|
|
|
Easy to fix, but do not really understand *why* this is needed...
|
|
it was asserting if the last edge faces were already all set
|
|
to run every time.
also other minor changes.
|
|
Patch reviewed and with collaborations from Campbell Barton
|
|
|
|
no functional change, just preparing the ground for the beautify in
triangulate modifier changes.
|
|
This is a proper design if we want to use the beautify routine elsewhere
(e.g., in the triangulate modifier)
|
|
more adjacent vertices
|
|
|
|
with review and collaboration from Campbell Barton
|
|
|
|
|
|
|
|
|
|
The ear loop method is potentially too slow (OˆN).
We are not using the 'beauty' option at the moment.
I'll incorporate that next.
(and later specific methods for quad splitting)
Patch done in collaboration (and reviewed by) with Campbell Barton.
|