I got this character I have been working on for a while that I plan to rig and put in some game engine. Probably UDK. He has these tube things that run from his backpack thing to his gloves and boots. Right now they are just cylinders that are path constrained to a line. I'm not quite sure what the best way to make these would be and how to rig them. Would dynamics work, or would turning it into an editable poly then adding bones work. What about leaving it on the path constraint and animating the line its constrained to?
I have a bit more modeled on this guy at the moment, but I'm still stuck with the tubes.
Replies
If this is just for animation fun and the sky is the limit for the number of bones, you might want to set up stretchy bones, where there is a helper at each bone pivot that you can move around and the bones stretch and scale as needed. Depending on what software you're using there are probably scripts to assist in setting up a stretchy bone chain. I know there are a few for max Jason Labbe has a pretty decent stretchy bone script.
Personally I would do the wires with simulations and if needed assign helpers to the surface of the simulated wires and create a simple blending system similar to an IK/FK switch for arms, so you could blend between the two systems. Using the simulation when it works and animating the helpers when you need something different, like returning to a root pose or the simulation just fubars on a very difficult motion, and its faster to animate around it rather than fix the sim.
You can do this for games also but it depends heavily on the engine and what the priorities of the game are, if you can use floating bones, scale on bones, how many bones do you have to make it work? Do you have to sacrifice finger bones to make tube bones bla bla bla...
It's a similar method to "capturing a cloth simulation" which I outlined here:
http://www.polycount.com/forum/showthread.php?p=1021761#post1021761
But honestly most of the time tubes crossing highly active joints like that get nipped at the design stage because of the complexity of the solutions you need to pull them off, especially for games.
Thanks for the help.
Many bones ARE a bad thing yes as it's more bones to store/blend animations for and AFAIK they're all kept memory resident on-GPU as an array.
The problem is that the shoulder is a ball joint and rotates almost 360 degrees, then the elbow bends on one axis and the wrist and forearm twist. It's really easy to get a combination of rotations down the arm that make the tube look like crap, especially if the tube is connected to the hand like in the OP.
If the design was changed a bit to connect it to the forearm it might work better but then you still have to contend with the wrist twist being spread down the forearm. So you probably want the connection point to be close to the elbow where the twist is pretty minimal.
But it really depends on the range of motion that is required. If the person is holding a gun in one potion and the arm isn't really animating then great its pretty easy to rig. If the arm is doing all kinds of motions then its a nightmare. You really need to work closely with the engine and probably a programer, to make it look good and stay on the tech budget.
And yes more bones is bad, there is often a limit to how many bones a single mesh can be bound to, so more than likely you would have to break the tubes off as a separate object that gets skinned apart from the main mesh, a bit like a gun is separate from a player model, sort of... This happens quite often with customizable heads and gear, typically a little programing trickery is required to get it all working right.
Not only do you need to worry about how many bones you have in your rig but you need to worry about how many bones are influencing each vertex. Typically games max out at 3-4 bone weights per vertex. In max and Maya there are controls to cap the number of bones per vert but in max the default is 20 so make sure you set that pretty early to 3 or 4 or it causes all kinds of headaches later.
..kudos to the bot programmer. had me going in one of the other threads.. what exactly is it they want?