Jon Macey Computer Animation Pages

NGL Legacy Code

The following programs are to be used with NGL 4.0 you can download the library here. These programs are no longer activly maintained, so these are just for reference or if you wish to use any of the old Masters Projects which would have used this code.

 

Basic Qt Demo
Simple NGL

A very basic NGL:: and Qt program, generates a simple QtMainWindow to contain a GLWindow widget and draws a teapot from the the ngl::VBOPrimitives class.

It also demonstrates the loading of simple shaders and the use of the Camera and Transform stack using GL3.x

download

 


Python Demo
CG Primitives demo

Demonstrates the NGL::Python bindings using the same program techniques as the above program.

download

 

 


VBOPrimitives demo
CG Primitives demo

Demonstrates the ngl::VBOPrimitives and ngl::TransformStack classes for OpenGL 3.x / 4.x style rendering. No immediate mode OpenGL is used in this demo all transformation are done via our own Matrix Stack and the GLSL shader used for rendering.

C++ Version

Python version

 

 


Lights demo
CG Primitives demo

Shows how the basic OpenGL / NGL::Light class works, uses a special shader to loop for all 8 GL Lights

bzr download

C++ Version

Python version

 

 


Spotlight Demo
CG Primitives demo

Shows how the ngl::Spotlight works as well as introducing a new GLSL shader to mimic the Old fixed functionality OpenGL shading pipeline

bzr download

C++ Version

Python version

 

 


Camera Demo
CG Primitives demo

Shows how the ngl::Camera class works, this uses Vertex Shader to pass throught the Model, View and Projection transforms to the Shaders

bzr download

C++ Version

Python version

 

 


Shading Demos
CG Primitives demo

A selection of demos for the Shading Models lecture

 

C++ Version

 


Using ngl::Obj
CG Primitives demo

A simple demo to show how to use the ngl::Obj class to load a mesh and a texture. Also demonstrates how to go into the Qt showFullScreen mode and back to a windowed app.

C++ Version

 

 


Using Textures in OpenGL
CG Primitives demo

Several demos showing how to use different textures in OpenGL and glsl

C++ Version

 

 

Basic Collision Detection
CG Primitives demo

Several demos showing collision detection for Ray-Sphere, Ray-Triangle, Sphere-Sphere, Sphere-Plane

 

C++ Version

 

Particle Systems Demos
CG Primitives demo

Several demos particle systems, two simple geometry ones and one using PointSprites

C++ Version

 

 

Colour Selection
CG Primitives demo

This Demo demonstrates how to select objects using Colour picking

C++ Version

 

 

Geometry Shaders
CG Primitives demo

A simple demo showing how to draw Face and Vertex Normals using Geometry Shaders

C++ Version

 

Frustum Culling
CG Primitives demo

Added frustum culling to the ngl::Camera class, this demo shows how to use it, most of the code is based on the article here

C++ Version

 

Runtime Polymorphism
CG Primitives demo

Simple particle system demonstrating runtime polymorphism

C++ Version

 

Game Style Object Control
CG Primitives demo

This demo shows how to do game style control and movement of an object in Qt, read the blog post here for more details

C++ Version

 

Advanced Game Control
CG Primitives demo

A different approach to game key control, this method is more complex but uses less dynamic memory allocation and also allows for the keystrokes to be recorded and played back.

C++ Version

 

 

Affine Transforms
CG Primitives demo

The shows how to use affine transforms in NGL as well as how to build a full Qt GUI app

C++ Version

 

 

 

QtNGL
CG Primitives demo

This is the code to acompany the Video Tutorial here

C++ Version

 

RK4 Spring
CG Primitives demo

This demonstrates a simple RK4 spring, based on the code / blog here

C++ Version

 

Point Bake Animation
CG Primitives demo

This demonstrates loading in a Mesh (obj) and PointBake animation data from my Maya Exporter ( see here ). The basic principle is load an Obj Mesh, then the PointBake per frame animation data, then we update the verts per frame. see NGL::PointBake class for more details and also this blog post.

 

C++ Version

 

Point Bake Animation
CG Primitives demo

This demonstrates loading in a PointBake animation data from my Maya Exporter ( see here ). Then use the actual PB data to visualize the mesh (see blog post here)

 

C++ Version

 


Using the ngl::VertexArrayObject class
CG Primitives demo

Two demos showing how to use the new ngl::VertexArrayObject class

C++ Version

 


Normal Mapping
CG Primitives demo

This demo uses the ngl::Obj and ngl::VertexArrayObject classes to read in a mesh then construct an extended VAO passing in Tangents and Bi-Tangents (BiNormals) to glsl as attributes. This is then used to do normal mapping along the lines of this

It also has code to implement Maya style controls

C++ Version