GSOC 2024: UV Stitching Improvements

Hello Everyone,

I’m Anish Bharadwaj, and I will be working on the UV stitch tool for GSOC 2024. The goal of this projects is to develop tools that will allow Blender users to have greater control over UVs, enabling more complex merging and manipulation operations.

If you would like to view my complete proposal you can see it at this link here.


The project focuses on enhancing UV mapping workflows by introducing a user-friendly weld-seams utility for efficient UV island merging, drawing inspiration from community suggestions. It will further develop an advanced welding operation that adjusts surrounding geometry to reduce distortion, alongside exploring sophisticated fitting techniques for improved accuracy. Additionally, the initiative will broaden its toolset to include specialized welding tools for both shared vertex and arbitrary island merging, aiming to streamline and refine the UV mapping process for users.


This project aims to significantly enhance Blender’s UV mapping capabilities by providing a suite of tools that streamline and improve the efficiency and precision of UV mapping tasks. With a user-friendly weld-seams utility and advanced operations to minimize distortion, the project targets a future where fully merging UV islands is intuitive and seamless. While the ultimate goal is to automate this process comprehensively, the current focus on sophisticated fitting techniques and specialized welding tools ensures substantial immediate benefits. Even if the project’s timeline doesn’t allow the full realization of automatic UV island merging, the developed tools will offer valuable, albeit more hands-on, methods for users to achieve their desired outcomes. This approach not only provides immediate improvements to UV mapping workflows but also lays the groundwork for reaching the eventual solution.


  • Develop Weld-Seams Utility
    • User defined Merge by Distance Parameter
    • User defined SubSeam Selection Parameter
  • Explore Distortion Minimization Techniques
  • Implement Geometry Deformation Tool
    • Introduce ability to Weld non-connected geometry
  • Write Developer & User Documentation

Week 1 Progress:

During the first week of my project on improving the UV Stitch Tool for Blender, I focused on reviewing the previous year’s GSOC project related to the tool. This review helped me gain a better understanding of the current codebase. However, I encountered a setback when a bug in the debug build prevented me from entering the UV workflow. I filed a bug report, and with the help of the Blender development community, the issue was resolved, allowing me to proceed with my planned work.

In the upcoming weeks, my primary objective is to develop the functionality to merge a subsection of the shared edges between two UV islands. For week 2, I will focus on implementing the functionality to highlight shared edges between islands. Additionally, I will begin working on the UI popup that allows for sub-seam selection.


Week 2 Progress: Seam-Weld Functionality Development

After discussing with my mentor, we decided to shift the focus from subseam selection to developing a seam-weld functionality for the Blender project. This decision was made to prioritize a more impactful feature that would enhance the user experience and streamline the UV mapping process. I have implemented a new boilerplate operator into the codebase, and I have successfully added all the necessary UI elements to initiate the seam-weld functionality.

The next step will be understanding the uv_remove_doubles_to_selected function. Gaining a thorough understanding of how this function operates will help with developing a weld-seam feature that is based on the UV islands’ relative positions to one another. I will also be considering adding an ability to weld seams based on underlying geometry so that the islands will be welded in an orientation that is respective to their relative positions in 3D space.

If you have any feedback, please leave a comment in the dedicated feedback thread here


Week 3 Progress: Seam-Weld Functionality Development Continued

In week 3, I continued working on the implementation of the UV Seam-Weld tool. Significant progress has been made, and I am now close to completing this feature.

Given that this deliverable is so close to completion, I will keep this update brief. I anticipate providing a more comprehensive post midway through this week, once the UV Seam-Weld tool is fully implemented. This upcoming post will include an in-depth description of the functionality and the improvements introduced.

Stay tuned for more detailed updates!


This week, I completed the development of the UV Seam-Weld tool. It took a bit more time than expected, but the extra effort was worth it. I made sure to account for various scenarios to ensure the tool is robust and doesn’t crash or break unexpectedly. This involved extensive testing to cover edge cases and ensure stability across different use cases.

I am currently in the middle of resolving the pull request for the UV Seam-Weld tool. Once this PR is completed and approved, I will move on to the next deliverable. This next phase involves introducing parameters for distortion to the UV Stitch tool.

Thank you for following my progress, and stay tuned for more updates!


Week 5 Report

This week, I refactored the UV Seam Weld code and created a standalone API to enhance the UV stitch tool. The code cleanup and new API for edge loop extraction should improve the reusability of the Logic and improves the overall readability of my code.

I also began researching the next deliverable, which will introduce distortion parameters to adjust UV coordinates, ensuring the UV faces better match the 3D mesh angles. This will enhance UV mapping quality and accuracy. My research included reviewing related literature as well as looking into the UV pinning and Live Unwrap functionality that currently exist in blender.


Week 6 Report:

This week, I added functionality to the UV merge tool and prepared for future tasks. I added a feature to the Merge UVs operator, allowing it to merge based on the underlying geometry. For the implementation of deformation to the Seam-Weld functionality, after consulting with my mentor, we decided to use Laplacian Deformation instead of the initially considered Least Squares method for mesh deformation after welding. I spent time understanding the mathematical Laplacian Operator and began looking into Blender’s Laplacian Deform operator to apply this technique to the UV stitch tool.


Week 7 Report:

This week, I didn’t get to work as much on the deform deliverable as I was cleaning up issues with my previous 2 PRs. Next week I will primarily be working on adding the deformation functionality to the seam weld. For a base implementation to reduce distortion after Welds I will implement a linear interpolation. Afterwards I will look at different solutions that better maintain the angles within UV meshes.


Week 8 Report

I was unable to work much this week due to illness. I will resume working on the Deformation Functionality in Week 9.