Tuesday, February 22, 2011

Acting to Dialog 2 - Blocking Stage

My second attempt at 3d animation to dialog. This is the blocking phase. I'll be pushing it into splines and revising some of the poses and layout based on received critique this week.

Sunday, February 20, 2011

Projects 350 - Week 6 Progress Journal: SSS Shaders and Rigging

Huge amounts of progress this week. I spent a lot of time learning how to use Subsurface Scattering Shaders in Max and Maya, as well as getting my rig prepped and ready for animation and skinning.

Subsurface Scattering Shader Setup

At the beginning of the week, I got a chance to get my diffuse map painted a little, with a start getting the head and hands a little bit more textural. Once I had a decent start, I began testing out the capabilities of the FastSSS shaders in Max, as I had heard they were a little simpler to use, and my finished model hadn't been exported to Maya yet. I played with the settings a bit and was astonished with the result. I quickly built a base specular map by converting my diffuse to greyscale and painting over the parts that needed tweaking (eyes, shoulderpad, etc) and made a rough normal map using the NVidia photoshop plugin. Enjoying the result, I created a quick turn-around set and rendered it out to use as a target for setting up the shader in Maya.



The detail and effect of SSS was astonishing, as it was my first chance to play with it and see the result. Even better, it really didn't add to the render time to any major degree. I burned off another closeup render to use as a target for the Maya shaders and got to work in the other program.



The Maya shader system, being node-based, offered a lot more control but was considerably trickier to get fully functioning. I found a wonderful set of free video tutorials over on Gnomon's site and went through them, taking a couple hours to really make sure I understood the concepts - longer then I hoped to spend, but I think it will be far worth it in terms of quality of the final product gained for the investment.

First I got the basic shader set up and began with the normal map, making sure it was still going to function properly, as the added simulated contour would help inform how the shapes were going to look in the renders, and it would tune the basic three-point lighting system I had set up.



I then began tweaking the different shader settings, beginning with the back scattering.



Once I got this blocked in, I recorded the settings, turned it off and blocked in the Epidermal Scattering layer.



Again, once this was blocked in, I turned it off and began the Subdermal layer.



I then began turning them back on, first adding a color map to the backscatter layer.



Then I brought the color map to the other layers and spent time fine-tuning the weights between them.



As you can see, it really knocked back the effectiveness of the shader, especially the normal map, but much of it is due to the fact that the different shader layers need to be painted more to get the most out of this. Also, at this point I didn't have the specular layer applied. I brought in the specular map I had created before and set it up in a rudimentary fashion, and then had to call it a day for this part of the process, as I had an appointment to work on the rigging.



I'll be going through the tutorial more to learn to fine-tune the specular layer, and will be following another tutorial on setting up a shader for the eyes separately from the rest of the mesh. I may also set up a new shader for the shoulder pad and the metal of the loin cloth and belt buckle, and possibly the cloth of the old sack he's wearing. The overall paint still has a lot of work to do, adding details and defining the shapes and contrast, but for a lay-in test this is working very well, in my opinion.

Rigging

I also spent a lot of time this week meeting with various folks about getting my rig set up - I worked with Suzanne Kaufman for a while, who showed me a lot of great stuff, but it was a lot like drinking from a fire hose. She was rushed as she had other appointments to make it to, and she knows a ton about the process and how to do it right, but we just didn't have the time together to really cover everything.

Megan Noble was quite helpful earlier this week, showing me how to create new attributes for controllers, how to orient joints and a number of tricks when it came to setting up the skeleton, as well as just answering questions when I'd get stuck or confused.

Earlier today, I spent a couple hours with Micah Zahm, who was gracious enough to give a couple hours tutoring me on the process of setting up a rig the correct way in Maya, teaching me about simple things I was doing wrong that can break a rig, and the best ways to do it right. It was incredibly helpful, as rigging has always been my downfall before, and he showed me a number of things I found very enlightening about the process.

Already, I'm finding Maya a much better system for all of this stuff then Max, at least in my limited knowledge. I was able to set up a full skeleton pretty quickly, and actually did it a few times before arriving at the final design.



I have a whole suite of features built into the design of the rig that I needed in order to have the most success in the limited amount of action I'm planning for the character. Ideally I'd like to use the character for other things later, but for the time being and my current needs, he's going to work out great, I think.

Micah was very helpful in showing me how to set up a reverse foot rig setup, and helped explain exactly how it works, which is something I've never been able to comprehend precisely before.



