GSOC 2021: proposal draft Curve Improvement

Hey all i m applying for gsoc 2021, any feedback on my proposal is appreciated.
hoping to implement it :sweat_smile:

Name: Jishan Singh
Location: Punjab, India
IRC: ringmaker
GitHub: jishansingh
Idea of the project is to improve workflow and using better approach for smoother geometry, These are improvements i propose

  1. Adaptive resolution, currently it is implemented using bezier handles sizes, using adaptive bezier it will have more points along curved corners, and less points along straight lines.
  2. Calculating Curve length and displaying it in ui.
  3. Bezier handle modify acc to other object
  4. Bezier workflow improvement

Workflow with Curves will improve significantly and ui will be much simpler.Adaptive resolution will make geometry smoother and do it efficiently. Handles of curve could be set perpendicular to the object.

The project should be expected to include:

  • Better resolution distribution in curves
  • Viewing the curve’s length
  • Modify bezier handles using center for reference
  • Curve would be much smoother than before

Project Design
Adaptive resolution:
Adaptive resolution interface design is shown very well here

I plan on implementing it the same way, adding a boolean field for adaptive resolution, specified resolution will be adjusted. I’m using the approach discussed here. Author uses a much better approach to determine the flatness of the curve.

Length of Curve: Length of curve will be displayed upon clicking calculate curve length, it could be set to automatically be updated upon checking the boolean. It would calculate length with accuracy depending on resolution.

Reference center for bezier handles: With center for reference on bezier handles it will help making sector, handles will point perpendicular to line joining center on assignment and handles will be updated on changing center position, but once handles are unselected center will no longer update the handles. Also handles could be swapped using shortcut.

Bezier Workflow Improvement: Improvement in workflow of bezier tool as discussed here. Shortcuts to be added will be:

  1. Click to add new point
  2. Ctrl+click to remove(s) point
  3. Alt+click to add point with vector handle
  4. Ctrl+click on curve to make a cut
  5. On creation of new point, dragging the cursor will modify the handle

Project Schedule

Timeframe Plans
June 7 - June 17 Modify the bezier handle using freely movable center
June 17 - July 2 Adaptive resolution on curve
July 3 - July 16 Running test cases and debugging as this type of change could lead to many bugs, also prepare for evaluation
July 17 - July 24 Calculate Curve length, display in ui
July 25 - August 5 Bezier workflow improvement
August 5 - August 16 handling bugs, and documenting features

I am a third-year undergraduate doing a Bachelor’s degree in Computer Science and Engineering at Indian Institute of Information and Technology(IIIT), allahabad. I have been a Blender user for about two years now, and I am familiar with modeling, sculpting, shading and basic tools. I have experience in C/C++ ,python(also used blender module) ,blender motivated me to look in the field of graphic programming so i started learning opengl, lightning equations, basic batching etc ([1],[2]). Then I started making some games from scratch, understanding that the same code is being copied again. I started making game engine ([3],[4]) from cherno tutorials, after which I started understanding the codebase of blender. I have submitted a patch ([1]) and worked on some issues (check profile).I didn’t work on many issues but I have good understanding of source code concerning this proposal and hope learning more while in gsoc.


I’ll point you to a comment I made on a similar proposal:

1 Like

i read ur reply too, i understand that it will create conflict but most of these changes are concerning workflow of drawing curve (except some)
conflict will be created mostly by cutting curve at point operation and adaptive bezier, i think they could be re implemented in new code
bezier uses rather old method of dividing curve into segments, i could work on re implementing in ur branch but after gsoc and i dont think it will differ much
also i don’t know if u mean in my case but i think this proposal could be completed in time of gsoc

1 Like

Great proposal. Good luck, looking forward to trying it when there’s a first build.