Computer Graphics 3-d Modeling & Animation projects

About our work

For the modeler project requirements I designed and configured the humanoid hierarchical model while Rocne worked on designing shaders. We both worked together on programming the surface of revolution calculations. I created the Cartoon and Thermal shaders based on his shader work. After we met the project requirements we both worked together trying to come up with extra bells and whistles, the "trippy" shader being one of the results from that.

I enjoyed making both the model and the cartoon shader. Hierarchical modeling was presented to us as simple scale-rotate-translate (in that order) actions when in reality they can happen in any order, as I learned while creating our model. The problem I was having was with body parts or limbs being stretched or "skewed" as they were being moved around. For my work creating a "cartoon" shader, my research led me to several processes used to achieve it, but none worked well for me since I didn't quite understand the openGL pixel pipelines yet. I created our cartoon affect by using the camera's vector from the surface crossed with the surface normal and if it was within a threshold of perpendicular (i.e. the edge of a model) the pixels would be colored black. All other surface pixels would be shaded a certain intensity of the material color also based on the angle between surface normal and viewer. It was a cheap and easy solution that really only has one drawback, large flat surfaces which cause the entire surface to become a solid color from having uniform surface normal and viewer vectors.

We again split the workload on the animator project with Rocne implementing the particle system and myself tackling the animation curves implementation and collision handling. We met back in the middle and I implemented attaching particle systems to our scene models and we began playing with the curve editor and animating basic scenes to familiarize ourselves for the final animation artifact. During our entire process, Rocne and I collaborated closely together to ensure ideas we had for this project from earlier in the quarter would work with each other's parts. We designed a particle system that could be easily extended to include particles of just about any shape, size, and combination of forces. Our simple forces included, gravity, wind, heat, and a special "orbit" force, and we created classes of particles such as precipitate, collidable, and floating. All together, our final animation artifact used five or six particle systems of varying combinations of types.

It was during our work in the modeler project that we started conceiving our animated short. After we were able to draw simple shapes using a surface of revolution and Rocne created the "trippy" shader, everything else fell into place. I spent about a day storyboarding our animation and we both spent another day rendering scenes, adding sound, and stitching everything together. This computer graphics class has been one of my favorite and more fulfilling classes mostly because not only did we get the freedom to create something completely from our minds, but we also got to bring it to life.

Modeler Project

Modeler is a program that views a 3d hierarchical model, and lets you manipulate joint angles, allows you to load different shaders to shade the 3d model, and manipulate the lighting conditions. Modeler is the basis for the Animator program in Project 4, which just extends the functionality of it.

Implements the following:
  • Surface of Revolution
  • The Hierarchical Model
  • Blinn-Phong Point Light Shader
  • Our Additional Shaders
    • Cartoon
    • RGB
    • Thermal
    • Trippy
First place artifact winner!

Animator Project

Animator is a program that extends the functionality of the Modeler project. It extends a spline-based animation system to support multiple curve types, and implements a particle system simulation engine.

Implements the following curve types:
  • Bezier (cubic beziers splined together with C0 continuity)
  • Catmull-Rom (with endpoint interpolation)
  • B-spline (with endpoint interpolation)
Implements a particle system that:
  • is attached to a node of your hierarchy other than the root node
  • has two distinct forces acting on the particles
  • solves the system of forces using Euler's method
  • includes collision detection and response for both the sphere in the scene and another primitive of your choice (such as the ground plane)
  • provides control of the restitution constant (e.g a slider)
First place artifact winner!