Software inspired on the traditional 2D approach for home architectural planning (top view style) , but generating and exporting the corresponding 3D meshes to be used with the "CustHomEyes" software, which provides 3D viewing, home furbishing and customization tools, allowing the final result to be shared and viewed on iOS, Android and VR devices. Both softwares are distributed as a single package and are based on Unreal Engine.
Available for free download at: https://custhomeyes.com
Forbes article (French) about CustHomEyes: https://www.forbes.fr/mediasfrance/nigis-la-realite-virtuelle-au-service-de-projets-innovants
- Unreal/C++ development (mostly)
- Unreal/Blueprint development (considerably)
- Software architecture and code design
- 2D and 3D math
- Python (main focus for some weeks)
- QT development (minor)
- Unreal Engine
- Visual Studio
- Pivotal Tracker
- Source Tree (mostly)
- Github Desktop (occasionally)
- Time Doctor
November 2017 to January 2019, average workload of 35 h/w.
- Take part on the development of an innovative software together with local and remote colleague developers, under constant feedback from users (architects), who many times would come in person to the office not only to provide feedback, but also to show how they work using similar softwares on the market.
- Customized QA process creation, application into the team and management, by own initiative, as an approach to improve user experience on just released updates while optimizing the coordination between feature development and bug fixing.
- Participation on recruitment interviews and minor assistance on other projects of the company
Main Programming Tasks Performed
- Initial research and core architecture: leaded the initial research about mesh procedural generation on Unreal Engine and about C++ solutions available for the required math related to it. Being after responsible for creating the architecture from the "planner core", taking in consideration its long term development by the current and further developers as well as its usage by thousands of architects who would spend hours of their work on our software requiring consistency and reliability.
- Transaction based Undo/Redo system on a interconnected objects context: the main challenge of the required core architecture was devising a reliable and efficient undo / redo system. After some research and development effort conceived and implemented a transaction based system that allows not only the undo / redo of the software operations during runtime, but also its storage on very lightweight save files that would still keep hundreds of history entries to be undone / redone over multiples executions of the software. On the development side the achieved architecture makes simple the creation of new object types, interconnected with the existing ones, including on group situations (such as when several objects are selected together for edition)
- Mesh generation within several 2D and 3D math challenges: embracing the key UX choice of the product, which was to keep the architectural planning approach to the traditional 2D top view as usually applied by architects in softwares like SketchUp and AutoCAD, devised together with colleagues creative solutions for describing 3D results of this 2D edition approach and was the responsible for dealing with main math challenges of transforming a 2D input on several 3D meshes with its vertices, indices, normals, tangents and texture coordinates over different sections depending on the need for multiple materials of each of the several structural objects (multilevel floors, interconnected walls with windows and doors, ceilings with complex counterceilings, pillars, etc...)
- Blueprint based UI features: despite more than 80% of the work performed was on the C++ side of Unreal, has implemented some of the UI features of the planner directly on blueprints, some of them interfacing with the C++ code.
- Python based daemon application: implemented this solution as a daemon process with an optional Tkinter based UI. for executing some heavy tasks in background independently of the main application, but being commanded by it, deployable to OS X and windows as executable, without requiring the user to install the python runtime dependencies. As this application was development in replacement to a legacy QT application, this task also involved some contact with socket related QT development.