Inconsistent curve fill behaviour #36384

Closed
opened 2013-08-05 13:14:26 +02:00 by Duarte Farrajota Ramos · 11 comments

%%%--- Operating System, Graphics card ---
Windows XP/ Windows 7 64Bits

- Blender version with error, and version that worked ---

Long standing bug at least since 2.5

- Short description of error ---

Curve fill is inconsistent and behavior could be improved:
2D Curve always has fill on when extrude is zero
3D Curve never has fill even though blender is apparently fully capable of calculating the fill

- Steps for others to reproduce the error (preferably based on attached .blend file) ---

(See attached files)

  • A 2D curve (red circle in attached file) always always has fill even if the fill option is set to none; as opposed to the next circle which is set to 3D curve with full fill and no fill is visible.
    *A 3D curve as no fill as seen on the green object even if fill option is set to full, even though blender is fully capable of calculating the fill of a non planar curves (as seen on blue and yellow objects)
    *Yellow object (imported to Blender from Inkscape with the SVG import script) as a "3D" vertex with Z coordinate different than local zero even though it is a 2D curve (again showing that Blender is fully capable of calculating fill on non planar curves)

Suggestion/feature request #1 : If possible, while fixing these bugs (if they are indeed bugs) I would rather have blender allow filling 3D curves then disabling the option. I know this may lead to undesirable or uncontrolled triangulation of the resulting surfaces but this should be up to the user, and I find this better than not having that option at all, as this sometimes proves useful in certain situations.

Suggestion/feature request #2 : Would it be possible for Blender to keep the Z coordinates of curve's vertex saved even if the curve is set to 2D; so that when reverting to 3D the Z positions could be restored easily (Flatening could still be easily achievable by scaling to zero in Z axis.).%%%

%%%--- Operating System, Graphics card --- Windows XP/ Windows 7 64Bits - Blender version with error, and version that worked --- Long standing bug at least since 2.5 - Short description of error --- Curve fill is inconsistent and behavior could be improved: 2D Curve always has fill on when extrude is zero 3D Curve never has fill even though blender is apparently fully capable of calculating the fill - Steps for others to reproduce the error (preferably based on attached .blend file) --- (See attached files) * A 2D curve (red circle in attached file) always always has fill even if the fill option is set to none; as opposed to the next circle which is set to 3D curve with full fill and no fill is visible. *A 3D curve as no fill as seen on the green object even if fill option is set to full, even though blender is fully capable of calculating the fill of a non planar curves (as seen on blue and yellow objects) *Yellow object (imported to Blender from Inkscape with the SVG import script) as a "3D" vertex with Z coordinate different than local zero even though it is a 2D curve (again showing that Blender is fully capable of calculating fill on non planar curves) Suggestion/feature request #1 : If possible, while fixing these bugs (if they are indeed bugs) I would rather have blender allow filling 3D curves then disabling the option. I know this may lead to undesirable or uncontrolled triangulation of the resulting surfaces but this should be up to the user, and I find this better than not having that option at all, as this sometimes proves useful in certain situations. Suggestion/feature request #2 : Would it be possible for Blender to keep the Z coordinates of curve's vertex saved even if the curve is set to 2D; so that when reverting to 3D the Z positions could be restored easily (Flatening could still be easily achievable by scaling to zero in Z axis.).%%%

Changed status to: 'Open'

Changed status to: 'Open'

%%%I don't understand this report:

    • "as opposed to the next circle which is set to 3D curve with full fill and no fill is visible": I see yellow, red and blue objects and they all have a fill visible?
  • " fill as seen on the green object": there is no green object in the attached file?%%%
%%%I don't understand this report: * * "as opposed to the next circle which is set to 3D curve with full fill and no fill is visible": I see yellow, red and blue objects and they all have a fill visible? * " fill as seen on the green object": there is no green object in the attached file?%%%

%%%Sorry about the confusion, must have missed a file save before uploading the attachment.
Improved the reported file, I'll try to explain as simply and as clearly as possible, and it goes as follows:

