Robert Allen

DPA 8070 - Fall 2019

Contents:
Projects:1 | 2 | 3 | 4
Exercises: 1 | 2 | 3 | 4 | 5 | 6 | 9 | 10 | 11 | 13 | 14

Project 4
December 12, 2019

Project 4: Choose your own adventure:

In this project, I was tasked with pursuing an as of yet unexplored area relevant to the class or explore more deeply one of the topics we had covered in class. Naturally, I bit off more than I could chew, but ultimately learned a lot about what not to do in Maya. My expressed goal was to animate two humanoid models within a humorous vignette in the style of a Buster Keaton or Charlie Chaplin film. I began by modeling and rigging my own "blockman" robotic characters, one apparently adult and one a small child. In this part of the task, I was successful. The characters are simple but capable and relatively easy to pose.

One goal that I struggled with for a long time was the use of physics simulation to help create some interactivity for the characters. Getting the simulated objects to behave in a predictable fashion absorbed too many hours of my time in the long run and ultimately I had to abandon the use of this idea. Even getting a simple cube to collide and then move with a rotating conveyor belt proved beyond my ability. I tried using each of the simulation plugins I could get my hands on, but still I failed in this task. Ultimately, the only bit of simulation that ended up making it into the final product is a few puffs of Bifrost Aero-generated smoke.

Because I was doing so poorly at simulating, I decided to at least make the project look as nice as possible. I had modeled and rigged my own characters and complex, animated environment for them to play in. I chose to use Arnold as the renderer and used a lot of lighting to add more atmosphere to the scene. I really enjoyed how clean the non-textured shaders look, almost like the facility is mostly made of plastic toy material.


Visible: Small puff of steam, one red light on the console (indicating a box must be dealt with buy the grabber arm).


The adult robot tries to intervene in the child's exploration and inadvertently causes the grabber to whack the itself in the head.

Ultimately, I'm disappointed in my product, but proud that I began with no external assets and created a full, if simple, scene with rigged characters, complex motion, and lighting, plus I had to get creative with some expressions and weighted constraints in order to make the grabber arm work convincingly. I sank so much time into the failed physics simulations that I didn't leave much for rendering... Turns out, 10+ hours isn't enough! I was only able to render out about 7 seconds of the project by the deadline. I do really like the appearance of the scene, but I wish I had succeeded in the simulation.

Link to Maya Binary
Link to video (h.264)




Exercise 14
November 11, 2019

Project 3: Bringing a Unicycle to Life

In this project, I was tasked with rigging and animating a model of a unicycle.

Thumbnail:

Planning: I began by thinking about what I'd like the unicycle to be able to "do". My initial idea was to have it energetically enter the frame and then "see" something that makes it become despondent. I therefore determined that the rig should allow me to use the seat as a head that can look around, to bend the upright portions as if they were a backbone, and to roll along the ground without keyframing the rotation of the wheel.

Rigging: I added a Bend Deformer to the SeatAndBars portion of the model, so that I could easily keyframe any bending the upright section needed to do. An Aim Constraint was used on the seat to provide a point of focus for the "head". The wheel was given a control curve. The full model was given two control curves-- one for translation and Y-rotation, and one for Z-rotation only. I also created a single control curve that controlled the attributes for Squash/Stretch and Bend.

I relied on expressions for a few control links, but in some cases I could have used set-driven keys instead. For example, instead of using a single driver to control both a squash and stretch key, I used an expression to make that attribute proportional to stretch and inversely proportional to the squash. The biggest time saver was the expression that controls the wheel rotation as a function of the value of the model's position along its motion path constraint.

Animation: As mentioned previously, the model squashes and stretches as it leaps over an obstacle, and follows an arc as it does so. The upright section bends to variously provide a bit of followthrough or anticipation. As the unicycle rolls or leaps, the pedals are moving, and the seat seems to look around to provide interesting secondary action.


So squishy!


This unicycle must not have great vision. This text is very large and the reader is very close.


A dejected unicycle.

Video Download (h.264)
Maya project binary
Maya project archive


Exercise 14
November 6, 2019

Methods/Tools/Insights from a tutorial

Once again, just watching a professional talk through their creation process as they are actually doing that work is incredibly informative and helpful. In this case, I continued watching the Maya 2019 Fundamentals tutorial by Mark Masters, this time the section on Rigging Completion.


