Page MenuHome

Active point of Curve objects is not displayed correctly
Closed, ResolvedPublic

Description

System Information
Operating system: Darwin-18.2.0-x86_64-i386-64bit 64 Bits
Graphics card: AMD Radeon Pro 455 OpenGL Engine ATI Technologies Inc. 4.1 ATI-2.4.10

Blender Version
Broken: version: 2.80 (sub 69), branch: blender2.7, commit date: 2019-05-18 17:13, hash: rB1fce0460d522

Short description of error
The active point of the Curve/Surface objects is not displayed correctly (not highlighted in white) after you change it.

Exact steps for others to reproduce the error

  • Create Curve or Surface object
  • In Edit Mode select some points, the active point is not displayed in white

Event Timeline

Marco (nacioss) closed this task as Invalid.
Marco (nacioss) claimed this task.

It is displayed in green as it should be. They changed the color of active verts to be green.

@Marco (nacioss) green it's just selected points, active one is white

Campbell Barton (campbellbarton) triaged this task as Confirmed, High priority.May 20 2019, 1:52 AM

note: seems to update (to white) if you actually move the active point...

note: seems to update (to white) if you actually move the active point...

...but not if you use the select tools [box, lasso, ...] ...

I followed this a bit, so DEG seems to be tagging correctly ID_RECALC_SELECT, BKE_curve_batch_cache_dirty_tag gets called...

Maybe @Clément Foucault (fclem) or @Campbell Barton (campbellbarton) (campbell: will assign to you first if OK?) know what's going on?

@Sergey Sharybin (sergey), the issues seems to be that when tagging the curve with ID_RECALC_SELECT, cu->actvert is not copied to the curve-copy in the depsgraph. Is there a place where this just has to be added?

@Jacques Lucke (JacquesLucke), BKE_curve_copy_data() would be my first guess.

Thanks. Unfortunately, BKE_curve_copy_data is not called when ID_RECALC_SELECT is used in ED_curve_editnurb_select_pick. However, it is called when ID_RECALC_ALL is used.

Short answer: use ID_RECALC_COPY_ON_WRITE | ID_RECALC_SELECT.

Long answer: due to some historical reasons batch cache component (where selection is living) is not making CoW component to be run (was a measure to speed up updates on materials). Using explicit tag should solve this. And then in the future we can have a more closer look and hide CoW specifics from the "user space".

Can confirm ID_RECALC_COPY_ON_WRITE | ID_RECALC_SELECT works.
There is still an issue when the curve has multiple nurbs [highlighting only works in the very first], as well as the issue with the other selection tools [box, lasso, ...].
Will check on these...

@Philipp Oeser (lichtwerk), then please also commit the fix mentioned by sergey.