Page MenuHome

Curve Display hides all curves/wires as soon as any part has faces [due to filling/extrude/etc]
Closed, ResolvedPublicDESIGN

Description

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce GTX 1080/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 436.48

Blender Version
Broken: version: rB6da097136cf4
Worked: rB6da097136cf4 ^

Short description of error
Curves aren't showing up correctly in 2.83beta. In 2.82, complex curve objects (e.g. CAD plans) displayed fine. In 2.83, the curve object isn't displaying properly. See the image below.
This is because curves dont display any wires as soon as any faces are generated (due to filling in this case) and only display the faces instead

Exact steps for others to reproduce the error

Load a complex CAD plan in 2.82a.
Save the .blend file
Open in 2.83beta
Notice the difference

Event Timeline

Ankit Meel (ankitm) changed the task status from Needs Triage to Needs Information from User.Apr 29 2020, 8:36 AM

Can you add a minimal file that can help test it?
Also, if possible can it be redone with built-in objects. ?

Here's a stripped down version of the file. It looks fine in 2.82a. Display is broken in 2.3 beta. But the data is still there. If you go into Edit mode, you can see it. Just not in object mode.

Thanks!

Ankit Meel (ankitm) changed the task status from Needs Information from User to Confirmed.Apr 30 2020, 9:32 AM

Well, this obviously goes away if the 2D curves are not filled [Properties Editor > Curve > Shape panel > Fill Mode set to None]
In this file some parts of the curve object generate faces [due to success in filling] and some others dont [where filling isnt possible].

rB6da097136cf4 disabled the wires/curves drawing whenever any faces would be generated (looks like this is a bit too 'agressive')
I think the goal should be to draw wires/curves for all parts that dont generate faces and dont draw them if we have faces.
Need to find a way to do this not on a per-object basis, but on a per-spline basis?
(there can always be splines that generate faces due to filling/extrude/etc and splines that dont in a single object)

If this turns out to be problematic to implement, it might be better to always draw curves/wires and faces at the same time...

CC @Jeroen Bakker (jbakker)

Philipp Oeser (lichtwerk) renamed this task from Curve Display is Broken to Curve Display hides all curves/wires as soon as any part has faces [due to filling/extrue/etc].Apr 30 2020, 10:44 AM
Philipp Oeser (lichtwerk) renamed this task from Curve Display hides all curves/wires as soon as any part has faces [due to filling/extrue/etc] to Curve Display hides all curves/wires as soon as any part has faces [due to filling/extrude/etc].Apr 30 2020, 10:46 AM
Philipp Oeser (lichtwerk) updated the task description. (Show Details)
Philipp Oeser (lichtwerk) changed the subtype of this task from "Report" to "Design".May 1 2020, 12:49 PM

I feel like this needs a design decission:

  • in which cases do we draw faces / wires / both ?
  • we could go with both (always): this report (T76196) would be closed, T59271 would be Invalid instead of resolved
  • we could keep as is (only draw wires if we dont have any faces) -- but make an exception for 2D curves with a Fill Mode other than None?

For the second case, see D7594: Fix T76196: Curve Display hides all curves/wires as soon as any part has faces [due to filling/extrude/etc]

All good points. The reason this seemed like a bug to me is that I loaded in a curve object and didn't see all the curves.

The first thing I did was switch from Solid viewport rendering to Wireframe rendering, with the expectation that if this was a fill issue, Wireframe shading would reveal that. That's how Adobe Illustrator works. You have a Wireframe "Outline" view mode and a Solid "Preview" view mode that removes any fills and just shows the raw vectors.

It seems to me that the solution is this:

If a curve object's Fill Mode is set to anything other than "None," it should attempt to fill (where applicable) in Solid shaded mode.
If a curve object's Fill Mode is set to anything other than "None," it should NOT fill when in Wireframe shaded mode.

Wireframe shaded view takes away the polygons fill and only leaves the edges. It should do the same thing for curves.

Any follow up to this? I tried loading the provided sample into the latest build (5/27/2020) and it's still not displaying correctly, whereas it does in 2.82a.

All good points. The reason this seemed like a bug to me is that I loaded in a curve object and didn't see all the curves.

The first thing I did was switch from Solid viewport rendering to Wireframe rendering, with the expectation that if this was a fill issue, Wireframe shading would reveal that. That's how Adobe Illustrator works. You have a Wireframe "Outline" view mode and a Solid "Preview" view mode that removes any fills and just shows the raw vectors.

It seems to me that the solution is this:

If a curve object's Fill Mode is set to anything other than "None," it should attempt to fill (where applicable) in Solid shaded mode.
If a curve object's Fill Mode is set to anything other than "None," it should NOT fill when in Wireframe shaded mode.

Wireframe shaded view takes away the polygons fill and only leaves the edges. It should do the same thing for curves.

Put up D7874: Fix T76196: Curve Display hides wires as soon as any part has faces [due to filling/extrude/etc] for review which does this