Essentially, the bone at the bottom of the foot doesn't get skinned to the mesh, it sits along the ground to allow the rig to pivot on its heel, but still allow the model to rise up on its toes or rock on the ball of the foot without lifting the foot controller but still moving the ankle IK, making the knee follow, as well.

You may also notice he's got a "wiener bone", as it was jokingly named. That is a series of bones created to be skinned to the loin cloth mesh only, allowing for secondary motion as it flaps around when he walks.

I've also set up a pair of bones for the eyes, which have Aim Constraints for the controllers which float out front.




The eyeball mesh is skinned entirely to those joints, and the joints themselves are parented to the head joint to make them follow in space. This lets the eyes rotate around inside the head without moving, but they follow the head as it moves. Just below the head joint is a joint for the jaw. I'm going to build two sets of teeth - one for the top row, which will be parented to the head joint, and one for the bottom row, which will be parented to the jaw joint. This will allow him to open his mouth and have the teeth follow. Finally, I have a pair of joints set up for the ears, allowing a lot of expression and secondary action in them.

I also spent a lot of time getting the hands set up to a controller. The hands themselves are IK controlled, and are moved by the wrist controller. The wrist joint itself has an orientation constraint to the controller, which allows the arms to be moved by grabbing and pulling them around, but keeping the hands oriented to the world, as they should be. This will be a little trickier in the animation, as it can be hard to maintain proper arcs with IK rigs, but they're necessary to lock down the hands in the world space when putting any weight or grabbing onto objects.



I also added new attributes to the hand controller and mapped them to the fingers, so that instead of grabbing controllers on every little joint I can manipulate them from a single space - much, much easier to work with and animate this way.

I still have a bit more to do to finish the controllers, and have a LOT of work to get the deformer targets built for all the expressions he needs (blinks, scowl, wonderment, confusion, grimace, grin, elation, surprise, etc), but I'm getting much closer, and am moving through a step that was previously daunting, thanks to the help of some very kind folks.

Wednesday, February 16, 2011

Projects 350 - Testing shaders

Just a quick post - got the first little bit of my diffuse map painted up a little, and started playing with a Subsurface Scattering shader pass. Lots of work left to do to really bring this together, but I'm excited about the results so far.

Sunday, February 13, 2011

Projects 350 - Week 5 Progress Journal, part 2

So I spent a bunch more time this weekend getting the model unwrapped and prepped for texturing. I found a great rainbow and numbered checker pattern so I can be sure I'm distributing the UVs where I need them, and that I'm laying them out in the orientation I want. The unwrap went pretty smoothly, with only a few parts that needed to be overlapped - the legs, arms, ears and eyeballs all share the same UV space, since they can be textured identically. All other features, including hands, the head, the feet and the costume, are textured individually.



The only parts I'll have to be cautious about in terms of seams are the cheeks and the wrists, for the most part. I had to make cuts there to get the mesh to flatten out without too much distortion, but painting over the seams carefully in photoshop by directly importing the model should help create a fairly seamless paint.



Once I had the UV layouts arranged, I went in and created a flat-color flood, to test out the model and be sure it looked okay.



I then applied the texture to the model. Success. So far, things were coming together, and it was exciting to see him with some color on him - it meant I'm that much closer toward my goal.

I then applied an Ambient Occlusion diffuse map to the model and set it up with a number of directional lights to eliminate hard shadows, so that I could render out a burned AO texture pass.



Once rendered, it created a basic shadowed and flat version of the model texture, which I could overlay on the original flood fill to help inform the shape and give the illusion of light hitting the model. This will greatly speed up the texturing process, and give a much better overall look.





The new texture was then applied to the model, and the components were re-separated from the mesh. I'm now having to step away from the project for a bit, as I've been neglecting my other work to get this far on it, but I'm glad to see so much progress and I'm looking forward to getting to paint him up.

Saturday, February 12, 2011

Projects 350 - Week 5 Progress Journal

Less progress then I'd like, but lots of technical background work, prepping the model for the next phase of development.

I've spent a lot of time working on getting the model cleaned up and making sure the topology is where it needs to be in order to animate well. I'm considering this last version the final, and am moving on to getting it unwrapped, rigged and ready to go.

