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
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
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 4x4 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.
In this lecture, Penny will welcome you to the course and provide and overview of the content and her motivation behind creating it.
This video will give you all the information you need to get in touch with the Holistic3D student community.
How to contact us
This video provides a revision of the concepts of vectors and the Cartesian plane.
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.
Important Reading on Common Issues students have and how to ask for help.
In this lecture students will learn how to install Python and setup a development environment with PyCharm and PyOpenGL
In this lecture students will test run an already written PyOpenGL application to test the setup of their IDE.
In this lecture students will create their first Pygame window, discover why a main endless loop is required and the double buffer.
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.
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.
In this lecture students will learn how to use dots to plot a graph of a mathematical equation in a window.
In this lecture students will learn how to plot a point at the position of the mouse when the mouse is clicked.
In this lecture students will learn how scale values between coordinate systems.
In this lecture students will learn how to draw lines on the screen and use the mouse to define where they are drawn.
In this lecture students will learn how to draw multiple lines on the screen using the mouse.
In this lecture students will learn how to plot a graph of an equation using lines.
In this lecture students will learn how to save the data from a line drawing to a file.
In this lecture students will learn how to load saved data from a file to display a drawing on the screen.
In this lecture students will examine the drawing of polygons.
In this lecture students will learn what turtle graphics is and begin writing their own turtle drawing code.
In this lecture students will learn how to move and rotate the turtle on the screen and how to produce some interesting drawing effects.
In this lecture students will learn what l-systems are and how to create a string rewriting function to process them.
In this lecture students will complete the code for a turtle graphics generator that draws l-systems.
In this lecture students will learn about a repetitive point plotting systems that can produce fractal images.
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.
In this lecture students will create their own mesh class after learning about the data structures involved in defining a mesh.
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.
In this lecture students will learn how to load an OBJ mesh file into their project and extract the vertices and triangles.
In this lecture students will learn how to display a loaded mesh in OpenGL and position it for viewing in the window.
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.
In this lecture students will learn how to apply transformations to objects.
In this lecture students will learn how to move and aim the camera to obtain a different view of the scene.
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.
In this lecture students will learn how to rotate the camera using the mouse.
In this lecture students will learn how to set the mouse sensitivity as well as turn the mouse cursor on and off.
In this lecture students will learn how to add a world axis system into the project to give object placement a reference point.
In this lecture students will gain an overview of the types of transformations.
In this lecture students will revise the concept of matrices and how to perform operations with them.
In this lecture students will examine the nature of 4x4 matrices for performing transformations in computer graphics.
In this lecture students will learn how to apply glTranslate to move the position of an object.
In this lecture students will work to restructure the Mesh class and allow meshes to store their own position in world space.
In this lecture students will learn how to use the same cube object and draw it in different locations.
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.
In this lecture students will learn how to modify the mesh class to accept a rotational value that will work locally with a mesh.
In this lecture students will learn how scaling affects other transformations and build them scaling into the mesh class.
In this lecture students will learn the reasons why affine transformations work so well in computer graphics.
In this lecture students will begin creating a new graphics engine by refactoring the code experimented with thus far.
In this lecture we will create an application that inherits from the PyOGLApp class to test for functionality.
In this lecture students will learn about the OpenGL Shader Language
In this video students will learn how OpenGL compiles vertex and fragment shader code and links it to a program.
In this lecture students will begin writing their first vertex shader program in OpenGL.
In this lecture students will complete their first vertex shader application.
In this lecture students will learn how to pass multiple vertices to a vertex shader.
In this lecture students will learn how to pass through a second set of values to a vertex shader to use as vertex colours.
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.
In this lecture students will learn how to incorporate uniform values into a vertex shader to reposition a shape.
In this lecture students will begin writing transformation utility methods to store the position, scale and rotation of objects and the camera.
In this lecture students will learn how to apply matrix operations to the current transforms of 3d objects.
In this lecture students will learn how a perspective matrix is constructed.
In this lecture students will modify the old camera code to now use new matrix multiplication.
In this lecture students will learn how to integrate the projection and lookout matrices stored with the camera into the vertex shader.
In this lecture students will finally get the new camera system working after adding transformations to the mesh class.
In this lecture students will learn how to add world axes back into the scene using vertex shaders.
In this lecture students will learn how to use local and world rotations to fix unwanted camera roll when yawing and pitching.
In this lecture students will learn how to limit the pitch angle of the camera to prevent gimbal lock.
In this lecture students will learn how to rewrite the old cube class to work with vertex shaders.
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.
In this lecture students will learn how to reimplement scaling into the transformation matrix.
In this lecture students will learn how to rotate an object around any axis and integrate the calculations into the transformations class.
In this lecture students will learn how to modify and apply transformations at runtime to create animated effects.
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.
In this lecture students will add realtime scaling and translation to the mesh class.
In this lecture students will learn about the importance of normals in graphics calculations for lighting.
In this lecture students will modify the loading mesh method to read in the normals and texture coordinates from an OBJ file.
In this lecture students will learn how to add a basic diffuse light to the vertex shaders.
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.
In this lecture students will learn how to produce a light that combines, ambient, diffuse and specular.
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.
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.
In this lecture students will complete creating multiple lights and then examine how to use structures in vertex shaders.
In this lecture students will learn about UV values and how they are used for texture mapping.
In this lecture students will create a texture class that will take care of the setup and loading of an image to place on an object.
In this lecture students will integrate the loading of a texture into the Mesh class.
In this lecture students will examine some of the different setups for UV values as well as OpenGL texture settings.
In this lecture students will learn how to include images with transparency so that colours blend together in the colour buffer.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.