利用者:Taniwha/FOR-and-parenting

提供: wiki
移動先: 案内検索

Object Origin

The object origin is the largish dot visible when the object is selected. If Display Axis in the Object panel is turned on, the origin is always visible as the intersection of the three axes. The rotation angles in the Transform section of the properties panel (N in the 3D View) and the Transform panel of the Object tab, always represent the object's rotation around this point. The object origin is also the center for scaling via the properties panel. Possibly more importantly, the object origin defines the (0, 0, 0) location for vertices in meshes, bones in armatures, etc.

Frame of Reference

A frame of reference gives meaning to the numbers used to represent a thing's location and orientation, whether that thing is a vertex, bone or object. While a frame of reference is virtual (there's no direct means of manipulating one in Blender), like any object, a frame of reference has an origin and an orientation. That said, an object's origin and rotation defines the frame of reference used within that object by vertices (for meshes) or bones (for armatures). The frame of reference defined by the object is used also for any child objects for which the object is the parent, although often indirectly.

Parenting

When an object is parented to another, a new frame of reference is created. This frame of reference is neither visible nor directly manipulable in Blender, though there are a few ways to manipulate it. The easiest way is simply to transform the parent object: the new frame of reference will always follow the parent object though any translation or rotation; the frame's origin will always maintain the same position relative to the parent's object origin, and the frame's axes will always maintain the same orientation relative to the parent's axes.

Parent Inverse

The frame of reference created when an object is parented to another can have both a translation offset and a rotation offset from the parent object's frame of reference, which is defined by the parent object's origin and orientation. This offset is referred to as the Parent Inverse.

Any time the Parent Inverse is set for a child object, the child's frame of reference is set to the align with the world's frame of reference in both location and rotation. However, the child's frame of reference will continue to track the parent object.

Normal Parenting

This is achieved via CtrlP O, When an object is parented to another using this method, the parent inverse is set such that the origin and rotation of the new frame of reference are aligned with the world. This means that the child object's transform parameters do not change when the object is parented, and that the child object's frame of reference will be offset and/or rotated from the parent object's origin and axes if the parent object was offset from the world origin or rotated.

stuff

First, Blender provides a fixed frame of reference known as World.

Every object in blender has its own external frame of reference (many object types have an internal frame of reference, too (eg, meshes and armatures). When the object does not have a parent, The origin of the object's frame of reference coincides with the world's origin, such that a transform coordinate of (0,0,0) places the object's origin (the dot in object mode) at the intersection of the red, green and blue grid lines. Also, a rotation of (0,0,0) will have the objects axes aligned with the world's axes. Animation data (fcurves) uses this frame of reference.

The object's external frame of reference is not directly accessible, but there are ways to manipulate it, all via parenting (this includes using the Child of constraint).

matrix_basis

matrix_local = matrix_parent_inverse * matrix_basis

matrix_parent_inverse

matrix_world

row = object FOR vector in parent FOR

col = parent FOR vector in object FOR

Nice page on 2d homogeneous transform matrices: [1]