Author: SALONI KUSHWAHA
Roll: 24IT3045
Course: Graphics and Visual Computing (GVC)
Build an Interactive 3D Chessboard using PyOpenGL showing:
- Orthographic & Perspective Projection (switch with
P) - Camera system (orbit, zoom)
- Modeling pipeline (board + pieces using primitives)
- Lighting (Phong)
- Animation (piece movement)
- Picking (click to select piece)
- Roll-number–based customization
A fully interactive 3D Chessboard built using Python, PyOpenGL, GLFW, NumPy, and ImGui, demonstrating all major GVC concepts including modelling, transformations, lighting, rendering pipeline, Z-buffering, camera controls, and ray-casting.
- 3D chessboard & pieces (procedurally modelled: cube, cylinder, cone)
- Camera: orbit, pan, zoom, reset
- Piece selection & movement animation
- Perspective ↔ Orthographic projection switching
- Ray-casting based picking
- Phong lighting (ambient, diffuse, specular)
- Z-buffer depth testing
- ImGui UI panel
- Modelling Pipeline: Piece meshes generated manually (VAO/VBO + normals)
- Transformations: Model → View → Projection matrices
- Viewing: Custom LookAt camera
- Projections: Perspective & Orthographic switching
- Lighting: Phong shading in GLSL shaders
- Rendering: Framebuffer clearing, draw calls, depth testing
- Z-Buffer:
glEnable(GL_DEPTH_TEST) - Interaction: Ray picking → world intersection → board square mapping
- Animation: Time-based interpolation for piece movement
- Accurate ray picking
- UI overlay interfering with GLFW inputs
- Stable orthographic mode interaction
- Procedural modelling of all pieces
- Camera orbit smoothing
- Full chess rules + turn-based logic
- Load real 3D models (Blender/Maya)
- Shadows, reflections, PBR materials
- Move history, undo/redo, game export
- AI opponent using Minimax
- OpenGL Red Book
- LearnOpenGL.com
- PyOpenGL documentation
- ImGui docs
- GVC lecture notes
- Python 3
- PyOpenGL
- GLFW
- NumPy
- Pillow (textures)
pip install -r requirements.txt
python src/main.py