Those derived meshes (used in Edit mode) were using simple sum of neighbor poly normals to get vertex normals,
while everywhere else in Blender we use weighted sum of such poly normals.
Patch: D311
Reviewed and enhanced by Campbell, thanks!
Issue was caused by clearing dirty flags from element table in bmesh before
the data was fully ready.
This confused checks happening from threads and some threads did consider
element table is usable while other thread was still filling it in.
Parameter controls concavity / convexity.
<.25 means: concave inward
.25 means: straight slanted
>.25 means: concave outward
.5 means: circular (the default)
1 means: straight along original sides
For now, there is a hard lower limit of .15
because more work is needed to get decent
results in the range below that.
The profile is actually a superellipse, and the
parameter is 1/4 of the exponent in the implicit equation
for a superellipse, except at the extreme values of 0 and 1.
- 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.
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