= Objects = == Parent objects == Connecting the output of object A to the input of object B makes object A the _parent_ of object B. NOTE: In computer graphics parlance, we say that we "parented" B to A. This might seem backwards, but that's the way it is. An object which is _parented to_ (that is, the child of) another object inherits the transformations of the parent object. Moving or rotating the parent moves/rotates the child as well. You can also put objects inside an object subnetwork (use the [tab menu|/basics/tabmenu] to create a Subnet node at the object level). All objects inside the subnetwork inherit the transform of the subnet's parent, if any. Some other information is inherited from parent objects besides transformations. For example, motion blur can be inherited from a parent object. If the rendering parameters are not enabled for an object, they will be inherited from the parent object. For example, to view the scene from the point of view of a particular object, you can parent the camera to the POV object so the camera transforms with the object. Each object can have only one parent. tasks>> Parent an object in the network editor: * [Connect the output|/ref/panes/network] of the parent object to the input of the child object. Parent an object in the 3D viewport: # Click the [Parent tool|/shelf/parent] on the __Modify__ shelf tab. # Select the child object(s) and press ((Enter)). # Select the parent object and press ((Enter)). Unparent an object in the network editor: * [Disconnect|/ref/panes/network] the parent from the child. Unparent an object in the 3D viewport: # Click the [Parent tool|/shelf/parent] on the __Modify__ shelf tab. # Select the child object(s) and press ((Enter)). # Select nothing and press ((Enter)). TIP: When you parent an object, its current transforms will be added to the parent's, usually resulting in the child object changing position and/or rotation. To keep the object at its current position when parenting, turn on __Keep position when parenting__ in the object's parameters before you parent it. == Edit an object's origin/pivot == All transformations are relative to an object's _pivot point_. An object scales toward/away from the pivot point and rotates around the pivot point. tasks>> Set an object's pivot point in the viewport: * Press ((Ins)), use the handle to move the pivot point, then press ((Ins)) again. * You can temporarily move the handle, which scaling and rotating is relative to, by pressing ((')), using the handles, and the pressing ((')) again. This does _not_ move the actual pivot point. Set an object's pivot point numerically: # In the [parameter editor|/ref/panes/parms], click the __Transform__ tab. # Use the __Pivot__ text fields to set the pivot point's X, Y, and Z relative to the object's origin. == Pre-transform == The pre-transform is like an invisible parent Null inside each [object|/basics/objects] . The position, scale, and rotation values in the object's parameters are relative to the (normally hidden) values in the pre-transform. The pre-transform is useful, especially in [character rigging|/char] , for setting a certain position, rotation, and/or scale as the "rest" or "zero" state for that object. After that, values you enter are relative to the pre-transform values. WARNING: The pre-transform uses a _fixed, non-configurable_ transform order. If you try to copy a non-uniform scale into the pre-transform, you can get shearing. tasks>> See the values in an object's pre-transform: * Press ((MMB)) on the object's tile in the network editor. Make the object's current transform the "zero" state: * In the object's parameter editor, click the __Transform__ tab and choose __Pre-transform > Clean transforms__. This moves the object's current transformation into the pre-transform and resets the transformation parameters to the "identity" (position and rotation = 0, scale = 1). The opposite action is __Extract pretransform__ (see below). Make only the object's current position, rotation, or scale the "zero" state: * In the object's parameter editor, click the __Transform__ tab. Open the __Pre-transform__ pop-up menu and choose __Clean translates__, __Clean rotates__, or __Clean scales__. Delete the pre-transform: * In the object's parameter editor, click the __Transform__ tab and choose __Pre-transform > Reset pretransform__. _This will probably change the position, rotation, and or scale of the object_ because the current values in the parameters will no longer be relative to the pre-transform. Move the pre-transform values into the parameters: * In the object's parameter editor, click the __Transform__ tab and choose __Pretransform > Extract pretransform__. This moves the object's current pre-transform values into the parameters and resets the pre-transform. The opposite action is __Clean transforms__ (see above).