Bsurfaces Broken: Reorder splines, local view bug, misc errors. #39664

Closed
opened 2014-04-09 21:14:21 +02:00 by Chris Lee · 29 comments

{F84384}System Information
Windows 7
Intel Core2 Extreme 3GHz
8GB RAM
NVIDIA GeForce 8800 GTS 512

Blender Version
Broken: 2.70

Short description of error
Bsurfaces addon unexpected behaviour bug:
'Add surface' to bezier curves results in unexpected behaviour. Surface is created in an irregular sequence.
'Reorder Splines' completely fails to have any effect on the result of the curves order mentioned above.

Exact steps for others to reproduce the error
Enable the Bsurfaces addon.
In object mode I created five bezier curves, joined them, then shift selected a single faced object.
In edit mode, go to Tool Shelf, Bsurfaces, click 'add surface'.

Results depend on input before clicking 'add surface':
If the curves were joined in the same sequential order (that is, the order they were selected before hitting ctrl J) that they were created (bottom curve created first, up to the top curve last), the 'add surface' works as predicted with a continuous smooth mesh created along the curves.
If the curves were joined in a more random order the 'add surface' results in a mesh created in an undesired way (doubles back on itself).
If the curves were joined in the opposite sequential order (top curve to bottom curve, instead of the bottom curve to the top curve), then you get a seemingly random, undesired result (doubles back on itself as if they were selected in a different order). Repeated tests displayed the same undesired result, so not technically random.

Desired result:
The mesh should be created from each curve to the next, nearest curve, irrelevant of the order in which they were joined together or originally created.
Or at the very least it should depend on either the order they were created or the order they were joined together, not both of those being identical.

Related broken tool:
Using 'reorder splines' does not make a difference. It should act as a workaround, should a mesh be created from curves in the wrong order, but it had no effect.
Tested repeatedly and it appears that 'reorder splines' just does not work.

Please note that testing was only done using Bezier curves and curves generated from pre-existing edgeloops, converted to curves. I did not test the Grease Pencil method, which is more commonly used. It may work as intended, so you may need to compare that method.

See attached file with separate curves, with duplicated sets of curves joined in different orders, and the 'add surface' result.

