Hey guys,
I'm a freelance animator and i work mostly for independent game studios that need some fast and quality work done for their projects. I'm no master or genius of animating, i'm just earning some bucks on what i can do.
However, today i received a very though job. The client want's me to animate female characters. So far, so good. But he wants me to animate their clothes (parts of long dresses), hair and boobs.
Not only i never did that, i don't have any idea on how to start. Which techniques to use? How to make the final animation compatible with most game engines? Hope you guys can help me.
Replies
What kind of dress, big hoopy Cinderella ball gown? Tight mini skirt? Or something in between?
What kind of hair? Ponytail? Fro? Long loose hair?
How much rigging can you add? Is there a bone or constraint limit?
If you can't get answers, then make sure your contract doesn't specify that you're responsible for getting the final animations working in their engine. Bucket o' worms!
Better than the programmer, get in touch with the technical artist on the game (if there is one).
I sent an email, but i'm pretty sure they're using Unity or Torque. That gives me FBX or COLLADA as output format.
Is there any technique i can use? Simulating the boob movement, as well hair, would be a pain in the ass using bones, and most importantly, would not feel right.
A) did my workflow as usual.
I don't use biped, instead I have my own bone structure that is later rigged to a controller in-game.
C) Anything like jaws, blinkers, mantles, capes, etc are a series of bones I add to the main skeleton.
The same goes for gowns, robes, and so on. I animate my character as usual, nothing different (the same as you do your Biped-humanoids). Then I add extra bones for all the extra parts like veils, gowns, capes. I animate these independantly.
The last engine I worked with did not support vertex weighting on a skin model, so things like hair and boobs having weight was out of the question. I cheated with the hair by making it a seperate object, but for the boobs I put bones in them. I then worked with the controller/ik and curve editor so the bones would react accordingly to the movement. A lot of times I just did the animation by hand to make them "springy".
For skirts and robes, I put a series of bones along the center and rear of the model. These bones were then animated so that the cloth did not clip through the model.
In the above image I was presented with a challenge. Before then all of the skirts I had done didn't have that stupid slit running down the thigh. But the slit complicated stuff for me alot.
There were two methods I did:
A) The legs had their own bones and moved independant of the skirt. The skirt had it's own bones which I animated to the rythm of the legs making sure they didn't clip.
Hybrid, the skirt was affected by both the leg bones and the skirt bones.
I went with option B for a couple of reasons; I didn't want to have that many bones on the model. The skirt bones also control the mantle, this method also prevented you from seeing in between the legs. To sit down, they bend at the knees while keeping their legs together, and then they sit sideways, on their side. Since in the game there is virtually no sitting on the ground, I could get away with a lot more things. Sitting in chairs was easy and using this method they could even cross their legs with no problems.
Running was brisk, but not like a manly or ahtletic run. These characters weren't going to be running a marathon in high-heels and such... Instead the movements were brisk and elegant which helped a lot in making sure the skirt didn't clip, the bones in the middle did the job very well.
No point in rigging boobs that small and restrained. If they're bigger then you could put a flex modifier on them to get some jiggle, then attachment constrain a dummy to the nipple, then have a bone that connects to the spine look at constrained to point at the dummy. As the flex modifier does its thing the bone will rotate around kind of "reading" the flex jiggle. You can then key the bone and export it. The result won't be exactly the same because it will depend on the end result of the skinning but if you weight the bones correctly you can get a good effect.
With the dresses its mostly a case by case basis. With B you're looking at a mini skirt and the thing on the side could easily be rigged up with a chain of bones. I personally would use stretchy bones with control points at each pivot point. Link the controllers as if they where bones and they will rotate like a chain of bones.
The advantage then is that you can position each of the nodes independently of the others any where you like. However the engine could only allow rotation of bones with a locked scale, that's really common and really annoying.
You could use the same setup for pony tails. As for the other hair style I would keep it above the shoulders, you'll drive yourself mad trying to do real time hair that is lose and free flowing that collides with the shoulders.
This script helps automate the setup of stretchy bones.
http://www.scriptspot.com/3ds-max/stretchy-bone-chain
However its not impossible to free flowing hair it just gets mildly expensive time and polys, it just takes a lot of setup and a lot of tweaking.
Create strips of hair each strip being rigged with bones that look at attachment constrained dummies on the cloth driver. Same trick as above. You create a collision cage for the head and shoulders and skin wrap it to your mesh so it follows along. Despite real time games collision meshes being as low poly as possible you want a pretty high poly cage for a good collision sim. Once you get a good sim, key the bones get rid of the sim objects and export.
Instead of strips if you have a helmet shape to the hair you can use the same flex trick as above.
I've done this a few times on characters and its worked pretty well, I might be missing a few little hick-ups and work arounds so if you hit any snags PM me.
damn that character has a rack.
Ooooh! I get it now. Neat trick Vig! wow. Basically have the bones "capture" the animation the object will be doing.
Anyway you can point to a tutorial? I don't know how to do some of the things you mentioned in your second method. It would really help me out particularly with things like hair, chains dangling from a model, feathers, dragon wing vanes, etc.
btw, Vig, what's the story behind that Khador jack in your sig? You into WM? Was going to say destroyer heavy jack, but looked like it had a juggernaut fist.
[ame]http://www.youtube.com/watch?v=8mPRM_GulCc[/ame]
Create 3 bones, click the middle child and go to the motion tab (little wheel)
Click on position in the tree list, click the assign controller button in the upper left of that window.
Select spring.
Animate the main parent and the positions of the others drag behind. Supper easy but it depends on the engine and what it allows.
I'll do a write up on using the flex method it works with rotation but it works better with stretchy scale bones, but again that's another engine specific feature...
Chains simmed off cloth.
http://www.hyperent.com/Hyp-Tutorial-Cloth-003.php
As far as spring modifiers. Unknown, but I think Torque 3D has physics which can interplay with character animation, which might be able to integrate into your character setup so they could control the breast and cloth activity realtime versus having to animate.
Do you guys use clavicle? i.e. shoulder bones? Seemed a lot of work for games I saw, went upper arm right to the torso.
Yep, I would strongly urge you to use them too. When you rotate the arm above a T-Pose you lift the clavicle which brings the shoulder in toward the ear. If you don't you get this.
Onto the cloth sim recording:
Like I warned this is kind of labor intensive but can be assisted by scripting.
It takes about 15-20min to set up and it works in unreal. This can be used with capes and other cloth like objects that hang from characters. It looks scary technical but its not once you get through it once.
Creating the Cloth Sim:
- Create a plane 100 units by 50 units, give it 4 Length/Width segments, call it "Cloth_Driver".
- Turn on 3D Snaps, set it to vertex. If you're missing the snaps menu, right click a blank spot in your tool bar and turn on snaps. Or you can right click the 3D Snaps button and on the snaps tab, check on vertex.
- Click create panel(1) > Helpers(2) > Dummy(3) and create a dummy helper at the top center vert (this will be the root of your bone structure, this would link to the head bone if there was one). Call it "Bone_Final00".
- Select the Cloth_Driver object and apply the Skin modifier(1), click add bone and select Bone_Final00(2).
- With the Cloth_Driver still selected, apply the Cloth modifier.
- Expand the Cloth Modifier and click Group(1), select the top row of verts by Bone_Final00(2), click Make Group(3).
- Scroll down and turn on soft select(4) click "Preserve"(5) to preserve the skin motion and keep the upper part rigid to avoid clipping issues the sim will be its most active at the bottom. If you don't preserve some motion, your piece of cloth would not follow the head, and would fall to the floor.
Back in the modifier list click on Cloth(1), then under Object click Object Properties(2).
- Click on Cloth_Driver in the list(3), and check on "cloth"(4), set the preset to something smooth like silk(5) and turn up the dampening(6) to .8.
Creating the Collision Mesh:
- This mesh should be water tight, for this example I'll use a sphere. Avoid creating sharp points or hard angles the cloth could get caught on. For shoulder length hair a collision bust should work fine. If the hands get involved mittens tend to work best.
- Once the collision mesh is built built apply the skinwrap modifier and point it to your already skinned low poly mesh, your collision mesh will now follow along without having to skin it.
- Call it Cloth_Collision
- Click back on the Cloth_Driver object, click on the cloth modifier(1), click object properties(2), click Add Objects(3) and select Cloth_Collision. Select it in the list and turn on "Collision Object" down in the lower right.
Note: If you have trouble with the cloth clipping into your low poly mesh you can come back here and adjust the offset.
- You're now ready to run your sim and get it running smoothly. Once that's done you can get ready to record the sim.
Creating the Intermediary Reader Bones:
- With 3D snaps turned on and it set to vert, Click create panel(1) > Helpers(2) > Point(4) and create 5 point helpers at each vert down the center of the mesh, it should look like above.
Now we need to bind the points to the cloth sim so they follow along. Once they follow along we will snap our final bones to these points as we create keys, more on that later.
- Select the first point helper and click on the motion tab(1) click the position track(2) and click "assign controller"(3) and select "Attachment"(4).
- Click pick object, select Cloth_Driver, click set position and click/drag on the first vert where the point helper was placed, turn off set position.
- Repeat this for the other point helpers, they will now follow the cloth sim wherever it goes.
Creating the Final Bones:
- Click create panel(1) > Helpers(2) > Dummy(3) and create 5 dummy helpers at each vert down the center of the mesh, it should look like above.
- You can also place them by turning on autogrid and draw them over the top of the Cloth Driver, then use Quick Align (shift-A) to snap them to the point helpers. Whatever gets the job done...
- Call these Final_Bones00-04
- Copy Cloth_Driver call it Cloth_Final, skin it to the Final_Bones.
Creating The Final Keys: (this is where scripting comes in really handy)
- Turn on auto key, set keys for each of the Final_Bone Dummies.
- Move the time slider 5 or 10 frames and using the align tool (not quick align) snap the Final_Bones to the Point helpers. Make sure to turn on World and local Orientation for each axis.
- Keep capturing keys this way until you've recorded the sim as accurately as you can.
- Before you export delete the cloth and collision meshes and point helpers.
- The FinalBone dummies will be exported as bones when you export.
- If for whatever reason the exporter doesn't read the dummies as bones, export it to .dae, import it back into a blank scene and you've got bones you can export.
Sample scene file: (3dsmax 2010 sp1)
http://dl.getdropbox.com/u/1306131/RealTimeClothSimCaptureWithBones.max
Sample export file to test in the engine:
http://dl.getdropbox.com/u/1306131/RealTimeClothSimCaptureWithBonesEXPORT.DAE
If I'd have to nit pick anything would be the addition of more bones, since I'm already putting a ton of bones on the model.
I could probably get away with two bones for the hair and one bone for things like breasts (to just get a jiggle).
I was thinking though, you'd have to do this capturing for every animation you have. I see where the scripting comes in. Wouldn't mind an automated script to do the key capturing. We've got a few (I think spell casting, some mounted attacks and such) that will get tidious doing all the capturing for.
[Edit]
Quick question regarding the collision mesh.
In the above model, can I get away with making a "wall" collision mesh along the back side? My problem is all the clipping into the shoulder pads. Does the collision mesh have to be a "bubble" or can it simply be a wall? The collision mesh will have to have bones of course so in the above example I would have to create a "force field" like object around the whole model.
I would then apply your process to the groin-mantle, the ropes, and the cape.
Right now in that above example, I have bones everywhere. The cape is a series of about 10 bones I manually animated, same with the groin mantle, I forget how the ropes work though. I'm pretty meticulous about skinning, usually down to each vertex and weight assignment, but things are getting pretty messy already.
Its going to look a lot like a base mesh for sculpting (only use mittens for hands and sub-d it once or twice).
In the end you don't export the collision mesh and it doesn't need bones. You skinwrap it to your low poly which should already be skinned to bones. You could skin it but you don't need to it just saves time.
For a character like this I would crank up the "preserve" that way you're not trying to collide around the shoulders or in the hips where the sim could get into trouble. Depending on how wild you get with the animations and the cloth, you might want multi layered collision meshes set up for the cloth also. But you can hand edit cloth clipping problems later when its all converted over.
Once you get the sims done you'll probably need the cloth to return to a root pose which the sim will not do for you. You can either key in the pose later, or create a simple series of progressive morphs captured from the beginning of the sim and play them backwards to ease it back into position.
As for the number of bones that depends on the engine, the distance from the camera and res of the model. More bones means a better read of the sim it also means more work...
1) I followed basically everything except two things. I created like this: Added skin to the flag, added dummy node (Bone_Final00). Added the cloth sim, I just added a node group for the vertices attached to the "flagpole" and then added wind to the simulation and ran the simulation.
2) Since I dont have anything to collide with I skipped that step.
3) I added the pointhelper, did the steps you wrote...they do follow the flag, only problem is that they are stiff.
Flag with helpers
http://img213.imageshack.us/i/pic2a.jpg/
Flag with simulation at a random frame
from above it looks like this, while the flag is moving around, the point helper are assembled in one line and just rotates as a group from left to right.
http://img689.imageshack.us/i/pic1t.jpg/
You have any ideas on how to go around this and make them actually follow the flag? or its quite impossible?
When doing this
"...click set position and click/drag on the first vert where the point helper was placed, turn off set position"
You have to stay within the face its on. So you have to be careful which face is currently selected. Ah! awesomeness!
Edit: I actually never created the second sets of dummies.I just used the point dummies as bones and it worked like a charm. Since I used md5, I only needed to add a parent bone and ...tada.
So the tedious work with align+move 5 key frames wasn't needed. But that might as well be game dependent.
"sorry to bring this thread back up. but i tried the spring bone but its doesnt seem to drag. it acts like what a normal bone does. i no i might be missing something but im not sure what. can anyone help?"
That can turns into a lot of point helpers on the screen but a little scripting will help keep it all straight.
EDIT: I also updated the tutorial above with images to make it easier to follow.
EDIT EDIT: To help automate the keying of the final bones to the helpers, use Jim Jaggers Animated Align script found here:http://www.jimjagger.com/Pages/Tools/JJTools.htm
It will align and key one object to another for you. It takes the grunt work right out of it. It's also has a few more features than what I cooked up and was unable to release.