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.May 19 2019, 4:43 PM
Marco (nacioss) claimed this task.
Marco (nacioss) added a subscriber: Marco (nacioss).

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) lowered the priority of this task from Needs Triage by Developer to Confirmed, High.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.