{[F84384](https://archive.blender.org/developer/F84384/BlenderBug_bsurfaces_curves_addsurface01.blend)}**System Information** Windows 7 Intel Core2 Extreme 3GHz 8GB RAM NVIDIA GeForce 8800 GTS 512 **Blender Version** Broken: 2.70 **Short description of error** Bsurfaces addon unexpected behaviour bug: 'Add surface' to bezier curves results in unexpected behaviour. Surface is created in an irregular sequence. 'Reorder Splines' completely fails to have any effect on the result of the curves order mentioned above. **Exact steps for others to reproduce the error** Enable the Bsurfaces addon. In object mode I created five bezier curves, joined them, then shift selected a single faced object. In edit mode, go to Tool Shelf, Bsurfaces, click 'add surface'. Results depend on input before clicking 'add surface': If the curves were joined in the **same** sequential order (that is, the order they were selected before hitting ctrl J) that they were created (bottom curve created first, up to the top curve last), the 'add surface' works as predicted with a continuous smooth mesh created along the curves. If the curves were joined in a more random order the 'add surface' results in a mesh created in an undesired way (doubles back on itself). If the curves were joined in the opposite sequential order (top curve to bottom curve, instead of the bottom curve to the top curve), then you get a seemingly random, undesired result (doubles back on itself as if they were selected in a different order). Repeated tests displayed the same undesired result, so not technically random. Desired result: The mesh should be created from each curve to the next, nearest curve, irrelevant of the order in which they were joined together or originally created. Or at the very least it should depend on **either** the order they were created **or** the order they were joined together, not both of those being identical. Related broken tool: Using 'reorder splines' does not make a difference. It should act as a workaround, should a mesh be created from curves in the wrong order, but it had no effect. Tested repeatedly and it appears that 'reorder splines' just does not work. Please note that testing was only done using Bezier curves and curves generated from pre-existing edgeloops, converted to curves. I did not test the Grease Pencil method, which is more commonly used. It may work as intended, so you may need to compare that method. See attached file with separate curves, with duplicated sets of curves joined in different orders, and the 'add surface' result.
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @ChrisLee

Added subscriber: @ChrisLee

#42805 was marked as duplicate of this issue

#42805 was marked as duplicate of this issue

#45589 was marked as duplicate of this issue

#45589 was marked as duplicate of this issue

#39666 was marked as duplicate of this issue

#39666 was marked as duplicate of this issue

#45573 was marked as duplicate of this issue

#45573 was marked as duplicate of this issue
Eclectiel L was assigned by Bastien Montagne 2014-04-09 21:35:35 +02:00
Author

The attached file was accidentally put at the start of the description, before 'System Information'.
You may want to move that to the bottom of the description text.

Also, I was advised that eclectiel was no longer active on blenderartists.org:
http://blenderartists.org/forum/showthread.php?225190-Bsurfaces-v1-5&p=2620848&viewfull=1#post2620848

Will he still see this bug report?

Thank you,
Chris Lee

The attached file was accidentally put at the start of the description, before 'System Information'. You may want to move that to the bottom of the description text. Also, I was advised that eclectiel was no longer active on blenderartists.org: http://blenderartists.org/forum/showthread.php?225190-Bsurfaces-v1-5&p=2620848&viewfull=1#post2620848 Will he still see this bug report? Thank you, Chris Lee
Author

Can somebody else step up to have a look at Bsurfaces bugs?

Can somebody else step up to have a look at Bsurfaces bugs?

Added subscriber: @quantumanomaly

Added subscriber: @quantumanomaly

I experienced this bug today. Seems it is still a problem in 2.72 (95182d1)

OS X 10.8.5
ATI Radeon HD 4850 512 MB

See the Quick Guide, "strokes reorder" section for an explanation of how the feature is supposed to behave.
https://app.box.com/s/5ygw6vkzxkag9dh53uuv

I experienced this bug today. Seems it is still a problem in 2.72 (95182d1) OS X 10.8.5 ATI Radeon HD 4850 512 MB See the Quick Guide, "strokes reorder" section for an explanation of how the feature is supposed to behave. https://app.box.com/s/5ygw6vkzxkag9dh53uuv

Since it's unclear if anyone intends to fix this any time soon, I'm going to post a workaround I found for the time being.
It takes a bit more time than the Grease Pencil, but it's not too bad, and at least it makes curve re-ordering possible.

Here is an animated GIF tutorial that summarizes the process:
http://cc4.co/YSRA

And here is a written guide in more detail:

(1) If your curve object is made up of multiple paths, Separate (P key in Edit Mode) out each into its own curve object.
If making curves you think you might want to reorder later, just make them as separate curve objects from the start.

(2) Once you have the shape you want built out of curves, add bezier curve objects (such as bezier circles) in a sequential stack. Make sure you can tell visually which comes before which because these are your ordering objects.

(3) Join (Ctrl J in Object Mode) the curve object of your structure you desire to be first to the ordering curve object you made first. The joined object takes its origin point and order from the last one that was selected. Repeat for other curve objects, joining each structure curve into its corresponding ordering curve.

(4) Select all curve objects and join them into one. (They retain their order in relation to each other.) Then in Edit Mode delete the unwanted geometry that came from the ordering curves (stack of bezier circles for example).

(5) Now do the rest as you normally would use BSurfaces. Save your .blend file since BSurfaces is not integrated into Blender's undo history and your curve object you worked so hard on will be permanently destroyed in the process of generating your BSurfaces mesh. In Object Mode Add>Mesh>Plane. Select this plane, then Shift-select your curve object, Tab into Mesh Edit Mode and click "Add Surface" from the BSurfaces panel.

Since it's unclear if anyone intends to fix this any time soon, I'm going to post a workaround I found for the time being. It takes a bit more time than the Grease Pencil, but it's not too bad, and at least it makes curve re-ordering possible. Here is an animated GIF tutorial that summarizes the process: http://cc4.co/YSRA And here is a written guide in more detail: (1) If your curve object is made up of multiple paths, Separate (P key in Edit Mode) out each into its own curve object. If making curves you think you might want to reorder later, just make them as separate curve objects from the start. (2) Once you have the shape you want built out of curves, add bezier curve objects (such as bezier circles) in a sequential stack. Make sure you can tell visually which comes before which because these are your ordering objects. (3) Join (Ctrl J in Object Mode) the curve object of your structure you desire to be first to the ordering curve object you made first. The joined object takes its origin point and order from the last one that was selected. Repeat for other curve objects, joining each structure curve into its corresponding ordering curve. (4) Select all curve objects and join them into one. (They retain their order in relation to each other.) Then in Edit Mode delete the unwanted geometry that came from the ordering curves (stack of bezier circles for example). (5) Now do the rest as you normally would use BSurfaces. Save your .blend file since BSurfaces is not integrated into Blender's undo history and your curve object you worked so hard on will be permanently destroyed in the process of generating your BSurfaces mesh. In Object Mode Add>Mesh>Plane. Select this plane, then Shift-select your curve object, Tab into Mesh Edit Mode and click "Add Surface" from the BSurfaces panel.
Author

Nice workaround Seth.
Smart thinking!

Nice workaround Seth. Smart thinking!
Member
Added subscribers: @BrendonMurphy, @Sergey, @zanqdo, @Supamon, @jorditorres, @mont29
Eclectiel L was unassigned by Brendon Murphy 2015-08-29 00:26:47 +02:00
Brendon Murphy self-assigned this 2015-08-29 00:26:47 +02:00
Brendon Murphy changed title from Bsurfaces addon unexpected behaviour bug, when using curves for 'add surface'. 'Reorder splines' appears to be broken. to Bsurfaces Broken: Reorder splines, local view bug, misc errors. 2015-08-29 00:28:16 +02:00
Member

hi, action will need to be taken on this. With no maintainer, this popular tool needs an interested party to step up & supply some fixes. I will have to start disabling broken features soon which may limit the future usability of this addon.

hi, action will need to be taken on this. With no maintainer, this popular tool needs an interested party to step up & supply some fixes. I will have to start disabling broken features soon which may limit the future usability of this addon.

Hi,

In my expirience, if it serves, I ovserved is something related to the LOCAL VIEW. Other addons also have similar problems with local view.

Hi, In my expirience, if it serves, I ovserved is something related to the LOCAL VIEW. Other addons also have similar problems with local view.
Member

Added subscriber: @JoshuaLeung

Added subscriber: @JoshuaLeung
Member

I would call @JoshuaLeung to have a look if possible. This looks like a GP change affecting bsurfaces.

I would call @JoshuaLeung to have a look if possible. This looks like a GP change affecting bsurfaces.
Member

mesh_bsurfaces.py
Uploading initial attempted fix file. @ line 3488
this may fix reorder splines when converted from grease pencil drawn on mesh object. I'm unsure of this fix & need to test furthur. I'm not sure if my fix simply bypasses reorder splines, or actually works.
reorder splines does not work when converted from grease pencil drawn on curve object/s.
I could really use some help here.
Thanks.

[mesh_bsurfaces.py](https://archive.blender.org/developer/F233918/mesh_bsurfaces.py) Uploading initial attempted fix file. @ line 3488 this may fix reorder splines when converted from grease pencil drawn on mesh object. I'm unsure of this fix & need to test furthur. I'm not sure if my fix simply bypasses reorder splines, or actually works. reorder splines does not work when converted from grease pencil drawn on curve object/s. I could really use some help here. Thanks.
Member

disabled reorder splines button in ui. commit: f78b58128b
is there an operator in blender to correctly reorder splines & grease pencil strokes?

disabled reorder splines button in ui. commit: f78b58128b is there an operator in blender to correctly reorder splines & grease pencil strokes?
Member

After spending a few hours tracking things down, I've finally gotten to the bottom of the bug in #45573 (it's simpler to reproduce that case).

The problem seems to come down to the

       bpy.ops.curve.separate('INVOKE_REGION_WIN')

call in the "sp_idx" loop. Simply changing this to

       bpy.ops.curve.separate('EXEC_REGION_WIN')

makes the problems go away, as now the unordered_splines dict will not be empty.

The cause is probably that a confirmation popup was added to the separate operator at some point, so now the invoke fails, as it cannot get user input to confirm.

After spending a few hours tracking things down, I've finally gotten to the bottom of the bug in #45573 (it's simpler to reproduce that case). The problem seems to come down to the ``` bpy.ops.curve.separate('INVOKE_REGION_WIN') ``` call in the "sp_idx" loop. Simply changing this to ``` bpy.ops.curve.separate('EXEC_REGION_WIN') ``` makes the problems go away, as now the unordered_splines dict will not be empty. The cause is probably that a confirmation popup was added to the separate operator at some point, so now the invoke fails, as it cannot get user input to confirm.
Member
EDIT: It should be https://developer.blender.org/diffusion/BA/browse/master/mesh_bsurfaces.py;f78b58128b4c22e92d2e6ec1f2cc21a68fbabc56$3468
Member

commit fix by @JoshuaLeung 870571b107
A step closer to resolving issues with this addon.

commit fix by @JoshuaLeung 870571b107 A step closer to resolving issues with this addon.

Added subscriber: @RemigiuszFiedler

Added subscriber: @RemigiuszFiedler

Added subscriber: @AleksandarPPA

Added subscriber: @AleksandarPPA

This is still active problem ? I am trying to reorder splines and it doesnt work in 2.76 ........

This is still active problem ? I am trying to reorder splines and it doesnt work in 2.76 ........

If its solved how do i fix it ? Can u all give step by step explanataion ? I have to edit script ? How do i do it ?

If its solved how do i fix it ? Can u all give step by step explanataion ? I have to edit script ? How do i do it ?
Member

Changed status from 'Open' to: 'Archived'

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

hi, Archiving this mixed report. For Specific Bsurfaces issues, please create a new report & check the issue is not reported already. Please provide simple test file & follow report guidelines.

hi, Archiving this mixed report. For Specific Bsurfaces issues, please create a new report & check the issue is not reported already. Please provide simple test file & follow report guidelines.

Hi Brendon and others ! FOUND SOLUTION (sort of)
for any1 who gets this kind of errors ur solution is in version of Bsurfaces so download latest ofc and clean up your blender every file and reinstall fresh one and when u load old projects UNCHECK "LOAD UI" seems that blender "remembers" some things from old projects and then u get these errors from old bsurfaces or ... whatever... :)

Hi Brendon and others ! FOUND SOLUTION (sort of) for any1 who gets this kind of errors ur solution is in version of Bsurfaces so download latest ofc and clean up your blender every file and reinstall fresh one and when u load old projects UNCHECK "LOAD UI" seems that blender "remembers" some things from old projects and then u get these errors from old bsurfaces or ... whatever... :)
Sign in to join this conversation.
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-addons#39664
No description provided.