Develop a superior knowledge of vertex shader hardware rendering of 3D graphics.
Why should you learn OpenGL? (a) It’s one of the original graphics libraries developed to be implemented mostly (or entirely) on hardware. (b) A knowledge about OpenGL will reveal to you what goes on in the background of other graphic and game engines giving you superior problem-solving and trouble-shooting skills in other applications (c) It will improve your understanding of 3D mathematics, and (d) It brings vertex shader programming to the forefront of developing computer graphics applications delivering you a higher level of skill in creating fast GPU-based parallel-processed 2D and 3D graphics.
Designed for INTERMEDIATE level students with a working knowledge of programming, the content in this course will take you step-by-step through the setup of Python, Pygame, and PyOpenG and the development of a generalised 3D graphics engine designed on the fly (as the course progresses), to focus on adding the required functionality as each fundamental concept in computer graphics generation, mathematics, and rendering is revealed.
You will learn about:
- The Pycharm Development Environment.
- The Pygame API, which is an interface for OpenGL.
- PyOpenGL, a python wrapper for the OpenGL API.
- Coordinate systems in orthogonal, perspective, screen space, and camera space.
- Moving a virtual camera.
- Constructing 3D graphics using vertex shaders.
- Vertex Colouring.
- Essential mathematics for working with 3D space and positioning vertices with a variety of 4×4 viewing matrices.
- Working with 3D OBJ model files.
- UV mapping and texturing of meshes.
This course focuses on providing students with hands-on experience coding a general 3D graphics engine using PyOpenGL, while also providing an easy introduction to Python for the intermediate programmer.
Table of Contents
2 Join the H3D Student Community
3 Three Dimensions, Vectors and Cartesian Coordinates
4 Representing Colour
6 Integrated Development Environment Setup
7 Testing OpenGL in PyCharm
8 Introducing Pygame
9 OpenGL Programming Basics
10 Plotting Star Signs
Basic Graphics Primitives
11 Points and Plotting Functions
12 Plotting Points with a Mouse
13 Mapping Values Between Coordinate Systems
14 Drawing Lines Part 1
15 Drawing Lines Part 2
16 Drawing a Graph with Lines
17 Saving a Line Graph to a Data File
18 Loading a Line from a Data File
20 Programming a Turtle
21 Rotating and Moving the Turtle
22 Lindenmayer Systems
23 Drawing an L-System
24 Iterative Function Systems Part 1
25 Iterative Function Systems Part 2
Working with Meshes
26 The Structure of a Mesh
27 Creating a Cube Class
28 Loading a Mesh from a File
29 Displaying a Loaded Mesh
Drawing in 3D
30 Coordinate Spaces
31 Setting Viewing Transformations
32 Moving and Aiming the Camera
33 Live Camera Moving
34 Live Camera Rotating
35 Mouse Movement Sensitivity
36 Visualising World Orientation
37 The Elementary Transformations
38 Let’s Talk about Matrices
39 Matrices in Transformation
41 Mesh Translations
42 Translating on the Fly
44 Mesh Rotations
46 Properties of Affine Transformations
Optimising Drawing in PyOpenGL
47 Refactoring for Flexibility
48 Testing the Engine Foundation
49 Passing Uniforms
50 OpenGL Shader Language
51 Shader Datatypes
52 Compiling Shader Code
53 My First Vertex Shader Part 1
54 My First Vertex Shader Part 2
55 Working with Multiple Vertices
56 Working with Multiple Colours
57 Bringing back the Mesh
Camera Movement and Matrices
58 Matrices for Transformations
59 Performing Transformations
60 The Perspective Matrix
61 A New Camera
62 Working with Projection and Modelviews in Vertex Shaders
63 Adding Transformations to Meshes
64 Create World Axes with Vertex Shaders
65 Adjusting for Unwanted Camera Roll
66 Restricting Pitch Angles
Creating 3D Objects
67 Creating a 3D Object
68 Loading an OBJ File
69 Reapplying Scaling and Rotation
70 Rotations, rotations and more rotations
71 Animating with Transformations
72 Transforming All Meshes
73 Translating and Scaling in Realtime
75 Loading Vertex Normals and UVs
76 Adding Lights to Vertex Shaders
77 Passing Vertex Normals
78 Ambient, Diffuse and Specular Lights
79 More on Specular Lights
80 Multiple Light Sources Part 1
81 Multiple Light Sources Part 2
84 Shaders with Textures
85 Playing with UV Values
87 Loading Shaders from a File
88 Reconfiguring the Mesh Class
89 Considering the Camera and Light
90 Integrating a Second and Different Shader
91 Multiple Lights
92 Final Project
93 Some Final Words from Penny
94 Where to Now