GSoC 2024: Final Submission

Vidit Jain
5 min readSep 8, 2024

--

This article is a description of the project I spent time developing during this Google Summer of Code 2024 session at BRL-CAD.

Project Title :

Develop further the new GUI for BRL-CAD!

Project Proposal :

https://summerofcode.withgoogle.com/media/user/30e09fb2e417/proposal/gAAAAABm3TGA8EE4NfBJIHyRcUylbVrcyFoj29Qj9Meex8M4Qy-EZXrxiPQJhGgZcF36l-MJsGfdIuyRVJYH0xhZFU-fVyJWEUBnsG_L33he-KYoyZsGiHs=.pdf

Mentors :

Himanshu Sekhar Nayak & Amanjot Singh

Project Overview :

For my Google Summer of Code (GSoC) project, I worked on the new GUI of BRL-CAD, called Arbalest. My main contribution was developing the “Highlight Selected Object” feature. This feature visually distinguishes a selected object on the screen by highlighting it in yellow, making it easier for users to interact with the objects in the interface.

Additionally, I fixed a critical issue with the “Select” feature. Previously, the selection functionality would fail whenever the document changed, leading to inconsistent behavior. I resolved this problem, ensuring that object selection now works as expected, regardless of document changes. Apart from these two major contributions, I also addressed several minor bugs to improve the overall stability and usability of the interface.

This project enhanced the user experience in Arbalest and was a great opportunity to contribute to BRL-CAD’s development.

Pull Requests :

I have created many pull requests before and during the project tenure and most of them were merged.

Majour Features :

I have majourly worked on two main features of the Arbalest.

  1. Fixed select primitive feature of Arbalest : Earlier the select premitive feature of the Arbalest wasn’t working properly. Its behaviour wasn’t what we were expecting. It was glitching whenever a new document was created. The issue was, the activeDocumentId wasn’t getting updated whenever a new document was created. I fixed this issue. Debugging the whole thing was the toughest part in this feature.
  2. Highlight Selected Primitive : I created this new feature where whenever a new object was selected, it was highlighted in a new different colour for now which is yellow. This helps in precisely selecting the part which one is trying to select. This was one of the most challenging thing I did during the project time. I learnt best practices about rendering and how rendering code works.

3. Home/Landing Page : I also updated the landing page of Arbalest by giving the text a feature which are clickable and can be used to perform the actions like creating a new file and opening a project.

4. Fixing Bugs : I fixed many small bugs here and there that were there earlier.

Future Scope of Improvements (Issues) :

  1. The select primitive and highlight features don’t work when a single object is there in the screen. This issue needs to resolved.
  2. Raytrace don’t work properly. During the last days of my project, I started working on this part but wasn’t able to make much progress.
  3. We need to click on focus button before using SelectPrimitive feature. Without doing this, SelectPrimitive feature would not work.
  4. All the buttons in Edit button don’t work. They all give the same error which is “You cannot transform top objects”.

My next plans :

  1. I will continue coding..
  2. Continue fixing all the issues that I wasn’t able to address during this period.
  3. Learning more about Qt and C++ and make Arbalest a success.
  4. I will stay in touch with all the mentors for future contributors.
  5. I wish to be Mentor in GSOC’25.

Conclusion :

Working with BRL-CAD was a great experience for me. I learnt a lot of new things during this period of three months. Majour learnings were how to write clean and production level code, collaborating with other contributors and majourly how a open-source organization works. Working with these great mentors brought me with a lot of learnings and help me understand how things works in production. Thanks to Google, BRL-CAD and all the amazing mentors that I got during this time of my GSOC’24.

--

--