diff options
-rw-r--r-- | source/blender/blenkernel/BKE_curve.h | 1 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/curve.c | 10 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/displist.c | 2 |
3 files changed, 12 insertions, 1 deletions
diff --git a/source/blender/blenkernel/BKE_curve.h b/source/blender/blenkernel/BKE_curve.h index c4dfd9d4e30..0f9f8cb2f08 100644 --- a/source/blender/blenkernel/BKE_curve.h +++ b/source/blender/blenkernel/BKE_curve.h @@ -149,6 +149,7 @@ void BKE_nurb_knot_calc_v(struct Nurb *nu); /* nurb checks if they can be drawn, also clamp order func */ bool BKE_nurb_check_valid_u(struct Nurb *nu); bool BKE_nurb_check_valid_v(struct Nurb *nu); +bool BKE_nurb_check_valid_uv(struct Nurb *nu); bool BKE_nurb_order_clamp_u(struct Nurb *nu); bool BKE_nurb_order_clamp_v(struct Nurb *nu); diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c index ae45ca55c5d..4ad844d8a1e 100644 --- a/source/blender/blenkernel/intern/curve.c +++ b/source/blender/blenkernel/intern/curve.c @@ -3801,6 +3801,16 @@ bool BKE_nurb_check_valid_v(struct Nurb *nu) return true; } +bool BKE_nurb_check_valid_uv(struct Nurb *nu) +{ + if (!BKE_nurb_check_valid_u(nu)) + return false; + if ((nu->pntsv > 1) && !BKE_nurb_check_valid_v(nu)) + return false; + + return true; +} + bool BKE_nurb_order_clamp_u(struct Nurb *nu) { bool changed = false; diff --git a/source/blender/blenkernel/intern/displist.c b/source/blender/blenkernel/intern/displist.c index cdff6e249a7..eeb4f0d7fc4 100644 --- a/source/blender/blenkernel/intern/displist.c +++ b/source/blender/blenkernel/intern/displist.c @@ -1216,7 +1216,7 @@ void BKE_displist_make_surf(Scene *scene, Object *ob, ListBase *dispbase, curve_calc_modifiers_pre(scene, ob, &nubase, for_render, use_render_resolution); for (nu = nubase.first; nu; nu = nu->next) { - if (for_render || nu->hide == 0) { + if ((for_render || nu->hide == 0) && BKE_nurb_check_valid_uv(nu)) { int resolu = nu->resolu, resolv = nu->resolv; if (use_render_resolution) { |