I’m working on some personal tools to improve my mesh-hair-workflow and i stumbled over this: When converting a non-bezier-curve into bezier, all its points lose their tilt settings:
While i was hoping for something along the lines of what the green arrow points to, i actually get something like the right arrow points to:
Not so nice! As i’m working with hair, i’d prefer the amount of visible controls to be as low as possible, so i’m opting for poly-type curves, as it’s already confusing enough without bezier handles:
Besides, Nurbs with less than 6 points can’t converted at all. After some fiddling around, i coded a little helper func that converts those curves the correct way:
def convert_to_bezier_with_tilt(obj): bpy.ops.object.mode_set(mode='OBJECT') bpy.ops.object.duplicate() data=bpy.context.active_object.data bpy.ops.object.mode_set(mode='EDIT') for spline in data.splines: if spline.type=="NURBS": bpy.ops.curve.select_all(action='DESELECT') spline.points.select=True bpy.ops.curve.spline_type_set(type='POLY') if spline.type=="POLY": bpy.ops.curve.select_all(action='DESELECT') spline.points.select=True tilts=[p.tilt for p in spline.points] bpy.ops.curve.spline_type_set(type='BEZIER') for pid, point in enumerate(spline.bezier_points): point.tilt=tilts[pid] point.handle_left_type="AUTO" point.handle_right_type="AUTO"
That way i can have the best of both worlds: Easier editing with poly curves, nicer final geometry with bezier curves! It’s nothing amazing, but it helps my workflow a lot, so maybe somebody can get some use out of it.