Introduction to Visual Computing


 

Syllabus
MS Computer Science
Introduction to Visual Computing
Fall, 2016
(3 credits)

Description

The aim of this course is to explore the essential mathematical and geometric concepts of computer graphics programming. It covers basic topics in 3D rendering, graphics algorithms, computation geometry, and GUI for 2D and 3D implementations. Furthermore, it reinforces Object Oriented programming practices.

Prerequisites

CSAL4273 (Computer Graphics),
CSSS2753 (Linear Algebra),
CSCP2033 (Object Oriented Paradigm),
or permission from instructor

Instructor

Dr. Furqan Ullah, furqanullah@ucp.edu.pk,
Office: R303, +92-42-35880007
Office hours: Tuesday, Wednesday 2:00–3:00 pm

Teaching Assistant

TBA, TBA@ucp.edu.pk,
Office: TBA
Office hours: TBA

Meetings

Monday, Wednesday, Thursday, 02:00–02:50 am, R303

Format

This course will be a mixture of lectures, discussions, and demonstrations. The student is expected to actively participate in all class activities.

Text and References

  • Interactive Computer Graphics, by Edward Angel and Dave Shreiner, 6th Edition, Addison-Wesley, 2011.
  • OpenGL Programming Guide The Official Guide to Learning OpenGL, Version 4.3, 8th Edition, by Dave Shreiner, Graham Sellers, John Kessenich, Bill Licea-Kane, Addison-Wesley, 2013
  • Advanced Graphics Programming Using OpenGL, by Tom McReynolds and David Blythe, 1st Edition, Morgan Kaufmann Elsevier, 2005.
  • OpenGL Superbible 5th Edition, by Richard S. Wright, Jr. Nicholas Haemel, Graham Sellers, Benjamin Lipchak, Addison-Wesley, 2010.

Reference Material

Typical journals relevant to this course include, but are not limited to, ACM TOG, IEEE TVCG, IEEE CG&A, CAD, CAGD, Graphical Models, The Visual Computer, Computer Graphics Forum, IEEE PAMI, IJCV, IEEE Transactions on Medical Imaging, etc. Major conferences include Siggraph, Vis, Eurographics, Pacific Graphics, Graphics Interface, Solid Modeling, Shape Modeling, ACM I3D Symposium, ICCV, CVPR.

Online Resources

Course website will be used for organizing additional reading and programming material.

http://cgav.ucp.edu.pk/teaching/introduction-to-visual-computing/

Specific outcomes of instruction

Upon successful completion of the course, the students will be able to

  • Create the various components of 3D rendering engine and manipulate 3D models
  • Use various open source C++ based 3D geometric and graphics libraries
  • Apply mathematical equations, algorithmic principles, software design patterns, and creative ideas.
  • Understand the data structures and API’s, and basics of computer graphics for visualization
  • Perform basic 3D animation
  • Analyze a problem, identify, and define the computing requirements appropriate to its solution
  • Use current techniques, skills, and tools necessary for computing practices
  • Use OpenGL to create interactive computer graphics
  • Use the graphical capabilities of various graphical software packages such as Visualization Toolkit (VTK), FVK

Course Outline

  • Introduction to computer graphics
  • Applications of computer graphics
  • History of computer graphics
  • Introduction to C++
  • Basic differences between C, C++, and Java
  • Setting up and compiling projects under MS Visual Studio
  • Linking to external libraries
  • Vectors and matrices
  • 2D and 3D transformations
  • Matrix data structure for polylines and polygons
  • Basic OpenGL for 2D drawing
  • Introduction to software design patterns
  • Designing, implementing, and connecting C++ classes
  • C++ pointers and memory management (including a lot of debugging)
  • QT or FLTK (GUI software package), an introduction
  • Window System and Platform Integration
  • Widgets and how they are incorporated into your code
  • Event driven programming
  • OpenGL implementations
  • Viewing transformations
  • C++ file input and output
  • Line segment to line segment intersection
  • 2D polygon manipulation:
  • Bounding boxes (AABB, OABB)
  • Point in polygon algorithm
  • Other useful 2D geometry algorithms
  • C++ templates
  • Introduction to 3D graphics programming
  • 3D viewing transformations and cameras
  • Normals and meshes
  • Lighting and material properties
  • Sub-division surfaces
  • Concepts
  • Data structure
  • Algorithms
  • Progressive mesh refinement
  • Polygon mesh
  • Data structure for vertices, faces, and edges; access efficiency
  • Mesh smoothing and cleaning algorithms
  • Mesh editing
  • Textures
  • Texture coordinate generation, transformation, and mapping
  • Loading texture images from the frame buffer
  • Introduction to 3D Texture
  • Introduction to real-time programming
  • Basic 3D animation
  • Modeling for real-time graphics applications
  • Introduction to virtual reality
  • Visual computation in virtual reality
  • Introduction to augmented reality
  • System Structure of augmented reality
  • Key technology in AR
  • Shape deformation
  • GUI software package
  • Code and GUI integration
  • Introduction to GLSL
  • Introduction to shaders
  • Vertex, fragment, geometry shaders
  • Image-based rendering
  • Introduction to physics-based modeling and dynamic simulation

Projects

There will be a semester project for a group of 3 students. Class assignments will include implementing 3D renderer engine for creating an animation system, building a GUI based application with simple camera control, polygonal mesh manipulation, a simple game.

Exams

Midterm, after 15 lectures, regular class time
Final, TBA

Grading

50%      Project, Quiz, Assignment, etc.
20%      Midterm
30%      Final

Justifications

Pakistan game industry and software houses have expressed an urgent need for students with C++ and graphics programming experience. Currently graduate students lack exposure to a number of topics that are desired in computer graphics and animation. Topics include game engine, character animation, behavior-based animation, deformable solids, cloth and mass spring systems, fluid and gas simulations, particle systems, GPU and GUI programming. Furthermore, computer graphics students lack C++ programming experience, which is also required in the industry and in graduate studies in graphics and animation. The proposed course would directly address the students need for C++ experience and indirectly provide them exposure to the additional required topics listed. Knowledge of C++ and graphics topics will make them considerably more attractive candidates for the industry.

Course Policies

  • All work must be your own, group work is CHEATING, and all group members will receive a zero.
  • Turn off cell phones and pagers before class.