Learn OpenGL with Python for Graphics and Games
- Descrição
- Currículo
- FAQ
- Revisões
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.
-
Lighting.
-
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.
What people are saying about Penny’s courses:
-
Once again Penny delivers a powerful, clear, and worthy course. I believe this material will be very helpful in understanding the underlying workings of many game engines. It is also something a bit different that will allow me to work on my python skills having some fun by making games. She is very clear in her instruction, very knowledgeable and of course delivers easy to follow and understand information that you can easily pick up and learn.
-
Allow me to say how hugely important this is for a person who is interested in certain types of game design. Creating games where you can create AI behaviors that support emergent situations.
-
I honestly love Holistic’s teaching approach and I’ve never learned so much within a few hours about coding effectively with such detailed explanations!
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.
-
1WelcomeVídeo Aula
In this lecture, Penny will welcome you to the course and provide and overview of the content and her motivation behind creating it.
-
2Join the H3D Student CommunityVídeo Aula
This video will give you all the information you need to get in touch with the Holistic3D student community.
-
3Contacting H3DTexto
How to contact us
-
4Three Dimensions, Vectors and Cartesian CoordinatesVídeo Aula
This video provides a revision of the concepts of vectors and the Cartesian plane.
-
5Representing ColourVídeo Aula
This video provides an overview of colour and how it is used in computer graphics. It focusses on how colours are mixed and stored in memory.
-
6FAQsTexto
Important Reading on Common Issues students have and how to ask for help.
-
7Integrated Development Environment SetupVídeo Aula
In this lecture students will learn how to install Python and setup a development environment with PyCharm and PyOpenGL
-
8Testing OpenGL in PyCharmVídeo Aula
In this lecture students will test run an already written PyOpenGL application to test the setup of their IDE.
-
9Introducing PygameVídeo Aula
In this lecture students will create their first Pygame window, discover why a main endless loop is required and the double buffer.
-
10OpenGL Programming BasicsVídeo Aula
In this lecture students will learn about the basic structure of an OpenGL program and develop the start of a simple drawing application in Python.
-
11Plotting Star SignsVídeo Aula
In this lecture students will discover how to plot their star sign in a window, investigate point sizes and explore setting the scale and direction of window coordinates.
-
12Points and Plotting FunctionsVídeo Aula
In this lecture students will learn how to use dots to plot a graph of a mathematical equation in a window.
-
13Plotting Points with a MouseVídeo Aula
In this lecture students will learn how to plot a point at the position of the mouse when the mouse is clicked.
-
14Mapping Values Between Coordinate SystemsVídeo Aula
In this lecture students will learn how scale values between coordinate systems.
-
15Drawing Lines Part 1Vídeo Aula
In this lecture students will learn how to draw lines on the screen and use the mouse to define where they are drawn.
-
16Drawing Lines Part 2Vídeo Aula
In this lecture students will learn how to draw multiple lines on the screen using the mouse.
-
17Drawing a Graph with LinesVídeo Aula
In this lecture students will learn how to plot a graph of an equation using lines.
-
18Saving a Line Graph to a Data FileVídeo Aula
In this lecture students will learn how to save the data from a line drawing to a file.
-
19Loading a Line from a Data FileVídeo Aula
In this lecture students will learn how to load saved data from a file to display a drawing on the screen.
-
20PolygonsVídeo Aula
In this lecture students will examine the drawing of polygons.
-
21Programming a TurtleVídeo Aula
In this lecture students will learn what turtle graphics is and begin writing their own turtle drawing code.
-
22Rotating and Moving the TurtleVídeo Aula
In this lecture students will learn how to move and rotate the turtle on the screen and how to produce some interesting drawing effects.
-
23Lindenmayer SystemsVídeo Aula
In this lecture students will learn what l-systems are and how to create a string rewriting function to process them.
-
24Drawing an L-SystemVídeo Aula
In this lecture students will complete the code for a turtle graphics generator that draws l-systems.
-
25Iterative Function Systems Part 1Vídeo Aula
In this lecture students will learn about a repetitive point plotting systems that can produce fractal images.
-
26Iterative Function Systems Part 2Vídeo Aula
In this lecture students will learn how an iterative function system rule is formed and be challenged to try a different set of IFS values.
-
27The Structure of a MeshVídeo Aula
In this lecture students will create their own mesh class after learning about the data structures involved in defining a mesh.
-
28Creating a Cube ClassVídeo Aula
In this lecture students will learn how to extend the Mesh class to draw a cube and change it from a wireframe drawing into a solid.
-
29Loading a Mesh from a FileVídeo Aula
In this lecture students will learn how to load an OBJ mesh file into their project and extract the vertices and triangles.
-
30Displaying a Loaded MeshVídeo Aula
In this lecture students will learn how to display a loaded mesh in OpenGL and position it for viewing in the window.
-
31Coordinate SpacesVídeo Aula
In this lecture students will gain an overview of the transformations that take place to calculate pixel locations for drawing objects on the screen from their initial vertex values.
-
32Setting Viewing TransformationsVídeo Aula
In this lecture students will learn how to apply transformations to objects.
-
33Moving and Aiming the CameraVídeo Aula
In this lecture students will learn how to move and aim the camera to obtain a different view of the scene.
-
34Live Camera MovingVídeo Aula
In this lecture students will begin creating a Camera class and learn how to program the camera to move from side to side with the arrow keys.
-
35Live Camera RotatingVídeo Aula
In this lecture students will learn how to rotate the camera using the mouse.
-
36Mouse Movement SensitivityVídeo Aula
In this lecture students will learn how to set the mouse sensitivity as well as turn the mouse cursor on and off.
-
37Visualising World OrientationVídeo Aula
In this lecture students will learn how to add a world axis system into the project to give object placement a reference point.
-
38The Elementary TransformationsVídeo Aula
In this lecture students will gain an overview of the types of transformations.
-
39Let's Talk about MatricesVídeo Aula
In this lecture students will revise the concept of matrices and how to perform operations with them.
-
40Matrices in TransformationVídeo Aula
In this lecture students will examine the nature of 4x4 matrices for performing transformations in computer graphics.
-
41TranslationVídeo Aula
In this lecture students will learn how to apply glTranslate to move the position of an object.
-
42Mesh TranslationsVídeo Aula
In this lecture students will work to restructure the Mesh class and allow meshes to store their own position in world space.
-
43Translating on the FlyVídeo Aula
In this lecture students will learn how to use the same cube object and draw it in different locations.
-
44RotationVídeo Aula
In this lecture students will learn how to rotate and object and how the effect of performing different transformations in a different order will effect the final drawing.
-
45Mesh RotationsVídeo Aula
In this lecture students will learn how to modify the mesh class to accept a rotational value that will work locally with a mesh.
-
46ScalingVídeo Aula
In this lecture students will learn how scaling affects other transformations and build them scaling into the mesh class.
-
47Properties of Affine TransformationsVídeo Aula
In this lecture students will learn the reasons why affine transformations work so well in computer graphics.
-
48Refactoring for FlexibilityVídeo Aula
In this lecture students will begin creating a new graphics engine by refactoring the code experimented with thus far.
-
49Testing the Engine FoundationVídeo Aula
In this lecture we will create an application that inherits from the PyOGLApp class to test for functionality.
-
50OpenGL Shader LanguageVídeo Aula
In this lecture students will learn about the OpenGL Shader Language
-
51Shader DatatypesVídeo Aula
-
52Temp Fix for next LectureTexto
-
53Compiling Shader CodeVídeo Aula
In this video students will learn how OpenGL compiles vertex and fragment shader code and links it to a program.
-
54My First Vertex Shader Part 1Vídeo Aula
In this lecture students will begin writing their first vertex shader program in OpenGL.
-
55My First Vertex Shader Part 2Vídeo Aula
In this lecture students will complete their first vertex shader application.
-
56Working with Multiple VerticesVídeo Aula
In this lecture students will learn how to pass multiple vertices to a vertex shader.
-
57Working with Multiple ColoursVídeo Aula
In this lecture students will learn how to pass through a second set of values to a vertex shader to use as vertex colours.
-
58Bringing back the MeshVídeo Aula
In this lecture students will create a new Mesh class and inherit from it to create a Square. These new classes will perform all the buffer registrations required for drawing by the vertex shader.
-
59Passing UniformsVídeo Aula
In this lecture students will learn how to incorporate uniform values into a vertex shader to reposition a shape.
-
60Matrices for TransformationsVídeo Aula
In this lecture students will begin writing transformation utility methods to store the position, scale and rotation of objects and the camera.
-
61Performing TransformationsVídeo Aula
In this lecture students will learn how to apply matrix operations to the current transforms of 3d objects.
-
62The Perspective MatrixVídeo Aula
In this lecture students will learn how a perspective matrix is constructed.
-
63A New CameraVídeo Aula
In this lecture students will modify the old camera code to now use new matrix multiplication.
-
64Working with Projection and Modelviews in Vertex ShadersVídeo Aula
In this lecture students will learn how to integrate the projection and lookout matrices stored with the camera into the vertex shader.
-
65Adding Transformations to MeshesVídeo Aula
In this lecture students will finally get the new camera system working after adding transformations to the mesh class.
-
66Create World Axes with Vertex ShadersVídeo Aula
In this lecture students will learn how to add world axes back into the scene using vertex shaders.
-
67Adjusting for Unwanted Camera RollVídeo Aula
In this lecture students will learn how to use local and world rotations to fix unwanted camera roll when yawing and pitching.
-
68Restricting Pitch AnglesVídeo Aula
In this lecture students will learn how to limit the pitch angle of the camera to prevent gimbal lock.
-
69Creating a 3D ObjectVídeo Aula
In this lecture students will learn how to rewrite the old cube class to work with vertex shaders.
-
70Loading an OBJ FileVídeo Aula
In this lecture students will learn how to reconfigure the code in the LoadMesh class to bring an OBJ model into the Vertex Shader code format.
-
71Reapplying Scaling and RotationVídeo Aula
In this lecture students will learn how to reimplement scaling into the transformation matrix.
-
72Rotations, rotations and more rotationsVídeo Aula
In this lecture students will learn how to rotate an object around any axis and integrate the calculations into the transformations class.
-
73Animating with TransformationsVídeo Aula
In this lecture students will learn how to modify and apply transformations at runtime to create animated effects.
-
74Transforming All MeshesVídeo Aula
In this lecture students will learn how to add the live rotation code the existing base mesh class without disrupting the remaining child classes built from it.
-
75Translating and Scaling in RealtimeVídeo Aula
In this lecture students will add realtime scaling and translation to the mesh class.
-
76NormalsVídeo Aula
In this lecture students will learn about the importance of normals in graphics calculations for lighting.
-
77Loading Vertex Normals and UVsVídeo Aula
In this lecture students will modify the loading mesh method to read in the normals and texture coordinates from an OBJ file.
-
78Adding Lights to Vertex ShadersVídeo Aula
In this lecture students will learn how to add a basic diffuse light to the vertex shaders.
-
79Passing Vertex NormalsVídeo Aula
In this lecture students will learn how to pass the vertex normals to the vertex shader to light a 3D model. In addition they will explore how to add a light to the position of the camera.
-
80Ambient, Diffuse and Specular LightsVídeo Aula
In this lecture students will learn how to produce a light that combines, ambient, diffuse and specular.
-
81More on Specular LightsVídeo Aula
In this lecture students will learn how to position the light and camera at different locations to get a better view of specular light effects.
-
82Multiple Light Sources Part 1Vídeo Aula
In this lecture students will learn how to restructure the shader code to accept an array of uniform values in the format of light positions.
-
83Multiple Light Sources Part 2Vídeo Aula
In this lecture students will complete creating multiple lights and then examine how to use structures in vertex shaders.
