UV editor improvements (gsoc-2024)

Project Title

UV editor improvements

Name

Alan Babu

Contact

Blender chat nickname: alan_void

Twitter: @alan_voidanhltr

Synopsis

Blender’s UV editor can be improved to make workflows faster and give more fine-grained control. I’d like to work on some of these improvements which are highly requested by users.

Benefits

The changes I have picked are ones that are already planned by the developers or are popular requests in the blender community. I believe these changes will speed up and improve UV editing workflow.

The overlay options proposed below could be useful while debugging and visualizing UVs in future development.

Deliverables

UV editing

  1. UV move up/down/left/right using arrow keys

    Move selected UVs using the arrow keys and shift/ctrl modifiers.

    • Arrow keys : move by one dynamic grid unit

    • Shift + Arrow Keys : move by one pixel unit and snap UV to pixel corner

    • Ctrl + Arrow Keys : move to neighboring UDIM tile(1 normalized unit)

    Detailed Specifications:- #78405 - UV move up/down/left/right - blender - Blender Projects

  2. More UV snapping options

    Additional snap options

    • Edge

    • Edge center

    • Edge perpendicular

    • ???Face center???(face snapping doesn’t make sense in 2d, does it?)

    ???There is no concept of active element in UV editor. It is quite useful in the 3d editor. Should I try to add that.

    UVsnap

    RCS-UV snapping

  3. Straighten edges

    An operator(???Or additional options to the current align operator) that would align a selected edge loop in the U or V axis.

    For simplicity, initial implementation will only support single edge loop or multiple disconnected edge loops.(Will throw error/warning otherwise)

    The length of the each edge would be proportional to

    (i) its corresponding length in 3D or (ii) its previous UV length.

    Total length of edge loop can be (i) previous length in UV or (ii) One normalized UV unit

    Link to Issue:- straighten edges and unfold uv island.This specification unwraps the rest of the island after the edges are straightned. My proposal does not follow this. I assume user can pin the straightened vertices and do the unwrapping explicitly.

  4. Gridify faces

    An operator that would align a selected UV having grid topology(all quads) in the U and V axis.

    For simplicity, initial implementation will only support strict grid topology. (Will throw error/warning otherwise)

    The length of the each edge would be proportional to the average of the source edge lengths its row/column. Source edge length can be

    (i) its corresponding length in 3D or (ii) its previous UV length.

    Total length of grid in X and Y can be sourced from (i) previous length in UV or (ii) One normalized UV unit

    Link to Issue:- Grid unwrap uv. This specification tackles a more general case. I will try to to generalize my implementation as time permits.

UV visualizations/overlays

  1. UV island outline

    Render the outline of islands in thicker/different color line.

    The overlay menu will have a setting to control the opacity of this render style.

    RCS-UV island outline

  2. Render faces different color based on face winding

    Render faces in blue or red depending on vertex corner winding of faces. Similar to Face orientation overlay in 3d viewport.

    Overlay menu will have a tickbox to toggle this.

    RCS-UV face orientation

  3. Show faded UV Map in different modes

    When using the UV editor in no-sync mode currently only the mesh selected in 3d view is shown in the UV editor. This overlay will render a greyed out and uninteractable version of the unselected mesh in the editor. Similar to the one showed when texture painting.

    Overlay menu will have a opacity setting for this render.

    This may be extended to show the UV map in object mode or other modes.

    RCS-Show faded UV Map in every mode

  4. Some other overlays additions

    • Seams : render edges which are seams in the 3d mesh in a different color.

    • Face center : The 3d viewport currently has an option to toggle the dot the represent face centers in face select mode. Add a similar setting to UV editor

Documentaion

  • User manual

Project Details

I think I’ve added most of the details and UI/UX mockups in the deliverables itself. Since I’m not working on an entirely new system I’ll leave this empty.

Project Schedule

I would start in the second week of May. I’d like to go with the 16 week timeline.

Timeline

  1. UV editing :- 6 weeks total

    1. UV move up/down/left/right using arrow keys :- 1 week
    2. More UV snapping options :- 2 weeks
    3. Straighten edges :- 1 week
    4. Gridify faces :- 2 weeks
  2. UV visualizations/overlays :- 6 weeks total

    1. UV island outline :- 2 weeks
    2. Render faces different color based on face winding :- 1 week
    3. Show faded UV Map in different modes :- 2 weeks
    4. Some other overlays additions :- 1 weeks
  3. Documentation :- 2 weeks

  4. Delays :- 2 weeks

Should be available from 2nd week of May for whole duration.

Bio

My name is Alan Babu. I am a fourth year undergrad pursuing a Computer Science and Engineering Degree at Indian Institute of Technology Bombay.

I enjoy doing creative stuff like drawing, 3D modelling and some usual stuff like gaming, movies, music. I also do some game development on the side.

I started using Blender in 2017 and I still do for various projects. I am familiar with modelling, texturing, rigging, geometry nodes and procedural shaders. I also have experience using popular game engines like unreal, unity and godot.

I have worked on:-

  • basic c++ game engine
  • renderer of a game engine
  • basic C compiler
  • Ray traced renderer
  • few web and mobile applications
  • many other smaller projects

I would say I am quite proficient with c++ and python and know my way around the documentation if I need to understand concepts.

I have submitted a patch for the flip faces node in the geometry nodes module. Since I have experience using Blender and the coding knowledge required, I think I would be a good fit for this project.

24 Likes

Did you forget to put a time estimate on 6-9 or is this included in the 2 weeks for 5?

I’d elaborate on most of them and use links only as additional information, having to click 13 links to figure out what this proposal is exactly about isn’t great.

1 week documentation is likely a bit optimistic

2 Likes

Hi,
thanks for your interest in participating in GSoC 2024 and work on Blender.

Instead of grouping some random links to tasks and ideas, I suggest to have a bigger plan of what you like to improve and why.

Take a look at Application Template - Blender Developer Documentation for how to write a proper proposal.

Thank you for volunteering for this work, I see so many useful things in your proposal here. :slight_smile:
I would absolutely love to have an active element implementation in the UV editor. This will be incredibly helpful for add-on development.

1 Like