Creating a custom attribute for the purpose of driving a key: One tool I will absolutely use moving forward is the addition of an attribute to a control curve with the single purpose of driving a key. This is accomplished by selecting Edit > Add Attribute in a control curve's Channel Box. The ability to create unique attributes this way will allow me to drive keys with custom minimum, default, and maximum values. In combination with Expressions, this keyable variable will open up opportunities for controlling multiple attributes of multiple objects simultaneously.


Keep out of trouble by keeping it clean: Where possible, it is best to lock and hide any attributes of a control curve that are not necessary to the proper use of that curve. For example, if a curve is meant to control a rotation in one axis and only that, it is best to lock and hide the translation, scale, and two other rotation attributes. This both simplifies the workspace and keeps the future animators from accidentally misusing the curve. Clean and simple. This is something we have done in class, but having the point reiterated so many times in the tutorial really drives the point home.

Organization, organization, organization: This insight ties in heavily to the above insight, but it seems even "simple" get really complex really quickly. With so many interconnected parts, the amount of time spent organizing things in a logical and simple way is well worth the time invested. Curves can be color coded. Groups are placed into supergroups depending on their use. Logical, consistent naming conventions make finding and identifying the indiviual components of the model and rig possible. These are all points we return to in class, but once again, seeing them reiterated so frequently during the process in the tutorial is helpful to drive the point home. It seems like good organization is among the most important parts of the rigging process.


Exercise 13
October 28, 2019

Create an alteration of a walk cycle.


Once the skeleton was complete, I created IK handles for the limbs. I connected the rotation of the joints of the spine to a curve that I used to control the spine as a single unit.

I wanted to create an asymmetrical walk cycle so I chose to make the character appear injured or cramped. I constrained the right arm IK handle to a point on the belly geometry to make it appear like the character was holding their gut. The head is influenced by an aim constraint so that it stays pointed in the same direction instead of flopping around on the end of the neck. The right leg barely lifts off the ground, only moves a small distance forward, and spends very little time as the forward leg. The left leg moves very quickly from its most rear position to the contact position. The spine is hunched over and, along with the arm, seem to react to the character's pain and momentum while placing weight on the right leg.

I manually keyed the angle of the ankles, which was my best solution at making the soles of the feet remain parallel to the floor. This didn't work particularly well, especially on the left foot, which wiggles noticibly. I would like to find an elegant way to keep the foot meshes from intersecting the floor mesh, in a way similar to how a geometry constraint keeps two meshes in contact.


Exercise 11
October 22, 2019

Examples of the principles of animation in Snow White and the Seven Dwarfs


A number of the principles of animation are present in this one shot. Arcs describing the two little leaps, overlap of the legs while walking, the appealing oversized eye and head, and several others are used effectively on this one character's motion across the stage. The following principles are especially noteworthy.


Anticipation: The chipmunk poses to jump forward by compressing backwards like a spring to be released. This springlike motion makes the character much livelier than they would be otherwise.


Squash and Stretch: The image holds here on the poses of maximum squash and stretch in the direction of motion. Clearly there is a lot of change in shape that emphasizes the softness of the character's body while giving it a sense of weight.


Moving Hold: This is an obvious attempt at using moving hold to provide a sense of life to the otherwise still character. In my opinion, it's only partially effective. The utter stillness of the rest of the chipmunk's body is still a little jarring.


Project 2
October 21, 2019

Task: Recreate a picture as accurately as possible using models, shaders, textures, and lighting.

The source image:
This is an image of a stopped decanter and two glasses on a wooden tray. The vessels each have some textured gold banding and contain a warm brown liquid that for my own enjoyment, I imagine to be whiskey. The scene is set against a gray-white background with diffuse lighting.

My recreation:

In this view, I attempted to recreate the scene as closely as I was able.


