thanks @ambi , Iāll look at your library asap ! amazing work btw

curious to compare performance, i already got some great results with numpy before

in the meanwhile i did my own (more simple) fct, it just loop over bmesh edges look for angle and loop over verts again

wanted to optimize it with numpy but it seem that bmesh donāt get `foreach_get`

API (still learning)

```
def eval_percentage(maxi, mini, nbr):
"""get weight value proportional to min and max"""
zone = (maxi-mini)
if zone==0:
return 1.0
r = (nbr-mini)/zone
return r
def create_curvature_data(vg_name, crop_max=1.0, mode='concave'):
"""create curvature data weight group, mode arg in ( 'concave','convex','both','curvature')"""
o = bpy.context.object
bm = bmesh.new()
bm.from_mesh(o.data)
bm.edges.ensure_lookup_table()
bm.verts.ensure_lookup_table()
#get all angle (and index by order)
angl = [e.calc_face_angle_signed(0.0) for e in bm.edges]
#find min and max values
mini = min(angl)/crop_max
maxi = max(angl)/crop_max
#curvature mode need 0.5 as flat, cannot take raw min/max
if mode=='curvature':
maxv = abs(mini) if (abs(mini)>abs(maxi)) else abs(maxi)
v_dict={}
#loop over dict, don't calculate all over angle again...
for i,v in enumerate(angl):
#evaluate values from min and max
if mode=='curvature':
val = eval_percentage( maxv, -maxv, v)
elif mode=='convex':
val = eval_percentage( maxi, 0, v)
elif mode=='concave':
val = 1-eval_percentage( 0, mini, v)
elif mode=='both':
val = eval_percentage( maxi, 0, abs(v))
for v in bm.edges[i].verts:
#if value already exist in dict, round both
if v.index in v_dict:
#if curvature, do average
if mode=='curvature':
old_val=v_dict[v.index]
del v_dict[v.index]
v_dict[v.index]= (val+old_val)/2 #average = create weird artifact ???
continue
#else only take max value
else:
if v_dict[v.index]<val:
del v_dict[v.index]
else:
continue
v_dict[v.index]=val
bm.free()
if vg_name not in o.vertex_groups:
vg = o.vertex_groups.new(name=vg_name)
else: vg = o.vertex_groups[vg_name]
for i,v in v_dict.items():
vg.add([i], v, 'REPLACE')
return
```