Showing posts with label blender 3d. Show all posts
Showing posts with label blender 3d. Show all posts

Monday, August 24, 2009

Case Study: Limiting animation distortion


With any 3d model, if you are using a bone only animation, there will be a certain amount of distortion at the joints. This is quite apparent with low poly models. Although there is an acceptable limit, based on how small the part will be on the screen and how much the bone bends, it is good to know how to set up things to limit said distortion. In this example we will look at the fingers on Ethan's hands. In the left example, you can see that when the fingers bend, they begin to thin, while on the right, a technique was used to make the fingers stay close to their original thickness. Lets look at that now.


Here we have the original bone setup: bone joints in the center of the vertexes that bend.
As you can see below, one method of removing part of the distortion was to add another layer of vertexes, and make sure the part of the finger stays the same size. This works to an extent, but with a way that I found, I create a better look with less vertexes.

Below, you can see the new bone set up, and the vertexes are assigned to the new bones. The bones originate from the center of the joint, and extend to the top of the joint. A constraint is added to make the bones rotate 50% of the old bones, and then the length of the bone (local-y) is scaled as the bone rotates to compensate for the distortion caused by the rotated vertexes. At this point, I am not sure of the ability to export local bone scaling, however if the current format doesn't allow it, I can always create my own. Right before export, the bones that don't have any vertexes assigned to them are removed, to make sure they do not affect the speed of the model.

Saturday, August 22, 2009

3D modeling tips: Everything else

Let me just say this now: I am not an expert. However, I have made some decent models in the past, and I will not give up until things reach perfection... or at least close enough. I am merely stating what I learn along the way. If you want a full modeling tutorial, might I suggest the 3dtotal tutorials. There is one on there especially for low poly characters for games, which I brought some of the information with me to use with using the makehuman models as a 3d reference. This is also important to learn: MakeHuman does not make characters that do not follow a human guideline. (The Hulk, demons, werewolfs, ect.) However, a good technique is to use blender's sculpting tools to turn the makehuman model into the rough shape of the character your trying to make.

If you are like me, you will cringe at the look of an untextured low poly model. But remember, ultimately, you will copy this model, and use it to sculpt a very high detail model for blender to reference to create tangent space normal maps, thus making the model, except for the outline, look almost exactly like an extreme high poly model that would kill a tesla gpu.

Back to the main topic: Modeling the rest of it. Basically, hug the make human model and make a low poly cage. For areas of clothing, make the cage slightly bigger at that point. What closely what that type of clothing would do, as I said in an earlier post, some shirts would pull tight as the arm would go up, so model for that type of animation. Make sure to have vertexes at any joints. I am experimenting with a different way to set up the bones to eliminate distortion, more on this later. To create skirts, jacket tails, hair, ect, extrude from the model where it s to be attached, and then delete any unnecessary vertexes. When creating any collision meshes, make independent boxes, not one low poly cage. This is because the physics engine can do collision tests faster on a group of boxes than a mesh that a ray can intersect more than once. (concave vrs. convex) For the skirt example, if you plan on simulating cloth with it, delete the portion of the legs that you can't see and create the collision boxes for the legs to create close to real fast simulation.