Regression: Curve wire line not displayed in edit mode when it has evaluated mesh/point/volume #96138

Open
opened 2022-03-02 23:21:56 +01:00 by Hans Goudey · 25 comments
Member

Broken: 3.0, 3.1, 3.2
Caused by b9febb54a4

The original line for edit mode curves is not displayed in edit mode .

This change only applies when the curve is changed during evaluation, for example, when it is replaced by an evaluated "tube" mesh, or points, or a volume, etc.

Before After
image.png image.png
(Ignore the change in lightness there, it's just a different UI scale)
Broken: 3.0, 3.1, 3.2 Caused by b9febb54a4 The original line for edit mode curves is not displayed in edit mode . This change only applies when the curve is changed during evaluation, for example, when it is replaced by an evaluated "tube" mesh, or points, or a volume, etc. | Before | After | | -- | -- | | ![image.png](https://archive.blender.org/developer/F12894588/image.png) | ![image.png](https://archive.blender.org/developer/F12894666/image.png) | (Ignore the change in lightness there, it's just a different UI scale)
Author
Member

Added subscriber: @HooglyBoogly

Added subscriber: @HooglyBoogly

#99926 was marked as duplicate of this issue

#99926 was marked as duplicate of this issue
Author
Member

A couple things to say here:

  • Drawing of edit mode data for curves seems like a fragile system to me, it's not clear how this would be fixed.
  • We're planning to completely replace the current curve object soon anyway.
  • Personally I like not seeing the line in edit mode, I think it just gets in the way (though I understand others don't share this opinion).
A couple things to say here: - Drawing of edit mode data for curves seems like a fragile system to me, it's not clear how this would be fixed. - We're planning to completely replace the current curve object soon anyway. - Personally I *like* not seeing the line in edit mode, I think it just gets in the way (though I understand others don't share this opinion).
Hans Goudey changed title from Curve Line not always displayed in edit mode to Curve wire line not always displayed in edit mode 2022-03-02 23:28:56 +01:00
Author
Member

Changed status from 'Needs Triage' to: 'Confirmed'

Changed status from 'Needs Triage' to: 'Confirmed'

Added subscriber: @funksy

Added subscriber: @funksy
Member

Added subscribers: @DavidKozma, @viadvena, @item412, @lichtwerk

Added subscribers: @DavidKozma, @viadvena, @item412, @lichtwerk
Member

Line misses in objectmode, too.
For me, it just makes it harder to line things up exactly (if I dont see the line the generated geometry is based upon).
Personally, I would still think this is High priority.

Line misses in objectmode, too. For me, it just makes it harder to line things up exactly (if I dont see the line the generated geometry is based upon). Personally, I would still think this is High priority.
Philipp Oeser changed title from Curve wire line not always displayed in edit mode to Regression: Curve wire line not displayed when geometry is generated for it (e.g. bevel, extrude, ...) 2022-03-03 07:49:11 +01:00

Added subscriber: @aicedor

Added subscriber: @aicedor

Hello. Please leave the curve line visible so it can be selected (or give it a new show/hide function in the Overlays menu). It would also be nice to be able to choose the color of the curve and its thickness regardless of the wireframe settings for the mesh (this is more like a feature request, I'll prepare a proposal). Often curves in object mode in the viewport are lost in the background of the mesh.

Hello. Please leave the curve line visible so it can be selected (or give it a new show/hide function in the Overlays menu). It would also be nice to be able to choose the color of the curve and its thickness regardless of the wireframe settings for the mesh (this is more like a feature request, I'll prepare a proposal). Often curves in object mode in the viewport are lost in the background of the mesh.
Author
Member

The line isn't missing in object mode. It's not meant to be displayed in that case, for a few reasons:

  • Conceptually, the curve has been replaced by a mesh.
  • Performance wise, keeping the evaluated curve around and drawing it would be slower.
  • That's how it was before (just tested 2.93-- once I give a curve bevel depth, the line is no longer rendered in object mode).

I agree edit mode should be fixed, to display the wire edges of the original curve, just like in mesh edit mode.

The line isn't missing in object mode. It's not meant to be displayed in that case, for a few reasons: - Conceptually, the curve has been replaced by a mesh. - Performance wise, keeping the evaluated curve around and drawing it would be slower. - That's how it was before (just tested 2.93-- once I give a curve bevel depth, the line is no longer rendered in object mode). I agree edit mode should be fixed, to display the wire edges of the **original** curve, just like in mesh edit mode.
Hans Goudey changed title from Regression: Curve wire line not displayed when geometry is generated for it (e.g. bevel, extrude, ...) to Regression: Curve wire line not displayed in edit mode when it has evaluated mesh/point/volume 2022-03-03 14:26:12 +01:00
Member

It is missing in objectmode when

  • viewport shading mode is set to wireframe
  • object viewport shading options include wireframe
    This was working in 2.93.
    I dont see a reason for changing this, this has never been discussed anywhere, has it?
    Of course, #modeling module is free to decide and if this cannot be done anymore for performance reasons than so be it, but just because the curve now has a mesh associated with it is not an entirely convincing argument for not drawing the curve anymore in my opinion.
It **is missing** in objectmode when - viewport shading mode is set to wireframe - object viewport shading options include wireframe This was working in 2.93. I dont see a reason for changing this, this has never been discussed anywhere, has it? Of course, #modeling module is free to decide and if this cannot be done anymore for performance reasons than so be it, but just because the curve now has a mesh associated with it is not an entirely convincing argument for not drawing the curve anymore in my opinion.
Philipp Oeser changed title from Regression: Curve wire line not displayed in edit mode when it has evaluated mesh/point/volume to Regression: Curve wire line not displayed in edit mode (or wireframe display mode) when it has evaluated mesh/point/volume 2022-03-03 14:48:19 +01:00
Author
Member

That behavior change should have been mentioned more explicitly in the original commit message, but it is a fundamental aspect of the current design, which is basically: creating a mesh from the curve replaces the curve. The resulting mesh does not have any specific knowledge of the curve it was generated from.

This is a natural consequence of generalizing the result types from object evaluation. Here's an example. Imagine you use the curve to mesh node to generate a tube mesh for a curve, then significantly deform it, and apply more procedural operations. Then you combine that with another procedurally curve for the final result of object evaluation. How does Blender know the initial curve used to generate the tube mesh, in order to display it in wireframe mode? It doesn't, that's just not possible in the general case.

Part of the change in that commit was eliminating the "quasi-mesh/quasi-curve" state that still persisted in the curve modifier stack through types like DispList. Showing the wire edges in object mode might make sense in that case, but now that this half-way state is gone, that's no longer the case.

Again, edit mode is different, because the original data is just a curve in these cases, so the wire lines can be drawn.


In the future, could we please have these conversations in comments before editing the task?

That behavior change should have been mentioned more explicitly in the original commit message, but it is a fundamental aspect of the current design, which is basically: creating a mesh from the curve replaces the curve. The resulting mesh does not have any specific knowledge of the curve it was generated from. This is a natural consequence of generalizing the result types from object evaluation. Here's an example. Imagine you use the curve to mesh node to generate a tube mesh for a curve, then significantly deform it, and apply more procedural operations. Then you combine that with another procedurally curve for the final result of object evaluation. How does Blender know the initial curve used to generate the tube mesh, in order to display it in wireframe mode? It doesn't, that's just not possible in the general case. Part of the change in that commit was eliminating the "quasi-mesh/quasi-curve" state that still persisted in the curve modifier stack through types like `DispList`. Showing the wire edges in object mode might make sense in that case, but now that this half-way state is gone, that's no longer the case. Again, edit mode is different, because the original data is just a curve in these cases, so the wire lines can be drawn. --- In the future, could we please have these conversations in comments before editing the task?

Removed subscriber: @item412

Removed subscriber: @item412

From a user's standpoint, I wouldn't miss seeing the curve line in Wireframe mode, just because that mode is very cluttered with actual edges anyway.
BUT I think having at least an overlay which shows all curves in object mode (even if they have meshes generated) is a must.

In 2.93 if - I really wanted - I could achieve this with turning ON wireframes but setting their Opacity to 0. That still left the curves show up.
image.png

the same option leaves me nothing in newer versions of course, so a separate curve visibility option would be very nice!

Anyway thank you for properly dealing with the bug.

From a user's standpoint, I wouldn't miss seeing the curve line in Wireframe mode, just because that mode is very cluttered with actual edges anyway. BUT I think having at least an overlay which shows all curves in object mode (even if they have meshes generated) is a must. In 2.93 if - I really wanted - I could achieve this with turning ON wireframes but setting their Opacity to 0. That still left the curves show up. ![image.png](https://archive.blender.org/developer/F12895822/image.png) the same option leaves me nothing in newer versions of course, so a separate curve visibility option would be very nice! Anyway thank you for properly dealing with the bug.
Author
Member

You can have that visualization if you join the original curve with the evaluated mesh with geometry nodes. I realize that's not the same thing, I just want to point out that the flexibility and generality of the new design brings options like that. When we have a default "to mesh" node group in the asset browser, there could be a boolean option like "keep curve" for this use case.

The new Curves object type will have an implicit surface rendered in Cycles and hopefully EEVEE, eventually. In those cases such an option might make sense.

You can have that visualization if you join the original curve with the evaluated mesh with geometry nodes. I realize that's not the same thing, I just want to point out that the flexibility and generality of the new design brings options like that. When we have a default "to mesh" node group in the asset browser, there could be a boolean option like "keep curve" for this use case. The new `Curves` object type will have an implicit surface rendered in Cycles and hopefully EEVEE, eventually. In those cases such an option might make sense.
Member

Split objectmode into own report, see #96167 (Regression: Curve wire line not displayed in wireframe display mode when it has evaluated mesh/point/volume)

Split objectmode into own report, see #96167 (Regression: Curve wire line not displayed in wireframe display mode when it has evaluated mesh/point/volume)
Philipp Oeser changed title from Regression: Curve wire line not displayed in edit mode (or wireframe display mode) when it has evaluated mesh/point/volume to Regression: Curve wire line not displayed in edit mode when it has evaluated mesh/point/volume 2022-03-04 17:08:33 +01:00
Member

Added subscriber: @ThomasDinges

Added subscriber: @ThomasDinges
Member

@ThomasDinges , @HooglyBoogly : since this is a regression, just asking if this is still relevant for 3.1?

@ThomasDinges , @HooglyBoogly : since this is a regression, just asking if this is still relevant for 3.1?
Author
Member

No, I don't think so, since the right way to fix it isn't clear to me.

No, I don't think so, since the right way to fix it isn't clear to me.

I could only test it now, and I finally understand how you've split the bug into 2 tasks.
Yes, the visible object selection in edit mode was bothersome, and thanks a ton for fixing it!
But this one above is the one which makes it hard to work with curves now. We need to see them in edit mode no matter what!

I could only test it now, and I finally understand how you've split the bug into 2 tasks. Yes, the visible object selection in edit mode was bothersome, and thanks a ton for fixing it! But this one above is the one which makes it hard to work with curves now. We need to see them in edit mode no matter what!
Author
Member

Added subscribers: @MikhailRachinskiy, @PratikPB2123

Added subscribers: @MikhailRachinskiy, @PratikPB2123

I think it should be out of the question, that edit mode should allow user to see the curve they're editing, it does not make sense to see control points, but not a curve.
By curve I mean original datablock.

I think it should be out of the question, that edit mode should allow user to see the curve they're editing, it does not make sense to see control points, but not a curve. By curve I mean original datablock.

Yes, 100% (and now I'm waiting for this regression fix for about 8 months)

I mean absolutely no offense but that's only a programmer's logic that if you turn something into another datablock non-destructively then that's done. It's different now, and you don't need to see the original data's editing elements when you'd like to change something.

OFF topic: the Bevel modifier kills Edit mode visibility of other constructive modifiers. That's a similar usability PITA as not seeing the curve, but hinders work way less than this.

Yes, 100% (and now I'm waiting for this regression fix for about 8 months) I mean absolutely no offense but that's only a programmer's logic that if you turn something into another datablock non-destructively then that's done. It's different now, and you don't need to see the original data's editing elements when you'd like to change something. OFF topic: the Bevel modifier kills Edit mode visibility of other constructive modifiers. That's a similar usability PITA as not seeing the curve, but hinders work way less than this.
Contributor

Added subscriber: @dupoxy

Added subscriber: @dupoxy
Author
Member

To clarify, what I meant above is that we shouldn't try to somehow display a wire line in object mode when the object evaluates to a mesh. It makes sense to display in edit mode, or at least it should be an option.
That said, the existing curve object type is being replaced in the next couple releases, and realistically I don't think someone will have the time to fix this before that, so I'll make this a "known issue".

To clarify, what I meant above is that we shouldn't try to somehow display a wire line in object mode when the object evaluates to a mesh. It makes sense to display in edit mode, or at least it should be an option. That said, the existing curve object type is being replaced in the next couple releases, and realistically I don't think someone will have the time to fix this before that, so I'll make this a "known issue".
Philipp Oeser removed the
Interest
Nodes & Physics
label 2023-02-10 08:44:07 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
9 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#96138
No description provided.