Here’s the rig demo, as promised!
Tonight I put together the control rig for Metagross. I hope to get a demo video together soon (I want to do it tomorrow, but I might be busy with work and non-CG stuff). But here’s a quick overview of what it can do:
- IK legs, with automatic piston movement. The pistons use the classic method of tracking the two pistons at each other.
- Claw adjustment (just as per-leg sets, didn’t want to take the time to do per-claw movements). This is controlled by a small ring below the leg. Push the ring up to open the claw, pull down to close it. Uses the transformation constraint to copy the ring movement to claw-bone rotation (no drivers needed!)
- Eye look target, both per-eye and a master control for both eyes
- Body raise/lower, independent of center-of-gravity
- Brightness adjustments for all the lights (eyes, side lights, arm lights, etc).
The legs are actually made from a serious of dupligroups. Each leg is made up of 8 or so empties, each one dupligroup-ing a set of geo from the leg. These are broken up by how the pieces of move. For example, there is an arm-baseplate group, a piston group, a connector-shaft group, a claw group, etc. These empties are constrained to bones in the “movement rig” (which is hidden) and those bones are in turn manipulated by the pretty control rig scene above.
This means that rig-geo object updates don’t need to be done for every piece, just the empties on each arm. It also saves RAM at render time by instancing all the arm geometry across the different arms. (so you get 4 arms for the price of one!)
TBH, I’m rather impressed with myself for setting that up. I guess it makes sense in the end since it’s the same type of method I set stuff up with in Maya all the times (groups with geo loaded in them). But I actually spent quite awhile trying other ideas that didn’t work for how to efficiently duplicate the legs. At one point I was considering dupligrouping static pieces and adding rigged-bits separately to each leg! The current rig is far more efficient than that, and I’m really pleased with how it has ended up. This whole project has been a big study in concepting and hard-surface modeling, and I’m honestly amazed how closely the final result resembles the idea I had in my head. On my personal projects, I’ve been trying to shift my focus away from always “finishing” the project, and trying to focus on the process and creative journey of the whole thing (oh God, that sounds so pretentious…).
But really, this project has taken ages, but l’ve learned a TON along the way. I know how to do things I didn’t even know existed when I started (fuck yeah panel loops!). I always feel a little uncomfortable doing fanart, but it’s awesome to see a Pokemon come to life like this, and having someone else’s concepts to work off can be a great way to jump-start a good, massive project.
Textures aren’t 100% done, I still want to do some decals on Metagross. And the floor could use a little touchup too.
Also, been debating on whether or not have a glossy clearcoat (like on a car) on Metagross. It looks cool, but I’m not sure it fits with the metal texture.
Metagross still isn’t posed. The mechanical rig is actually pretty much done (FK arm movement works), I just need to finish hooking up the other 9(!!) claws and do the control rig. I also want do a short animation with it, like a sort of product demo video. Might need a few other rig controls for that though.
Does your scene have a light source with a glass cover on it? Headlights, flashlight, lantern, etc? Here’s a little tip for the glass. Use this shader instead of the glass bsdf or a refraction/glossy mix:
This way, the “glass” is considered transparent instead of transmissive. This gives a few nice benefits:
- The light is not considered a “caustic” and will shine even with no-caustics enabled, and be MUCH easier to sample if you are lighting with it directly (instead of an invisible lamp outside the fixture)
- The light source is considered direct, meaning it is affected by the “clamp direct” value instead of the harsh, firefly-stomping “clamp indirect” setting
- Being direct light also means it will appear in the “emit” pass instead of the transmission passes, which makes adding glow effects and adjusting lamp power a lot easier.
There’s also another even further optimization you can do. This shader, containing the transparent bsdf, casts transparent shadows. Transparent shadows are bad, they make sampling lamps slower (Cycles has to call the shader, then trace another ray the rest of the distance instead of simply seeing if it hit something or not). While it won’t usually have a big affect on some small panes of glass, you can squeeze out a little extra speed by disabling shadow-casting entirely for your glass object in the ray visibility panel:
Oh dear, I’ve been neglecting this blog, haven’t I?
Well, here’s an info dump on what I’m currently working on. (need to make sure this places makes me look good, showing off my “brand” and all that awful networking stuff)
So here’s Metagross
Here’s a layout experiment:
The idea didn’t start from anything in particular, I just figured it would be fun to make. It’s been awhile since my last Pokemon project, and while I sometimes feel like I’m leeching by making fan art, I always seem to learn a ton of stuff on a project when I can borrow someone else’s ideas to get things started.
So here I am, re-imagining Metagross as a futuristic data center security mech. I’m happy with my progress so far, especially considering how little I knew about hard surface modeling when I started. I THOUGHT I knew a good bit, but it turns out I didn’t. I have no progressed from Jon Snow levels of not knowing to merely “n00bcake” levels of not knowing what I’m doing.
The project has a good bit to do atm. Most of the modeling for Metagross is done (although I still want to detail out the head/body a bit more). The datacenter equipment needs a lot more work. I’ve built each piece of equipment as its own group, then assembled the dupligroups into sets of servers. Then made a group of the set. So in the scene there is about 300 empties, each one duplicating a single 19in rack. My plan is to make a bunch of different sets, then use a script to randomize which one each empty has. I’ve successfully written the script (with some help), but I’ve only made 2 groups so far. Need to buckle down and make a few more…..