*Yellow "SVG Import" object - 2D Curve with a "3D" vertex > Should not allow vertex with local Z different then zero
*Red " "Bezier Red" object - 2D curve with fill set to "None" > Fill is visible, should not have fill present
*Blue "Bezier Blue" object - 2D curve with non planar fill > It's correct! Shows blender can correctly calculate it
*Green "Bezier Green" object - 3D Curve with fill set to "Both" > Should show a fill, but has no visible one

Basically 2D Curve with extrude zero always as fill
3D curve never has fill
%%%

%%%Sorry about the confusion, must have missed a file save before uploading the attachment. Improved the reported file, I'll try to explain as simply and as clearly as possible, and it goes as follows: *Yellow "SVG Import" object - 2D Curve with a "3D" vertex > Should not allow vertex with local Z different then zero *Red " "Bezier Red" object - 2D curve with fill set to "None" > Fill is visible, should not have fill present *Blue "Bezier Blue" object - 2D curve with non planar fill > It's correct! Shows blender can correctly calculate it *Green "Bezier Green" object - 3D Curve with fill set to "Both" > Should show a fill, but has no visible one Basically 2D Curve with extrude zero always as fill 3D curve never has fill %%%

%%%Could not upload new file, so here it is http://www.pasteall.org/blend/23287%%%

%%%Could not upload new file, so here it is http://www.pasteall.org/blend/23287%%%

%%%Ok, new file I understand, this looks like a bug. Assigning to Sergey.%%%

%%%Ok, new file I understand, this looks like a bug. Assigning to Sergey.%%%

%%%Couple of comments:

  • I need to know how to reproduce the yellow curve from scratch.
  • Red curve is not a bug. It's confusing, but 2D curves without extrude are always filled. So curve fill option is only valid for rims in this case.
  • Blue object only filled in properly by an incident i think. In general i don't think scanfill works for non-planar cases (at least not old one, it could have been changed since bmesh). Anyway, what's wrong here?
  • Green object is also rather just confusing assumptions, than a bug. Fill doesn't affect on rims in this case. Set Depth to non-zero to see how Fill affects for 3D curves. To fill in the rims, use Fill Caps option together with Bevel Object.

So after all, bug is only happens with yellow object. Other cases i would not consider a bug and also would rather move them to TODO. Trying to make things more clear there would open the can of worms with backwards compatibility and so,%%%

%%%Couple of comments: - I need to know how to reproduce the yellow curve from scratch. - Red curve is not a bug. It's confusing, but 2D curves without extrude are always filled. So curve fill option is only valid for rims in this case. - Blue object only filled in properly by an incident i think. In general i don't think scanfill works for non-planar cases (at least not old one, it could have been changed since bmesh). Anyway, what's wrong here? - Green object is also rather just confusing assumptions, than a bug. Fill doesn't affect on rims in this case. Set Depth to non-zero to see how Fill affects for 3D curves. To fill in the rims, use Fill Caps option together with Bevel Object. So after all, bug is only happens with yellow object. Other cases i would not consider a bug and also would rather move them to TODO. Trying to make things more clear there would open the can of worms with backwards compatibility and so,%%%
Member

%%%(Sorry for the delay responding, on vacations with bad connectivity here)
Yeah I guess I must have misunderstood what all those settings mean then, maybe something to be clarified for blender 2.7 where backwards compatibility is less of a concern. Still cap fill for non planar beziers would be very useful, especially if it benefits from bmesh, hoping we don't loose that.
Also, nothing wrong with blue spline, just trying to prove my case, showing a non planar fill.

About yellow spline happens every time I use SVG importer. To recreate just simply import any drawing from an svg file (I create mine in Inkscape) and splines are imported as 2D by default, but all of them allow vertex to be displaced in Z until I press 3D and then 2D again; then it is no longer allowed and bug no longer manifests. My guess is there's some sort of bug with the importer.%%%

