Archive for the ‘Rendering’ Category.

CS6555 Computer Animation – Lab 5 – Simple Car Control

This lab was an open assignment where we were given the freedom to make up our own animation project of limited scope. There were many topics that were available and I played with a few potential projects; however, above all others there was segment of material that appeared interesting and challenging that requires considerable knowledge to properly implement a convincing demonstration. When I decided on this topic, I knew that I would not be able to complete the project in a short span, so I requested an extension at the cost of an incomplete. I ended up spending several months working on this project and I am very satisfied with the practical knowledge I gained choosing such a challenging project over the more obvious and less intellectually stimulating options I considered. The irony of this project though is that the end product appears mundane which after weeks of watching the dynamics explode, bad planning, and bad control is fantastic but obscures the complexity underlying the system. Below is a video of the car and following that is a report I submitted along with the source code.

Continue reading ‘CS6555 Computer Animation – Lab 5 – Simple Car Control’ »

CS6555 Computer Animation – Lab 4 – Reynolds Boids

In this lab, we were tasked with implementing the Reynolds' Boid model. Reynolds' paper defines an arbitration scheme where overall behavior is affected by suggestions from individual behaviors. The fundamental behaviors are collision avoidance [separation], velocity matching [alignment], and flock centering [cohesion]. Each behavior may cause a conflicting response from the simulated actor and so an arbitration scheme is used to determine which behavior is most significant. Reynolds proposes varying degrees of arbitration. The following demonstration does not use weighted sum parcelling, but instead uses the simplest scheme of a weighting factor to determine the most important behavior and to control based upon that behavior. An additional behavior is introduced in the form of a motivator [attracting] that gives the flocks overall movement the purpose to move toward the goal. Below is a demonstration of all four behaviors working in conjunction.

Continue reading ‘CS6555 Computer Animation – Lab 4 – Reynolds Boids’ »

CS6555 Computer Animation – Lab 3 – Physical Simulation

Physical simulation includes linear and rotation dynamics as well as collision restitution. Collision detection currently supports bounding spheres and axis aligned bounding boxes. There still exists issues when more than two bodies are involved with a collision such as when a ball gets caught in a corner or three balls collide in space.

Below is a demonstration of 10 balls dropped into a box.

Continue reading ‘CS6555 Computer Animation – Lab 3 – Physical Simulation’ »

CS6555 Computer Animation – Lab 2 – Hierarchical Animation

In this assignment, we were tasked with developing a hierarchical walking animation. The primary requirement was a basic bipedal motion, e.g. two legs attached to a pelvis, walking along a trajectory. I extended this requirement by developing a humanoid skeleton running along a trajectory. The hierarchy consists of links and joints where the joints are simple revolute joints, e.g. only one degree of freedom. The hip and shoulder joints actuate perpendicular to the inboard link while the knees and elbows actuate inline with the inboard link. Because this system is keyframe based, the joint constraints are a function of the joint trajectory rather than enforced by the joint itself and the animations are best approximations rather than physically based.

This first video demonstrates the final version of development and shows the running animation without any trajectory visualizations.

Continue reading ‘CS6555 Computer Animation – Lab 2 – Hierarchical Animation’ »

CS6555 Computer Animation – Lab 1 – Cubic Splines, Quaternions and Euler Angles

In this assignment I was tasked with developing a keyframe based animator capable of rendering a model following a cubic spline. Additionally, the requirements stated that the animator shall support both Uniform Non-Rational B-Splines and Catmull-Rom Splines and stated that the rotational movement calculations shall support both Euler Angle and Quaternion rotations.

The following videos are demonstrations of each of these requirements. The trajectory is that of a Double Immelmann flight maneuver. In each video and in the successive slides, the yellow arc traces the B-Spline trajectory and the red arc traces the Catmull-Rom trajectory.

The following video is a demonstration of the biplane actor following a Uniform Non-Rational B-Spline trajectory with rotations handled by Euler Angles:

Continue reading ‘CS6555 Computer Animation – Lab 1 – Cubic Splines, Quaternions and Euler Angles’ »

CS6554 Computer Graphics 2 – Lab 5 – Perlin Noise

In this lab, we were afforded the option of applying any of the topics presented in the last half of the term to our Renderer Project. I chose to implement Perlin Noise which is named for its pioneer Ken Perlin who won an Academy Award for this particular contribution to computer generated graphics. Perlin Noise can be used in a variety of ways to generate pseudo natural effects such as clouds, fire, terrain or even marble textures. The benefit of an approach like this is that complex and pseudo realistic textures can be generated procedurally from a small set of parameters as well as producing a texture that wraps exceedingly well in both the u and v directions.

Continue reading ‘CS6554 Computer Graphics 2 – Lab 5 – Perlin Noise’ »

CS6554 Computer Graphics 2 – Lab 4 – Texture Mapping

For this assignment, our goal was to extend our Renderer Project to include texture mapping, e.g. UV mapping, and use the Phong Shader we had already implemented. Texture mapping is akin to shrink wrapping, gift wrapping or wallpapering a flat sheet onto a complex shape. In order to support texture mapping, additional uv coordinates must be assigned to each vertex in a polygon. Loading and rendering a mesh file that already includes uv coordinates is trivial, but for our project, there are no uv coordinates precalculated in the file data so a critical requirement was to use a texture map algorithm to generate the uv coordinates for any mesh. There are several algorithms that can accomplish this, planar mapping, cylinder mapping, spherical mapping, etc. I chose cylinder mapping as it can be used to map rectangular topographical maps onto spherical bodies and I had already done the early research leg work to understand and apply this approach using 3ds max in my Earth rendering project.
Continue reading ‘CS6554 Computer Graphics 2 – Lab 4 – Texture Mapping’ »

CS6554 Computer Graphics 2 – Lab 3 – Shading, i.e. Constant, Gouraud and Phong

This class has tasked us with developing a 3D renderer from scratch without using any existing libraries. The only library functionality that has been used in these renderings is the point drawing facilities of OpenGL.
Continue reading ‘CS6554 Computer Graphics 2 – Lab 3 – Shading, i.e. Constant, Gouraud and Phong’ »