From 98ecab1af07a6f8f31b7889d1da92593deb87ae2 Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Wed, 28 Nov 2018 18:14:40 +0100 Subject: Fix T56906: Mesh from Curve not working on curves beveled by curves. Not exactly sure why we did not have cached displist for bevel object here... But anyway, that conversion operation should really happen outside of depsgraph evaluation area, so makes sense to do it as when generating geometry for rendering, imho. Also solves issues like loosing hidden parts of the curve/surface, etc. Still using viewport resolution for curves, though. --- source/blender/blenkernel/intern/displist.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) (limited to 'source/blender/blenkernel/intern/displist.c') diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index 8d49521831f..182c3204ccb 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -694,7 +694,7 @@ static float displist_calc_taper(Depsgraph *depsgraph, Scene *scene, Object *tap dl = taperobj->runtime.curve_cache ? taperobj->runtime.curve_cache->disp.first : NULL; if (dl == NULL) { - BKE_displist_make_curveTypes(depsgraph, scene, taperobj, 0); + BKE_displist_make_curveTypes(depsgraph, scene, taperobj, false, false); dl = taperobj->runtime.curve_cache->disp.first; } if (dl) { @@ -1578,7 +1578,7 @@ static void do_makeDispListCurveTypes( if (!for_orco) curve_calc_modifiers_pre(depsgraph, scene, ob, &nubase, for_render, use_render_resolution); - BKE_curve_bevelList_make(ob, &nubase, for_render != false); + BKE_curve_bevelList_make(ob, &nubase, use_render_resolution); /* If curve has no bevel will return nothing */ BKE_curve_bevel_make(depsgraph, scene, ob, &dlbev, for_render, use_render_resolution); @@ -1788,7 +1788,8 @@ static void do_makeDispListCurveTypes( } } -void BKE_displist_make_curveTypes(Depsgraph *depsgraph, Scene *scene, Object *ob, const bool for_orco) +void BKE_displist_make_curveTypes( + Depsgraph *depsgraph, Scene *scene, Object *ob, const bool for_render, const bool for_orco) { ListBase *dispbase; @@ -1806,7 +1807,7 @@ void BKE_displist_make_curveTypes(Depsgraph *depsgraph, Scene *scene, Object *ob dispbase = &(ob->runtime.curve_cache->disp); - do_makeDispListCurveTypes(depsgraph, scene, ob, dispbase, &ob->runtime.mesh_eval, 0, for_orco, 0); + do_makeDispListCurveTypes(depsgraph, scene, ob, dispbase, &ob->runtime.mesh_eval, for_render, for_orco, false); boundbox_displist_object(ob); } -- cgit v1.2.3