This summer, Blender had the privilege of welcoming six talented contributors as part of the Google Summer of Code program. They worked on exciting projects, enhancing Blender’s nodes, unwrapping, user interface, rendering and video editing features.
This blog post highlights their work and presents an excerpt of the results. You can find further details in the contributors final reports, linked on each section.
UV Stitching Improvements
Final report by Anish Bharadwaj. The project focused on enhancing UV mapping workflows by introducing a user-friendly weld-seams utility for efficient UV island merging, drawing inspiration from community suggestions.
The Seam Weld feature allows users to select two non-cyclic edge loops on two
Anish Bharadwaj
separate UV islands and merge those islands together along that seam. This deliverable took the most time to implement of the three that I worked on due to various misunderstandings I had about how the UV system works in Blender. One major challenge was grasping the concept of loops and understanding that the UV islands are not actually connected to one another but are instead multiple loops sharing locations in 2D space.
Sample Sound Node
Final report by Lleu Yang. This project aimed to provide the ability to retrieve sounds from files in Geomety Nodes, generate amplitude/frequency response information based on several customizable parameters, and be written in native C++ with caching/proxy operations to speed up execution.
The video below used Sample Sound node and simulation zone together, forming a 3-D waterfall plot. The project file is attached in the description of my working pull request. The audio is made by myself and licensed under CC0.
Lleu Yang
Geometry Nodes: File Import Nodes
Final report by Devashish Lal. This project aimed to reduce disk usage by externalizing data and also enabling data visualization workflows in Blender. Devashish introduced OBJ, STL, PLY, and CSV import nodes, currently behind an experimental feature flag in the alpha version.
Blender doesn’t have the capability to import CSV files so the first thing was to implement the importer and we didn’t wanna use existing CSV libraries cuz it’s is just simple string handling right ? well the importer is still pretty simple but there were a lot of edge cases although the most time I spent was in designing the importer figuring out which individual functions should be created and utility classes.
[…]
I spent a week looking at the existing OBJ and PLY importers to get inspired into writing the CSV importer and ended up with an implementation that I am quite proud of.
Devashish Lal
Sprucing Up the Sequencer
Final report by John Swenson. This project aimed to improve snapping support in the sequencer by adding the option to snap strips to markers, add a link property to all audio/video strips for a given video file and add the ability to select active channels.
After meeting with [my mentor] Aras at the beginning of the summer, we decided that my first order of business should be to get snapping working in the VSE Preview – in theory it’s simple, wouldn’t require as much back-and-forth to determine what the UI should look like or how it should work, etc.
John Swenson
Improvements to the Blender macOS User Interface Experience
Final report by Jonas Holzman. The project aimed at adding native macOS menubar support and inline titlebar decoration to Blender.
Over this summer, I got to work on improving the Blender macOS User Interface Experience. While the initial goal of the project was to add native macOS menubar support and inline titlebar decoration to Blender, the end goal ended up shifting towards more general macOS and general UI research, while still working on client-side window decorations, as outlined in this kickoff meeting note by my mentor Julian.
As such, this project ended up focusing on a new cross-platform API for client-side window decorations, combined with a practical colored titlebar macOS decoration implementation. I also worked on general macOS user experience and interface improvements, as well as backend refactors, while also experimenting with additional general UI enhancements.
Jonas Holzman
Improve Distributed Rendering & Task Execution
Final report by David Zhang. The main objective of this project was to enhance the distributed rendering and task execution capabilities within Flamenco through several key improvements.
I have implemented the ability for users to pause jobs in Flamenco, introducing a new
David Zhangpaused
state with relevant status transition logic. The frontend has been updated to allow users to pause a job, and comprehensive unit tests have been added to ensure the new functionality works correctly with existing systems. This feature has been fully implemented, reviewed, and the pull request has been merged into the main codebase.
That’s it! Make sure to check the contributors full reports for further details.
I want to thank all mentors, contributors and of course Google for accepting us into the GSoC program again. It’s been a pleasure to participate in the 25th anniversary edition this year and we plan to apply next year again.
Support the Future of Blender
Donate to Blender by joining the Development Fund to support the Blender Foundation’s work on core development, maintenance, and new releases.