Page MenuHome

Bsurfaces Broken: Reorder splines, local view bug, misc errors.
Closed, ArchivedPublic

Description

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.

Details

Type
Bug

Event Timeline

Chris Lee (infin8eye) set Type to Bug.
Chris Lee (infin8eye) created this task.
Chris Lee (infin8eye) raised the priority of this task from to Needs Triage by Developer.

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

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

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.

Nice workaround Seth.
Smart thinking!

Brendon Murphy (meta-androcto) renamed this task 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..Aug 29 2015, 12:28 AM
Brendon Murphy (meta-androcto) raised the priority of this task from Normal to Confirmed, High.Sep 8 2015, 3:54 AM

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.

I would call @Joshua Leung (aligorith) to have a look if possible. This looks like a GP change affecting bsurfaces.


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.

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

After spending a few hours tracking things down, I've finally gotten to the bottom of the bug in T45573 (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.

Brendon Murphy (meta-androcto) lowered the priority of this task from Confirmed, High to Normal.Oct 20 2015, 1:42 PM

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 ?

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... :)