This project delves into multiple advanced fields in 3D graphics, serving as a testing ground for three primary components: a custom software renderer, a 3D animation and interpolation system, and a physics simulation engine. Each of these components was built from the ground up, providing a comprehensive learning experience and resulting in a versatile toolset for handling complex 3D rendering, animation, and physics challenges.
The software renderer was developed entirely from scratch as an in-depth exercise in understanding the fundamentals of 3D graphics. By building this renderer from the ground up, I was able to grasp each crucial step in the rendering pipeline, from drawing basic geometric shapes to displaying fully animated 3D models. This experience highlighted the complexities of graphics programming and enabled me to optimize rendering processes.
Key features of the renderer include:
This project also includes a comprehensive skeletal animation system, which smoothly interpolates between different poses of a skeleton to animate 3D models. This feature enables lifelike transitions and movement, essential for adding realism to characters and animated objects. The system’s design allows for flexible integration of various animations, making it ideal for complex character animations.
Key features of the animation system include:
The physics component comprises two systems: a particle simulation and a rigid body simulation. These systems add realism and interactivity to 3D environments, enhancing the overall immersion and physicality of the virtual world.
Key features of the physics simulation include:
This project demonstrates the power of combining graphics rendering, animation, and physics simulation to create immersive 3D environments. Through developing a software renderer, animation system, and physics engine from scratch, I gained deep insights into each component of a 3D engine, understanding the challenges and techniques that contribute to realistic visuals and interactions. This experience has greatly enriched my skills in graphics programming and has equipped me with the tools to tackle even more complex projects in the future.