[Bf-codereview] Move curve's boundbox and texspace calculation out of modifier stack (issue 15410043)

sergey.vfx at gmail.com sergey.vfx at gmail.com
Sun Oct 20 17:29:03 CEST 2013


Reviewers: bf-codereview_blender.org, brechtvl, ideasman42,

Description:
There were several issues with how bounding box and texture space are
calculated:

- This was done at the same time as applying modifiers, meaning if
several objects are sharing the same curve datablock, bounding box and
texture space will be calculated multiple times.

   Further, allocating bounding box wasn't safe for threading.

- Bounding box and texture space were evaluated after pre-tessellation
modifiers are applied. This means Curve-level data is actually depends
on object data, and it's really bad because different objects could have
different modifiers and this leads to conflicts (curve's data depends on
object evaluation order) and doesn't behave in a predictable way.

This change moves bounding box and texture space evaluation from
modifier stack to own utility functions, just like it's was done for
meshes.

This makes curve objects update thread-safe, but gives some limitations
as well. Namely, with such approach it's not so clear how to preserve
the same behavior of texture space: before this change texture space and
bounding box would match beveled curve as accurate as possible.

Old behavior was nice for quick texturing -- in most cases you didn't
need to modify texture space at all. But texture space was depending on
render/preview settings which could easily lead to situations, when
final result would be far different from preview one.

Now we're using CV points coordinates and their radius to approximate
the bounding box. This doesn't give the same exact texture space, but it
helps a lot keeping texture space in a nice predictable way.

We could make approximation smarter in the future, but fir now added
operator to match texture space to fully tessellated curve called "Match
Texture Space".


Please review this at https://codereview.appspot.com/15410043/

Affected files (+116, -27 lines):
   b/release/scripts/startup/bl_ui/properties_data_curve.py
   b/source/blender/blenkernel/BKE_curve.h
   b/source/blender/blenkernel/intern/curve.c
   b/source/blender/blenkernel/intern/displist.c
   b/source/blender/blenkernel/intern/object.c
   b/source/blender/blenloader/intern/readfile.c
   b/source/blender/editors/curve/curve_intern.h
   b/source/blender/editors/curve/curve_ops.c
   b/source/blender/editors/curve/editcurve.c
   b/source/blender/makesdna/DNA_curve_types.h




More information about the Bf-codereview mailing list