GSoC 2016 - Improvements to Bezier Curves

I am able to guess where some of those errors are coming from, but I though I had fixed them all. Could you please send me all those files? That way I would be able to see what is going on under the hood.

By the way, I just finished the fillet operator :slight_smile:

Sure here you go.

Most of them I never saved to disk but I think I gathered those examples in my startup file throughout the testing sessions.

startup.blend (405 KB)

Rally excited about the bevel operator, it will certainly be one of the most useful.

New build is live = GSoC-2016-improved_extrusion_Win7.x64-c6200a6

Thanks tungerz! I did a major cleanup of the Extend and Trim code, and it should be much more stable now (thought the batch extend code is still messy). Give it a go, dphantom!

Testing on the way!

Hey, fillet is starting to work, awesome!

It’s not yet working as expected, it seems to fillet in ‘length percentage’ mode. The fillet radius is defined as a fraction or percentage of the length of the curve segment yielding uneven results on vertex belonging to curve segments of different sizes. I know it’s not yet finished, but dynamic mouse input would also be nice like mesh beveling.

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug14.gif

Here is a case that fails often while trimming

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug13.gif

Still got a few crashes, but all in all this build seems more stable. This time I got some logs, though these seem quite generic and devoid of information to my layman eyes. They were mostly using Batch extend which you state is not yet up to par with the others, so nothing too troubling

Switching to fully guarded memory allocator.
Read new prefs: ##\GSoC-2016-improved_extrusion\2.77\c
onfig\userpref.blend
AL lib: (EE) UpdateDeviceParams: Failed to set 48000hz, got 192000hz instead
found bundled python: ##\GSoC-2016-improved_extrusion\
2.77\python
Memoryblock batch_extend2: end corrupt
Memoryblock batch_extend2: end corrupt
Memoryblock batch_extend2: end corrupt
Memoryblock batch_extend2: end corrupt
Memoryblock batch_extend2: end corrupt
Error: EXCEPTION_ACCESS_VIOLATION
wm_event_do_handlers: Handling event
wmEvent  type:1 / LEFTMOUSE, val:2 / RELEASE,
         shift:0, ctrl:0, alt:0, oskey:0, keymodifier:0,
         mouse:(1484,539), ascii:' ', utf8:'', keymap_idname:(null), pointer:000
000000EFEF818
WM_operator_last_properties_init: loading previous properties for 'CURVE_OT_trim
_curve'
Error: EXCEPTION_ACCESS_VIOLATION
wm_event_do_handlers: Handling event
wmEvent  type:1 / LEFTMOUSE, val:2 / RELEASE,
         shift:0, ctrl:0, alt:0, oskey:0, keymodifier:0,
         mouse:(1061,848), ascii:' ', utf8:'', keymap_idname:(null), pointer:000
000000ECFF9C8
Error: EXCEPTION_ACCESS_VIOLATION

I’ll keep playing with this and see if I find anything else usefull

Keep up the great work, and thanks to tungerz for the Windows builds :slight_smile:
Let me know if there’s any more specific testing I need to be doing

Since so many years of GSOC, i have for the first time the feeling, a student could reach his aims regarding th curves (nurbs or bezier) section of blender.
So many failed in this part of blender, wish you genio84 that all these nice stuff goes in master!
Best Regards!

Really praying that this makes to master too, hopefully for the 2.8 release.
These are very needed and useful tools

Answering your weekly report in the mailing list, don’t worry about it, your operators are not damaging or corrupting the curves.

You were probably just unaware of the Radius Property of the curve, that allows tweaking overall bevel or extrusion percentage on a per vertex basis.

You operators are probably unaware of this property and ignore or reset it, instead of interpolating it from the neighboring vertex. Setting the radius back to 1 through the UI fixes the problem.

http://www.duarteramos.pt/media/share/Radius.gif

While your at it don’t forget to check for the other per-vertex properties like Tilt and Weight.

I’ll be going on vacations this weekend, so I’ll be away at least until the beginning of September.
Until then I won’t have reliable access to a stable Internet connection so downloading and testing builds will be harder for me.
I’ll probably be less active here but it doesn’t mean I lost interest. I’ll still have mobile internet though, so I’ll still be reachable, and curiosity won’t let me stay away for long.

Keep up the great work so far

