- Course: Computer Graphics
- Professor: Jules Bloomenthal (MSCS, Seattle University)
- Textbook: "Computer Graphics: Implementation and Explanation" by J.Bloomenthal
- Graphics API: OpenGL 4.0+
- Shading Language: GLSL 400+
- Programming Language: C++17
- OpenGL 4.0 or higher
- C++17 compatible compiler
- CMake 3.10 or higher
- Clone the repository
- Navigate to the specific assignment directory
- Run CMake to generate build files
- Build using your preferred compiler
Assets/
- Contains textures, models, and output GIFs1_Rotate2dLetter/
- 2D letter rotation implementation2_Shade3dLetter/
- 3D letter with shading3_Texture3dLetter/
- Texture mapping on 3D letter4_SmoothMesh/
- Mesh smoothing and texture mapping5_BumpyMesh/
- Bump mapping implementation6_Hierarchy/
- Hierarchical modeling7_BezierCurve/
- 3D Bezier curve implementation8_Tessellation/
- Shape interpolation using tessellation9_Animation/
- Flight path animation
- Camera Movement: WASD keys
- Rotation: Arrow keys
- Zoom: Mouse scroll wheel
Objective: Create and rotate a 2D letter using vertex coordinates and colors
- Implementation of basic vertex manipulation
- RGB color interpolation
- Basic transformation matrices
- Controls: Use arrow keys to rotate
Objective: Transform 2D letter into 3D with camera controls
- Implementation of perspective projection
- Basic Phong shading
- Camera movement system
- Controls: WASD for movement, arrow keys for rotation, scroll for zoom
Objective: Add texture mapping and advanced lighting
- UV coordinate mapping
- Multiple light source implementation
- Texture sampling in GLSL
- Controls: Standard camera controls, L key to toggle lights
Objective: Implement mesh loading and smooth shading
- OBJ file loading and parsing
- Normal calculation and smoothing
- Texture coordinate mapping
- Controls: Standard camera controls
Objective: Implement bump mapping on a 3D mesh
- Normal map generation and usage
- Tangent space calculations
- Advanced lighting interactions
- Controls: Standard camera controls, B key to toggle bump mapping
Objective: Create hierarchical relationships between objects
- Scene graph implementation
- Parent-child transformations
- Joint manipulation
- Controls: Number keys (1-9) to select different parts, arrow keys to manipulate
Objective: Implement 3D Bezier curve system
- Cubic Bezier curve mathematics
- Control point manipulation
- Curve interpolation
- Controls: Click and drag control points, spacebar to add points
Objective: Implement shape morphing using tessellation
- Tessellation shader programming
- Shape interpolation
- Dynamic level of detail
- Controls: Use T/G to increase/decrease tessellation level
Objective: Create complex animation with multiple moving parts
- Path following algorithm
- Multiple object animation
- Time-based movement
- Controls: Space to play/pause, R to reset animation