Project Overview
The 3D Garden Editor was my first project outside of academic work. Its purpose was to provide an interactive 3D environment for designing garden layouts. The final application featured a fully navigable 3D scene in which users could adjust the camera direction, animate camera movements, and place various garden elements such as trees, grass, and other 3D assets.
Features and Implementation
All 3D models were imported using STEP files generated in 3ds Max, and the rendering was handled using DirectX. Like most 3D projects, this one was highly math-intensive and required significant geometric and graphical computation. Key capabilities included:
- Detecting which 3D object the user clicked on
- Highlighting selected objects by dynamically modifying textures
- Managing and rendering multiple interactive garden components
Challenges and Learning
At the time, I had limited experience with both programming languages and 3D systems. This project became an intense hands-on learning experience that greatly accelerated my understanding of graphics programming and software development.
Some notable challenges included:
-
Axis system mismatch: DirectX used a coordinate system that differed from the one presented in most math textbooks, causing initial confusion in transformations and object placement.
-
Texture memory leaks: Textures were being reloaded on every frame of the render loop, quickly exhausting system memory—especially on the low-resource machines of that era (developing on a machine with 256MB of RAM). Solving this required learning to use profiling tools early in my career and understanding memory constraints when dealing with large graphical assets.
Documentation and Outcome
The project was accompanied by a detailed technical document explaining all calculations and their implementation in C#. Completing the 3D Garden Editor strengthened my skills, boosted my confidence, and laid the foundation for my future work in graphics, systems, and software engineering.