Page MenuHome

linked curves with curve modifiers arent drawn correctly
Open, Confirmed, MediumPublic

Description

System Information
Operating system: Win 10
Graphics card: GTX 1080TI

Blender Version
Broken:
4ef09cf937f2
Worked: 2.79b

Short description of error
Whenever you have data-linked curves and both of them have curve modifiers, only the original curve will deform if you move it in object mode. Check 2,79 for correct behavior (you can have linked curves but they will deform separately). Also, if you have a modifier on a curve, blender starts to draw the original and deformed curve at the same time (which is pretty confusing).

Exact steps for others to reproduce the error
Here's a simple .blend with the issue

Details

Type
Bug

Event Timeline

Philipp Oeser (lichtwerk) triaged this task as Confirmed, Medium priority.Tue, Feb 5, 9:34 AM

Can confirm, @Bastien Montagne (mont29): iirc you've been active with (curve) modifiers? [just reaasign if that is not for you...]

Hrrmmm… this looks like different evaluated instances of curves sharing some data somehow (either at cache level, or something else?). Wouldn’t mind some @Sergey Sharybin (sergey) advice here first, in case he has some quick insight on the issue, before I dive again into curve eval process (which will take time…).

There's also a problem with curve drawing with modifiers. For example, create a curve and add a mirror modifier to it, it's not drawn in the viewport

@Clément Foucault (fclem) I think that is drawing code issue in fact, adding a printf at start of DRW_curve_batch_cache_create_requested(), I get things like:

DRW_curve_batch_cache_create_requested: CUBezierCircle (curve_cache: 0x6110004125c8), from OBBezierCircle
DRW_curve_batch_cache_create_requested: CUBezierCircle (curve_cache: 0x6110004125c8), from OBBezierCircle.001

…so looks like drawcache is shared by different objects if they use same curve obdata? At least, that function seems to take data from ob->runtime.curve_cache and use it to fill the VBOs of cu->batch_cache, if I follow it correctly.