I spent a little bit of time re-familiarizing myself with projection mapping tools in Max, and was able to create a reasonable tiling texture of chainmail, to be used on my little goblin friend's loincloth, which will add a little fun secondary animation to the model. To do so, I created a torus, rotated it into place and then duplicated it and moved it, creating a single pair of linked rings, then duplicated that set and moved it into place. By doing this step over and over, I created a good base mesh for the chainmail.



Once I got it set up over a plane, I scaled it to the point where I was reasonably sure it would tile well, then used the Render to Texture panel to project the chainmail mesh onto the plane below, creating an alpha, normal and ambient occlusion map set.



This resulted in three 1024x1024 texture maps, one for each of the passes. The transparency map will be hidden in the alpha channel of the diffuse map, once I paint over it. The ambient occlusion pass will be used as the base color channel for a paintover to create the diffuse map, and will help inform the specular map, as well. I'll be laying over rust colors and textures to help that process, when the time comes.



To test the new setup, I imported the file into CrazyBump to ensure it tiled well, and it does, at least reasonably well. It isn't perfect, but for my purposes it'll do well.



I'll be using this method to create better normal maps for a number of the props and pieces of my environment, and using CrazyBump to help create texture maps for much of the process, as well, as it seriously helps speed up the process - making normals for pitted iron for the shoulderpad and anvil, for instance, or the bark of the trees, is a snap in CrazyBump.

I've begun unwrapping the model, and am looking at a number of tutorials and plugins to help expedite the process. There are good ones available at the classily-titled site Poopinmymouth.com. I've gone back and forth on this process a bunch of times, getting mixed results, but I'm determined to have this portion done by the end of the weekend.

Finally, I've also begun rigging the goblin in Maya, and after speaking with a number of fellow students I'm moving forward with the process.



I've got the skeleton itself in place and have begun basic tests for the skinning showing a lot of progress - the joints seem to deform quite well already without having gone into the weighting refinement process, which means that completing the skinning should go pretty well once the rig is complete.





I've started the process of setting up three arm bone sets so that I can have a switch between IK and FK-controlled arms, which will be crucial to the animation I have planned. I've found a good tutorial here that should help the process.

I've also learned how to set up additional attributes and link attributes in Maya to controllers or controller sets, so I can do things like have a single controller for all of the fingers on one hand, for example. This will greatly ease the animation process, and is good experience to get under my belt.

I'm going to keep pushing forward on this stuff all weekend, and I have an appointment for later this coming week with Micah Zahm to help fix any issues I can't resolve myself. All in all, I should be through with this technical hurdle soon, which is exciting - this is what nearly sank my project last semester, and I've learned that it is best to go into something this technical that I'm not particularly strong at by planning carefully and seeking help from the folks that know it well, rather then keep bashing my head against the wall and hoping for the best.

Tuesday, February 8, 2011

Acting to Dialog 1 - Completed

I finished my first CG Acting to Dialog project and will be moving on to the next one this week. You can watch the completed product below:



You can see the blocking stage for this animation in an earlier blog post here.

Sunday, February 6, 2011

Projects 350 - Week 4 Progress Journal

At the beginning of this week, I had started with the UV unwrap process when Mark Peasley suggested I revise some of the mesh to optimize it for deformation before going too far into the unwrap. As much as I wanted to just get the model unwrapped and start painting the texture, I knew he was right, so I made sure to put attention into the trouble spots on the mesh, which is where the majority of my attention went this week for this project.



I made sure to add additional loops around the facial features that were going to see the most deformation, as well as optimizing the joints.



I added additional loops around the ball of the foot area, as there was going to be substantial bending here and it needed to work naturally. I also added a "patch" around the knee to help keep the form from flattening oddly when it was bent.




The elbows received the same treatment. I also made sure to optimize the loops around the knuckles and wrists.

I still need to go in and add the geometry for his single glove, but that's a trivial matter of just extruding and pushing the mesh and then pushing a couple verts around to clean it up.



I've also begun testing out my first foray at rigging in Maya, and already really like the setup far more then its Max counterpart. I've got a ways to go, especially getting the IK-FK blends set up properly and the facial deformations in place, but I've begun the research and sketching for that process, as well, and should be good to go in two weeks time.

With that schedule in mind, getting the model unwrapped and a base texture down in the next week or two is a goal I can handle. Getting a block model built of the environment, the props built and the initial shader research all in the next four to five weeks is do-able, and I'll be starting my animation planning in that time frame, leaving me plenty of time to complete the project and hit all of my goals, providing I don't hit any major technical or personal snags along the way.