Wright Flyer Animation

I rendered this 3D animation for a college course.


Intro to Computer Graphics

This course teaches the basic, old fashioned 3D rendering pipeline. The scene starts out as a lot of triangles in the 3D world space and through the excessive application of linear algebra they become a 2D image. It's nothing too remarkable, but it's nice to understand how things works. The remarkable aspects are the shader programs and the specialized hardware that runs them.

As a sidenote: I'd like say that the math required for computer graphics is not very difficult. It's far easier than an actual college course in linear algebra. Whereas college courses in the math department tended to involve a lot of proving theorems and solving difficult equations, the math in programming typically involves answering specific questions about geometry that can be easily looked up in books and on the web.

The final project for this course was to design and implement a 3D scene of our choosing, and to animate the scene for extra credit. I chose to recreate of the first flight of a powered airplane, built and piloted by the Wright brothers.

Seconds into the first flight of the Wright Brothers, 1903

The animation is programmed in C++ using the OpenGL API. Much of the source code was written throughout the semester for home assignments and repurposed for this final project. I wrote a vertex shader and a fragment shader with textures and shading.

The models were hand crafted, late at night on the eve of the due date. I did not use any 3D modeling software, instead I hardcoded the coordinates of the geometric primitives directly into the source code. At the time I didn't know how to use blender (I still don't lol) and my program was not capable of importing any kind of 3D model file so trying to use real modeling tools would have incurred more work on this already rushed project. And finally, this project was only graded on its technical merits, not its artistic quality.

Animation of the first flight, rendered in 3D Animation of the first flight, first person point of view

Retrospective

In the 21st century programming with OpenGL is almost always a bad idea. It's all been done before and done better than you could ever hope to do it. Re-inventing the wheel like this is only useful as an academic exercise. There are many fine rendering engines and video game engines that are cheap and even free to use. They're high quality and fully featured. Existing engines have been established for long enough to integrate with the larger ecosystem of supporting tools, and perhaps even build up their own little community of developers. Making a worthwhile rendering engine is an unending multi-year team effort.

That said, if your goal is to make a rendering engine, rather than to use one, then OpenGL is the right tool for the job. Over the years it's even gotten better with more convenience functions, doing the heavy lifting and linear algebra for you.