GSOC 2024 Draft: UV Stitch Tool

UV Stitch Tool Improvements

by Anish Bharadwaj

Contact Info:

  • Email: anishbharad@gmail
  • Blender.chat: Anish-Bharadwaj

Synopsis

The goal of this project is to enhance the efficiency of the UV mapping process for Blender users. The UV Stitch Tool Improvements project aims to enhance the workflow of UV mapping in Blender by introducing advanced features for stitching UV islands. The project’s main hurdle will be the introduction of new parameterization methods, which will provide users with greater control over the merging process of UV islands. Additionally, the project will introduce several Quality of Life improvements aimed at streamlining the workflow involved in merging UV islands, making the process more intuitive and user-friendly. These enhancements collectively aim to improve the overall UV mapping workflow for Blender users.

Benefits

The UV Stitch Tool Improvements project is going to make working with UV maps in Blender a lot easier and more efficient. With the implementation of the Quality of Life changes like defaulting to Sync Select and still providing the option for island selections will give a more intuitive user experience when manipulating UV islands. For the actual process of stitching together UV islands a new Parameterization algorithm will make the joining process faster and will work better on various different model types such as organic models. Aside from improvements to efficiency of the UV unwrapping process there will also be a greater level of control when merging islands with popups allowing for user-controlled levels of edge merging and mesh distortion.

Deliverables

  • Allow UV Select mode: Islands to be available while Sync Selection is on
    • Make the Sync Selection be selected by default
  • Make the UVs always visible in the UV editor
  • Develop a UV Island Stitch Solution
    • provide users a slider popup to select merged boundaries
    • provide users a slider popup to select level of distortion
  • Developer & User documentation

Project Details

Quality of Life Changes

Sync Selection:

The current behavior of the UV editor means that selections made on the UV geometry are not shown in the 3D viewport. While it is simple to toggle Sync Selection on and off, many users have expressed a preference for having Sync Selection enabled by default. This feature proves especially beneficial for island stitching, as being able to see your islands in 3D space significantly aids in decision-making regarding how and which islands to stitch together. Furthermore, the capability to have UV selections highlighted in 3D space will greatly facilitate UV Island stitching, simplifying the process of deciding which edges to merge. Additional discussions have highlighted a desire for UVs to always be visible in the UV editor, even outside of Edit mode. Additionally, the current behavior of the UV editor displays only the selected faces in the UV editor. However, with Sync Selection enabled by default, the entire mesh is always visible, enhancing UV manipulation effectiveness. The image below illustrates the desired behavior.

Island Select:

Currently, when you enter Sync Selection mode in the UV editor, the option to select by island disappears, despite its potential usefulness. Having this functionality available greatly simplifies the selection process for users who wish to work on entire islands at a time. Considering how useful this could be for the UV island stitching process, an upcoming improvement to Sync Selection will reintroduce the ability to select by island, even in Sync mode.

Island Select option Disappears when in Sync Selection mode:

Relevant Thread:

Develop a UV Island Stitch Solution:

Currently there are two main algorithms I am considering for the UV Island Stitching Process

ABF++ Stitching

  • Fast and Robust Angle Based Flattening is an improvement upon the previous ABF algorithm as it is able to parameterize meshes at much faster speeds. This Parameterization algorithm works well on organic models and it is an algorithm that blender users want to see implemented too after seeing its capabilities in the Modo’s Adaptive Relaxing Algorithm.
  • Users will be able to control the amount UV island distortion through the iterative nature of the algorithm with the number of iterations affection the level of distortion in the UVs

Relevant Thread:

ARAP Stitching

  • As Rigid as Possible Parameterization is also well suited for constructing UVs of Organic models. This algorithm alternates between solving a linear system for the vertex positions and updating the rotation components to minimize the local distortion.
  • Using ARAP Unwrapping users will be able to control the level of deformation through the use of a scalar coefficient. This will allow UVs to balance between angle distortion and shape preservation to achieve more rigid or flexible UV Islands

Parameters for fitting boundaries
-Once you are in UV editor you would need your first island then after you select a second island a highlighted “boundary” should appear which will indicate which edges the Islands will be joined along. There should then be a pop up with two separate sliders. The first slider will allow the user to limit the edges that will be joined. This slider will have two pointers on it allowing the user to select any subsection of the seam between the two islands.

Project Schedule

Date Tasks
Weeks 1-2 * Learn Blender Development best practices and understand the UV Workflow / Begin Implementing Quality of Life Deliverables
Weeks 3-4 Complete Quality of Life Deliverables / Dive into the functionality ARAP and ABF++ and decide which is a better option
Weeks 5 Work on Merged Boundaries popup
Weeks 6-8 Implement Parameterization Algorithm / Develop Distortion Levels Popup
Weeks 9-10 Extra time in case any previous tasks were not completed within allotted time
Weeks 11-12 Code Cleanup / Finalize User & Developer Documentation

Bio

I’m Anish Bharadwaj, a fourth-year student at Drexel University, where my academic and extracurricular experiences have shaped me into a proficient programmer. I possess a strong grasp of C++ and a solid understanding of linear algebra and vector operations. Additionally, my experience working on enterprise-level projects has equipped me with a solid foundation, which will give me a head start in navigating and contributing to the Blender codebase. In my spare time, I enjoy creating 3D art and have been honing my skills in hard surface modeling, which has inspired me to make contributions to Blender that I could see myself using in my own workflow. I have worked on one bug fix for the Flamenco project, so I do have some level of familiarity with the Blender codebase. As I delve further into Blender’s codebase, my aim is to provide meaningful contributions that could benefit not only myself but other Blender users as well.

15 Likes