GSoC 2025: Edit Mesh Mirror Improvements

Hello everyone, my name is Tariq Ganda Sulley, a final year electrical/electronics engineering student at the Kwame Nkrumah University of Science and Technology and I’ll be working on the edit mesh mirror improvements project for GSoC 2025.

Contact

Blender Chat: @tariq

Synopsis

The aim of this project is to extend and improve Blender’s edit mesh mirror functionality to support a broader range of operations. I will develop a robust solution that enables mirroring for sixteen operators (nine already completed), thereby making edit mesh mirroring a general modeling tool rather than a niche feature.

Benefits

Enhancing mirror editing in edit mode will streamline the modeling process, which will give artists more intuitive and efficient control over symmetrical models. With multi axis mirror support, artists can perform complex, symmetrical edits such as creasing edges, smoothing vertices, or extruding directly in edit mode, saving significant time over workarounds like deleting half the model and applying a mirror modifier.
Also, since shape keys depend on the actual vertex positions and an unapplied mirror modifier only affects the display rather than the underlying mesh, having true mirror editing directly in edit mode is essential for ensuring consistent deformations. For intricate, nearly finished models needing quick and precise tweaks, having edit mode mirroring support for the needed operators would eliminate the impracticality of rebuilding symmetry from scratch using a mirror modifier, ensuring consistency without disrupting already completed workflows.

Deliverables

  • Implementation of multi-axis mirror functionality in edit mode for seven operators currently lacking symmetry support: Inset Faces, Selection To Grid, Selection To Active, Vertex Crease, Extrude Individual, Extrude Along Normals, and Poke Faces building on the nine operators I’ve already completed making sixteen in total.
  • Comprehensive end user documentation alongside developer notes on the mirroring framework.
  • A set of tests to validate the mirroring functionality of targeted operators across diverse mesh topologies, paired with performance benchmarks to ensure interactive responsiveness.

Project Details

My proposal seeks to transform Blender’s edit mesh mirroring into a versatile, multi-axis modeling tool by enhancing its transformation system to support a wide array of operators. I’ll generalize and refine the existing mirror logic to address current limitations such as inconsistent symmetry support. This effort will involve a structured approach across three key areas:

Analyzing the Current System

I’ll start by analyzing how Blender’s transformation system handles edit mode operators.I’ll then examine operators that lack mirroring.This analysis will establish a baseline for extending symmetry support systematically across diverse operator types.

Standardizing Mirror Functionality

I’ll utilize and enhance Blender’s existing mirroring utilities already embedded in the codebase for caching and element retrieval to deliver consistent X, Y, Z symmetry across edit mode operators. These functions offer powerful features, like topology aware mirroring, but are underutilized in many cases. My plan is to integrate them universally, tweaking them where needed to support varied mesh elements (vertices, edges and faces).

Extending Operator Support

Building on my previous work, I’ll implement multi-axis mirroring for seven edit mode operators: Inset Faces, Selection to Grid, Selection to Active, Vertex Crease, Extrude Individual, Extrude Along Normals, and Poke Faces. These currently lack symmetry support in edit mode.

Prior Work

I have already started work on this project. Prior to working on them, I took my time to thoroughly test all the operators which were listed on the Blender ideas page upon which I realized that some of them already support mesh mirroring, particularly sliding (edge and vertex) with smooth vertices only being supported on the x axis.
Further engagement with the Blender community proved my point, pointing to the fact that it was a mistake to have included them on the ideas page which led me to refine my project scope to focus on actual unsupported operators.

Also, the extrude operator already had an option called mirror editing that mirrored an extruded region in any of the x,y,z axes but I found that the result of this was not useful to artists as the mirrored side was not a true extrusion. It was just raising the edges of the mirrored side to match the original which made the situation worse making the model unsymmetrical.


Blender’s current mirror editing for extrusion


My proposal

I have implemented the mesh mirror editing in the x,y and z axis for nine operators which you can find below. For every operator, I have a link to a video of the working implementation and notes that summarize how I implemented mesh mirroring.


Mark seam mirrored on the x,y,z axes
Mark Seam Video
Mark seam notes


Mark seam mirrored on Suzzane’s eyes


Smooth vertices mirrored on the z axis
Smooth Vertices Video
Smooth Vertices Notes


Edge crease mirrored on the x,y and z axes
Edge Crease Video
Edge Crease Notes


Mark sharp mirrored on the x,y and z axes
Mark Sharp Video
Mark Sharp Notes


Bevel weight mirrored on the x,y and z axes
Bevel Weight Video
Bevel Weight Notes


Bevel mirrored on the x,y and z axes
Bevel Video
Bevel Notes


Extrude region mirrored on the x,y and z axes
Extrude Region Video
Extrude Region Notes


Normals mirrored on the x,y and z axes
Normals Video
Normals Notes


Weights mirrored on the x axis
Weights Video
Weights Notes

Project Schedule

I will focus on delivering multi-axis mirroring for seven operators essential to symmetrical modeling workflows which are Vertex Crease, Inset Faces, Extrude Individual, Extrude Along Normals (distinct from my prior Extrude Region work), Poke Faces,Selection to Cursor and Selection to Grid all widely used by artists. Building on my completed multi-axis mirroring implementations for nine operators, I aim to showcase a total of sixteen operators in my final presentation. I would work for the full 350 hours in total(~30 hours a work). There will be no conflicts with my activities in school. Should I complete these seven ahead of schedule, I plan to expand the scope by integrating additional operators(loop cut).

Weeks 1–2:

  • Sync with my mentor to align on deliverables and review prior work.
  • Analyze Blender’s existing edit mesh mirror code and document its limitations.
  • Outline a concise design plan for the new multi-axis symmetry framework.
  • Define initial testing and benchmarking criteria for the upcoming development.

Weeks 3–4:

  • Implement multi-axis mirroring for Poke Faces and Vertex Crease.

Weeks 5–6:

  • Implement multi-axis mirroring for Selection to Grid and Selection to Active.

Weeks 7–8:

  • Implement multi-axis mirroring for Extrude Individual and Extrude Along Normals.

Weeks 9–10:

  • Implement multi-axis mirroring for Inset Faces.
  • Begin testing and benchmarking phase.
  • Reserve buffer time for any remaining work.

Weeks 11–12:

  • Finalize code and documentation.
  • Prepare for final evaluation.
19 Likes