Village Scenario — 3D Computer Graphics
C++ · OpenGL · Computer Graphics
A 7th-semester Computer Graphics & Image Processing (CGIP) course project built from scratch in C++. Recreates an animated 3D village scene entirely through code — houses, trees, terrain, sky, and motion — using core graphics primitives, transformations, and shading, with no external image or model assets.
Project Overview
Village Scenario was my 7th-semester project for the Computer Graphics & Image Processing course. The goal was to demonstrate mastery of the fundamentals — primitives, transformations, projections, lighting, and animation — by composing an entire 3D village scene programmatically in C++. Every element on screen (houses, trees, roads, sky, terrain) is drawn from geometric primitives; nothing is loaded from an external image or 3D model file. The scene includes moving elements and a rendered camera view, exercising translation, rotation, and scaling in real time. Working with pure C++ and no engine gave me a hands-on understanding of the graphics pipeline that higher-level tools usually hide: how vertices become triangles, how transformations compose, and how a scene is assembled from scratch. This was also one of the earliest projects where I had to justify every visual result with code rather than art assets.
Key Features
- Fully procedural 3D village scene — no external image or model assets
- Hand-built houses, trees, terrain, and sky from geometric primitives
- Real-time animation of scene elements using translation, rotation, and scaling
- Camera view rendered with projection and depth handling
- Demonstrates core CGIP concepts: primitives, transformations, composition, and lighting
- Completed as a 7th-semester Computer Graphics & Image Processing course project
Challenges & Solutions
Composing a recognisable, readable village scene using only geometric primitives — no image textures, no 3D models — while still making each object look like what it represents.
Layered primitive shapes into composite objects: a house = a cube body + a triangular prism roof + smaller cubes for windows and doors. Repeated the pattern for trees, roads, and terrain until the scene read as a coherent village.
Understanding and correctly applying 2D and 3D transformations — translation, rotation, scaling — where a single mistake in the order of matrix multiplications flips or distorts entire objects.
Iteratively tested each transformation in isolation against small test scenes, then composed them into the full scene. This built the mental model of how the graphics pipeline chains transforms from model space to screen space.
Animating scene elements (moving objects, changing camera view) without making the animation jerky or the framerate collapse.
Used GLUT's idle and timer callbacks to drive animation at a consistent frame rate, keeping the transformation math simple and avoiding redundant state changes between frames.
Project Info
- RoleDeveloper (Course Project — Solo)
- StatusCompleted / Live