This view features the texture detail on both the glasses (I chose to map the gold area' diffusion attribute) as well as the pattern on the decanter's lower gold ring (a bump mapped texture).


This reverse view of the scene shows the texture of the wooden tray well, and exposes the rectangular object I placed out of the shot to generate more interesting reflections on the bottles themselves. The source photo had even more complex reflections happening, likely showing the photographer and their studio. Unfortunately, it was not in my budget to recreate these reflections to that detail at this time, so this was my attempt at providing some of that detail.


All three "volumes" of whiskey make use of the same shader. The difference in color shown here is a function of the depth of each. I spent a lot of time trying to fine-tune the color, reflectivity, of this shader to accurately recreate the color seen in the original image.


This screenshot shows all of the wireframes of the models and lights in the scene. Since the lighting was so diffuse, the only type of light used is Arnold Area Light. There is a key light, fill light, and back light, as well as a light that simulates a higher reflectivity off of the back wall (increased back light) and an additional "special" light that helps create additional reflections in the final render.


This is the shader network for the wooden tray. I used a black and white image of wood grain to supply information to base color, specular roughness, and bump mapping. A colorized fractal noise was composited with the image to finalize the base color, and another color composite node serves to reduce the contrast of the specular roughness input.
This screenshot shows the models, the background, source image plane, and camera, as well as portions of the area lights.
Link to project Maya file
Link to project archive (includes textures) (Maya scene file is located at \documents\maya\projects\Project2\AllenRobertT_p2. Apologies for the folder structure.)


Exercise 10
October 9, 2019

Task: Use lessons learned in shading, lighting, and rendering to make the model from Project 1 look as great as possible.

The result:
MP4 download link (h.264)

Since the task said to make the model look great, I chose Arnold as the renderer. I utilized the three-point lighting technique, with the backlight being a colorful spot light for a more dramatic look. Since my model was only one object, I could only achieve so much through shading alone. Once I had edited a StandardSurface shader to my liking, I opted to create a texture for the model by using the UV editor to carefully Cut and Unfold the model. I then used Photoshop to create the pattern of black areas on a blue-green field as seen below.

I'm pretty sure there's a more elegant way to go about fine-tuning the look of the texture (in regards to the position of the black areas especially), but I was able to achieve this result through a guess-and-check method.

One area I'm not satisfied with is the bump mapping. I was able to achieve a generally bumpy surface, but the original model has intentional folds and creases in areas that seem to make sense for a large, articulated animal. With more time, I think I could play with the UV layout in Photoshop to generate an accurate bump map.

Finally, when it came time to render, I gave my floor some interesting texture but left it highly reflective because I found those reflections interesting. I enabled Depth of Field in Arnold and fine-tuned it in order to help sell the small size of the model. Some of the background blur was unsatisfactory so I raised the camera sampling numbers until I found a medium ground between quality and render time. I would have likely added motion blur in as well since the camera orbits quickly, but this increased render time greatly and conflicted with the goal of showing the model clearly.


Exercise 9
September 19, 2019

Problem: Create lighting and shaders to match a photo each of an orange and the planet Jupiter.
Solution: Using a variety of lights and shader networks, I attempted to match the appearance of each object to its source photograph.

The result:

I'm pretty happy with how the orange turned out though I cheated a bit and gave the orange an slight indentation to help it catch the light more accurately.

Jupiter leaves a lot to be desired but I think I'm on the right track. The lighting is pretty flat, presumably being lit by one source at a great distance, essentially a directional source. My work on the shading could use improvement. I need to find more time to play around when given these kinds of assignments; I enjoy them and with more tinkering and experimentation I think I could have done a better job.
I rendered both spheres in the same scene, using Light Linking to isolate one object and its set of lights from the other object. There are five lights for the orange and one for Jupiter. As it is now, three of the lights on the orange are playing the role of the fill light and with more time I believe I could find a way to reduce them into one area light.


The shader network for the orange. I began with a Blinn because I desired control over the specular highlights, then chose a bump map to give the rough texture. To randomize the bumpiness, I chose a fractal node and adjusted the entire network incrementally, rendering with each change to observe its effects, until I liked the result.


The shader network for Jupiter. I began with another Blinn and diffused the specular highlights until it was almost Lambert-like. I added a V ramp shader and chose colors to match the primary color bands of the atmosphere and making use of the built in fractal noise to give some irregularity to the bands. I then wanted to add complexity so I fed the initial ramp and Blinn into a layered shader. I duplicated the Blinn and ramp, feeding them both into the second input of the layered node. This time, I adjusted the colors slightly and increased the ramp's noise and noise frequency greatly. Ultimately it sort of resembles Jupiter but I'm not satisfied.


Project 1
September 25, 2019

Problem: Use poly and/or NURBS modeling to create an acurate model.
Solution: I chose a small blue-green dinosaur and used poly modeling tools to create as close a likeness to the original as possible.







Process: I began with a cube and my photographs as image plane guides. Mostly by inserting edge loops and extruding, the model begins to take shape. I constantly checked the various orthographic views to insure I was making the model as accurate as possible.

I continued the process of extrusion and shaping to create the long neck and legs. Unfortunately, the orthogonal image plane guides became less useful as I needed to add asymmetrical legs to both sides of the model. The occlusion of one part of the model made the matching much more difficult at this stage. Additionally, my photos are not perfectly square or scaled. In my initial scaling, rotating, and zooming these images to match one another, I realized I wasn't going to be able to achieve a perfect guide and would eventually need to rely on the model itself as well as the other photos I had taken.

The face presented some interesting challenges. I had to create eyes with prominent brow ridges as well as a mouth. I began once again by extruding the eye topology and moving edges to create the desired shapes. Additional edge loops were needed in order to fine-tune the look of the eye brow ridge. I was pressed for time on this project but I would have liked to spend more time getting this section more close to reality.

To create the mouth, I extruded a couple of times to create a "border" section that would become the lips. The interior faces of the mouth were then deleted and the hole was filled by using Targeted Weld to bring all the vertices around the hole to a single point. This seemed to accurately reflect the mouth of the toy pretty well, and allowed me to add more edge loops when I decided to refine the look of this area further. I'm happy with how this part ended up.

Result:
Maya Binary




Some good things: Given the limited amount of time available, I think I achieved a reasonably good facsimile of the object. There are no n-gons. The scene is simple, with only one object.

Some not-so-good things: I think the face needs more detail to appear accurate to the original. Also, the feet and lower legs are oversimplified and not particularly faithful to the model.

Bonus photos:

The dinosaur got to take a plane ride and enjoy some lovely weather while flying over the Great Plains.


The dino enjoyed the view from his room in the mountains near Boulder, Colorado.

Next project, I think I will focus on actually modeling instead of taking the model on a trip.


Exercise 6
September 19, 2019

Problem: Watch 10 tutorial lessons and describe what was learned.
Solution: I chose to watch "Polygon and Sub-D Modeling Workflows in Maya" and wrote about it below. The model for my first project is also a Dinosaur, so I focused mostly on methods that will help me with that task.

1. Image planes are necessary to give the user a reliable reference for creating a model.
2. An EP curve can be used to define the outline of the model by referencing the image planes. Surfaces > Loft can then be used to define a surface between these curves.
3. Extruding a cylinder along a curve can be useful for building a leg. Combine and merge will allow two separate parts to become unified.
4. Basic manipulations of edges and vertices are the preferred method of altering the shape of the rough model. The process is time consuming.
5. The extrude tool is useful for extruding toes from a foot piece. Duplication is a good method for producing multiple toes from an initial toe.
6. CV curves can be used in a similar way as EP curves to create surfaces as demonstrated in lesson #2. Bridge can be used to connect the new surface to the main body.
7. Repeatedly switching between orthogonal and perspective views is important when fine-tuning the shape of parts.
8. Rotating and moving components of a part like a finger is a good way to change the shape of the model, especially similar (but not identical) parts, like individual fingers.
9. Merging vertices is helpful when cleaning up n-gons and other spots where edges may awkwardly intersect.
10. Resolution should be added carefully and only where needed. This is especially useful when adding detail to surfaces without causing undue complexity to the rest of the modeling process.


Exercise 5
September 16, 2019

Problem: Create a lamp using NURBS tools only.
Solution: The main body of the lamp as well as the lampshade are perfectly suited to be created by using the Revolve tool.
I began by drawing a curve using the EP Curve Tool that resembled one side of the object's profile and then revolved the curve 360 degrees about the Y-axis, making sure that the uppermost point was snapped to the grid to avoid a hole at the top. I then repeated the process for the lampshade.


I ran into difficulty when attempting to create the more rectangular base section. I began by trying to manually move control vertices the lower portion of the revolved lamp surface to create sharp corners. Unsuccessful in this attempt for some time, I attempted to find a way attach some NURBS cubes to lower section of the lamp. I was unsuccessful in this attempt as well. Feeling a little defeated, my final result is made of the two revolved surfaces (the main lamp body and lamp shade) and two NURBS cube primitives. I'm interested in revisiting some methods on how to unify these surfaces into one object.


Exercise 4
September 9, 2019

Problem: Create a computer desk using the modeling toolkit.
Solution: I began with a cube and scaled it such that it resembled the top of the desk. I divided the desktop and moved the edges so that I could extrude the back and drawer sections at the same time. I continued to use extrusion to create additional decorative features. I added edge loops across the bottom of the drawer area so that I could make the beginnings of the four legs and then extruded all four at once, creating the basic features as I went.
The initial, non-smoothed result looks acceptable. Unfortunately, there are some details missing that are present in the original, such as the banding that connects the upper leg sections, chiseled-looking portions near the drawers and on the legs, as well as drawer hardware. When I began to shore up the hard edges for the smooth view, I ran into issues.


Here, we can see the result when the model is smoothed out. This step met with some success. Bevels are appropriate in many places and work well. Edge loops, added using either the Insert Edge Loop or Offset Edge Loop tools, work in most places. Unfortunately, I ran into some problems that I think are caused by the incidental creation of n-gons during the process of adding edge loops or extruding faces. In these cases where adding and edge loop wouldn't work, I tried to use the multi-cut tool to break up the n-gons into quads and triangles, but still found the result unsatisfactory. I actually started from scratch multiple times in an attempt to work around this issue, but found myself frustrated by it each time. Eventually, I ran out of time to experiment further, so the result above is the best I've got for now. Regardless, I'm looking forward to seeing how others have overcome these issues and improving my skills.


Exercise 3
September 4, 2019

Problem: Create a detailed model of a lemon squeezer.
Solution: I began with a poly cylinder primitive and edited the top surface to have more divisions than by default. I initially only added a couple more using the channel editor, but when I discovered I needed more, I used the Mesh Tools > Insert Edge Loop tool to create more where needed. This came in very handy when it came time to fine tune the curvature of the bottom exterior, which I had failed to notice at first. I selected edge loops and moved and scaled them to create the main "bowl" shape.
Once the bowl portion of the model was complete, I focused on creating the "juicer" portion. I first used soft selection to pull the bottom part of the bowl upwards, creating a cone in the center. By selecting alternating radial edges, I was able use the scaling tool to bring the juicer's ridges into being. Luckily, the resulting curvature seemed to match the source model. If I needed to further adjust the "sharpness" of the ridges, I'd likely need to go to a lot of effort to add more radial divisions here.


The next feature I focused on was the pour spout. I moved individual vertices and made use of symmetry control until I was satisfied with the result.


Late in the process, I noticed the shape of the bottom exterior of the lemon squeezer. There is a concave bevel here that required me to add, move, and scale some edge loops until it resembled the source item.


Exercise 2
September 2, 2019

Problem: Animate a solar system, given a number of planets and moons. Vary the rotation and revolution speeds and use a variety of primitives. Keep the scene clean.
Solution: The exercise requires primitives to rotate under the influence of multiple keyframes simultaneously. The proper use of groups and parenting will allow control over these properties to be made simple. The hypergraph will help visualize the relationships between the moving solids.


.AVI link
Here are our eight planets and a few moons orbiting a sun. There are a variety of primitives rotating around their own axes as well as revolving around the Sun. In order to make more obvious the y-rotation of some objects (such as a cylinder), the objects have been rotated along their x- or z-axis. When parenting moons directly to these rotated objects, the moons would inherit this axial rotation, causing them to revolve outside the original plane. Since the assignment did not specify whether or not all objects should remain in the same plane, I suppose it may have been fine to leave them this way. However, I thought it would be an interesting exercise to see if I could figure out how to get them back. The simplest solution seems to be parenting the moon to a planet's rotation group (as seen in the hypergraph below) instead of to the parent itself. This does however remove the addition planet's rotation y-axis rotation from the movement of the moon. If this motion were necessary to incorporate, I think I would try adding another group for the planet's y-axis rotation that both the planet and moon are parented to. The x- or y-axis rotation could then be applied directly to the planet without affecting the moon.
.mb Maya scene link


Exercise 1
August 26, 2019

Problem: Build a robot, using only primitives. Scaling, rotating, and translating are permitted. No extruding or moving vertices. Must use at least one of each primitive.
Solution: The assignment allows for a lot of creativity in the form of the robot, so I decided to make something non-humanoid, using a variety of different solid shapes.

Front-left view:

The model consists primarily of polygon primitives. A pair of cubes makes up the head, a torus the neck, and a large sphere forms the lower body. The right eye consists of a torus and a flattened cone. The right eye is a sphere partially embedded in the head. The right arm is made entirely of NURBS primitives. The right hand is just a torus--maybe the robot uses it mostly as a cupholder.

Rear-right view:

From the back, the head somewhat resembles a CRT TV with an antenna. Also visible, a conical shoulder piece on the right arm.

Left arm detail:

The left arm includes a gear, helix, and platonic solid in addition to the more common polygon primitives, mostly because I was having fun playing in the software and thought they were visually interesting.


To the top