%@LANGUAGE="JAVASCRIPT" CODEPAGE="1252"%>
![]() |
![]() |
||
|
WORLD/PARENT/OBJECT SPACE PAPER Hello everyone. This paper will give a short description of what world space, parent space, and object (local) space are, how they work, and how they affect the animation process. WORLD SPACE In any 3d application, objects exits in 3d space by a defined set of coordinates. This coordinates are represented by a 3d vector or point in space. This description is created from 3d coordinates as we learned them in high school. You usually have a X plane, a Y plane, and a Z plane. How this planes are represented in every 3d program may vary. But you always have all three planes when working in a 3d environment. Each object has a set of components called transformations that describe how this object correlates with the 'world'. The 'world' is this set of coordinated space where every 3d object exists. These transformations usually describe the object's position, orientation and scale. To accurately describe these characteristics, something must be compared with the object to be able to measure these transformations. This something is the world. The object's position is measured against the world's center. The center of the world always has an absolute [0,0,0] value. Remember that 3d space must be described by vectors, which use 3 values to describe a point in space, the x,y and z values. Thus, if an object's transformations state that the object's position is at [12,15,-350], it means that the object is 12 units away from the world's center in the positive X direction, 15 units away in the positive Y direction, and 350 units away in the negative Z direction. This way, we can accurately position an object in any given point in space, and describe this position accurately. This is what we call 'World Space'. World Space always describe object's transformations in relation to the world. An object's orientation would be compared to the world's default orientation, and an object's scale would be measured against the world's units settings. PARENT SPACE Sometimes, object's are not in 3d space on their own. Many times, hierarchies of objects are created so that they may be manipulated and transformed with greater ease. When an object is linked/parented to another, the child object no longer uses world space to describe its transformations. It now uses parent space. As a matter of fact, objects in world space are really existing in parent space, it's just that their parent is the world, so they use the world's coordinate system. However, during hierarchical animation, one must consider that transformation values no longer correspond to world coordinates, but to a new coordinate system relative to the parent's pivot point. The parent's pivot point represents the new center of the universe, or the point against which all of the object's transformations are measured. This is important to keep in mind, because it affects all transformations values drastically. For example, if one enters a [0,0,0] value for the position attribute of a child object, it will move to the pivot point location of it's parent. That's why entering this value for a non-linked object will move it to the center of the world. Remember the world is the parent of any non-linked objects in the scene. Likewise for orientation (rotation) and scale attributes. Now, everything is measured against the parent's own local coordinate system. OBJECT (LOCAL) SPACE. Local coordinates are a reference system used when values relative to the objec't pivot point are needed. A case when this comes in handy is when manipulating sub-objects. Sub-objects will always have a coordinate system relative to the object they belong to. They're also handy when one wants to visualize the object's pivot point transform state. Sometimes, it's handy to rotate objects using a local reference system, since it'll be restricted to rotate using it's own pivot orientation. This is more of a reference coordinate system, since internally, all transformations are evaluated in parent space (objects with no parent are children of the world). This difference might mislead some people when looking at animation function curves, which often differ from the actual transformations performed (specially when rotating). PRACTICAL APPLICATIONS Now, we'll see how all this relates to working with a 3d app. The terms and procedures used in these examples belong to 3D Studio MAX, but they can be translated to any 3d program. Create a sphere anywhere in 3d space. Now, select the move tool and bring up the transform type-in dialogue box. As you can see, this tool always uses absolute world coordinates, regardless of the state of the selected object. Enter 0,0,0 in the x,y and z fields of the type-in box. You'll notice that the sphere moves to the center of the world. Let's see the difference when using parent coordinates. Create a box anywhere in 3d space. Move it so it's somewhere not to close to the world's center, or if you want, enter in the type-in box 100,100,100. This moves the box some distance from the world's center. Now, link the sphere to the box so the sphere becomes the child object and the box the parent object. Now, we'll move the sphere to 0,0,0 in parent space. Unfortunately, we can't use the transform type-in tool because it uses absolute world coordinates, but we'll take another approach at this task. Open up your track view window. Expand the tracks until you see the sphere's position track. Click on the 'create keyframe' button (NOT the animate button), and create two keyframes, one at time 0 and another at time 30. Right-click anywhere in the track view window to exit keyframe creation mode. Right-click over the last keyframe, and enter in the x,y and z spinners a value of 0,0,0. If you play the animation now, you'll notice that the sphere moves from it's starting position to the box's pivot point location. This is because 0,0,0 now represents the center of the sphere's parent, which is the box. You'll need to keep this in mind when gauging transformations later in the IK tutorials. As for local coordinates, where you'll mostly notice how helpful they are is when performing rotations. You can also move or scale an object using local coordinates, but when animated, these transformations are still performed using parent coordinates. There is one controller that can overcome this, and is the Local Euler XYZ Rotation Controller. This controller allows animators to perform animated rotations using the local coordinate system, which is very helpful in many situations. I use this controller as the rotation controller by default for all my objects (unless otherwise needed). Well, this is it with the explanation of how objects behave in 3d space. I wrote this paper because this knowledge will be needed later when we start to assemble our character IK structure. Character rigging is not an easy task in itself, and a lot of hierarchies are needed to end up with a usable character. This information will later help us understand why and how objects in a hierarchy behave in a certain way, and this in turn will be a valuable asset when designing kinematic structures for any kind of character we need. ©Sergio Muciño. maxTD 2000. |
|||