Great insight dphantom! This is why it is extremely helpful to work with an artist who knows what’s involved :slight_smile:

I added radius, weight and tilt interpolation to my todo list. I will try to implement it before the end-term on Friday.

End term is Friday already? psshh… time flies!

For me this was a success already, only essential thing missing for me so far is fixing the asymmetrical fillet.
Well good luck in your final week push! I’ll keep an extra eye out, let me know if you need anything.

Too bad the GSoC period only affords ample development time for US students, those living in Europe and countries that don’t follow the old agrarian schedule have to deal with University work year-round (which includes much of that period and only get lots of time just a week or so before it’s pencils down).

Now I course in the context of Blender, the foreign schedules are worth caring about since they’re bound to impact the progress of your favorite new feature.

Great achievement on curves… highly anticipating final results.

@Ace
Yup, i also prefer agrarian VS cath. church. Feels to constraint and out of touch with reality.
Soon the conference…

New build is up = GSoC-2016-improved_extrusion_Win7.x64-64110de

@tungerz Thank you so much for the continous upate!

No problem, just trying to help the devs out some, wish I could have had more time to build others,
Would’ve built mantaflow but, was never enabled for win, (Manta-no flow for win peeps) :stuck_out_tongue:

Anywho, the rock stars are the devs, and the testing from you guys to help them polish their code.

Cheers,
~Tung

Well I havee to say I’m impresed

Lots of new features and tools to play with I had not yet noticed before.
Curve offset operator, curve fillet and curve chamfer too! Awesome work

Here are a few minor glitches I found on simple test models made on-the-fly, if you still have any time left before final.

Trim doesn’t seem to like close squares

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug15.gif

Fillet on consecutive vertex modifies the straight segment between them

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug16.gif

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug19.gif

Changing one vertex to corner seems to confuse the offset operator

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug18.gif

Also one small comment, probably add a check for chamfer, to prevent chamfering zero-angled segments, like the one in place for fillet operator. As it currently stands it is sort of corrupting the curve and adding a vertex in 3d space even for 2D curves.

http://www.duarteramos.pt/media/share/GSOC_BezierCurve_Bug20.gif

On a positive note all operators seem to be a lot more stable now, still some random non-reproducible crashes, but overall a lot more usable.

Curve chamfer is really cool, with that ‘angle’ option it can be used as sort of a subdivide-and-slide vertex operator for curves, to offset vertex along the curve shape. Fillet operator also no longer seems to be distorting on non orthogonal edges.

Great work so far, this is a real improvement for Blender

Oh just one more thing I noticed after quitting. Never seen one before, so I am guessing this is what a memory leak looks like huh?

Error: Not freed memory blocks: 14, total unfreed memory 0.001923 MB
curve_chamfer1 len: 72 000000000C5B64A8
curve_chamfer2 len: 72 000000000C5BC5F8
curve_chamfer1 len: 72 000000000C5B76A8
curve_chamfer2 len: 72 000000000C5BC8C8
curve_chamfer1 len: 72 000000000C5BEE78
curve_chamfer2 len: 72 000000000C5BCB08
curve_chamfer1 len: 72 000000000C5BF1D8
curve_chamfer2 len: 72 000000000C5BEF98
curve_chamfer1 len: 72 000000000C5BEC38
curve_chamfer2 len: 72 000000000C5BD138
curve_chamfer1 len: 72 000000000C5BF658
curve_chamfer2 len: 72 000000000C5BF418
curve_chamfer1 len: 72 000000000C5BFC88
curve_chamfer2 len: 72 000000000C5BFBF8

Blender quit
Press any key to exit . . .

Im back from Portugal holiday:
Any news?!

Hey guys,

thank you all so much for your support in these weeks. You really made a difference :slight_smile: I couldn’t have reached this point without you.

In these last days, I need your help more than ever. Could you please take a look at my user documentation page, and give some feedback? I am still working on it, so remember to check it daily for improvements:

https://wiki.blender.org/index.php/User:Genio84/gsoc2016/final_report/

Also, if you are into the coding part, what would you want to see in the code documentation page?

Thanks in advance!

Documentation looks pretty thorough and complete so far.
Maybe it could benefit from some animated gifs to replace all the before/after images and make tit more compact and dynamic?

Anyway, great work. I’ll have give it a more thorough read tomorrow.