%%%(Sorry for the delay responding, on vacations with bad connectivity here) Yeah I guess I must have misunderstood what all those settings mean then, maybe something to be clarified for blender 2.7 where backwards compatibility is less of a concern. Still cap fill for non planar beziers would be very useful, especially if it benefits from bmesh, hoping we don't loose that. Also, nothing wrong with blue spline, just trying to prove my case, showing a non planar fill. About yellow spline happens every time I use SVG importer. To recreate just simply import any drawing from an svg file (I create mine in Inkscape) and splines are imported as 2D by default, but all of them allow vertex to be displaced in Z until I press 3D and then 2D again; then it is no longer allowed and bug no longer manifests. My guess is there's some sort of bug with the importer.%%%

%%%That as a bug in python API. Fixed now in svn rev59152.

As for other issues reported here, it's more up to making things more clear from communication POV. We're actually avare of the crapyness but didn't find better solution for now which wouldn't break existing files. Wouldn't consider this a bug, it's more up to 2.7 where we might break some compatibility.

But if you could think of more clear wording or interface for existing state of art, this kind of feedback would be really appreciated :)%%%

%%%That as a bug in python API. Fixed now in svn rev59152. As for other issues reported here, it's more up to making things more clear from communication POV. We're actually avare of the crapyness but didn't find better solution for now which wouldn't break existing files. Wouldn't consider this a bug, it's more up to 2.7 where we might break some compatibility. But if you could think of more clear wording or interface for existing state of art, this kind of feedback would be really appreciated :)%%%

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Member

%%%Thanks, you guys are the best.
I'll study the case to see if I completely understood what all settings mean, and then try to think of a new way to expose the functionality without breaking anything and being the least invasive possible.

If I come up with something decent I'll report here. Thanks again :)%%%

%%%Thanks, you guys are the best. I'll study the case to see if I completely understood what all settings mean, and then try to think of a new way to expose the functionality without breaking anything and being the least invasive possible. If I come up with something decent I'll report here. Thanks again :)%%%
Member

%%%Hello again, ok so here what I've come up with. If I understood it correctly these fill settings concern mostly the bevel option, so in an attempt to keep things simple and not break backwards compatibility I would propose just simply renaming the options to be more consistent and avoid future misunderstandings, and if possible perhaps changing the place in the UI where the settings are accessible.

So instead of "Fill" which seems to vague and confusing I would name it something along the lines of "Bevel Placement", "Bevel Options", "Bevel type" or "Bevel Shape" since from that POV the available options will make more sense and be more easy to understand.

Then inside the dropdown menu we currently have two different set of options, one for 2D and another for 3D curves which in the end seem to achieve the same end results, so I would propose unifying them:

2D Curve 3D Curve Proposed unification (conservative) Proposed unification (aggressive)
Both Half Half Outside
Front Front Front Top
Back Back Back Bottom
None Full Full Full

Also if necessary these options could be placed next to the "Bevel Depth" box under the "Geometry" panel, that way they would probably be more in context with what they affect.

What do you think about these changes, better or worse?%%%

%%%Hello again, ok so here what I've come up with. If I understood it correctly these fill settings concern mostly the bevel option, so in an attempt to keep things simple and not break backwards compatibility I would propose just simply renaming the options to be more consistent and avoid future misunderstandings, and if possible perhaps changing the place in the UI where the settings are accessible. So instead of "Fill" which seems to vague and confusing I would name it something along the lines of "Bevel Placement", "Bevel Options", "Bevel type" or "Bevel Shape" since from that POV the available options will make more sense and be more easy to understand. Then inside the dropdown menu we currently have two different set of options, one for 2D and another for 3D curves which in the end seem to achieve the same end results, so I would propose unifying them: | 2D Curve | 3D Curve | Proposed unification (conservative) | Proposed unification (aggressive) | | -- | -- | -- | -- | | Both | Half | Half | Outside | Front | Front | Front | Top | Back | Back | Back | Bottom | None | Full | Full | Full Also if necessary these options could be placed next to the "Bevel Depth" box under the "Geometry" panel, that way they would probably be more in context with what they affect. What do you think about these changes, better or worse?%%%
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
4 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#36384
No description provided.