209
$\begingroup$

How can I change the local origin of an object, without changing the object location in the world space.

This is the object located at position (0,0,0) in the world space

enter image description here

This is the same object located at position (0,1,0) in the world space, but with its local origin offset so that the object is in the same place

enter image description here

Is there a way to do this in a single step?

$\endgroup$
0

4 Answers 4

275
$\begingroup$

One way to do this is by entering Edit mode and placing the 3D cursor where you want the new origin. (When doing this, you can be very precise by selecting vertices, edges or faces and using them as guides. If you pick several points and snap the cursor to them using Shift+SCursor to Selected, Blender will use the average of the selected points to determine the new location of the cursor).

enter image description here

You then go back to Object mode and use Ctrl+Alt+Shift + COrigin to 3D Cursor to update or change the object origin to the location of the 3D cursor.

For 2.9+ you need to go to Object Menu, and select Set Origin > Origin to 3D Cursor.

enter image description here

$\endgroup$
9
  • 1
    $\begingroup$ With all the attention this has gotten, this seems to be a good idea, rightclickselect.com/p/modeling/vqbbbc/interactive-pivot. Maybe someone with a little time on their hands could tackle it. :) $\endgroup$
    – iKlsR
    Dec 22, 2016 at 10:27
  • 1
    $\begingroup$ For properly center object from blender for unity I was needed to place 3D cursor to the zero coordinates (0, 0, 0) and then place the center of mesh object using Origin to 3D Cursor. $\endgroup$
    – electroid
    Mar 11, 2017 at 9:11
  • $\begingroup$ My pivot point has become rotated, how do I restore the rotation to be non rotated with respect to the rotation in world coordinates? $\endgroup$
    – rien333
    Apr 6, 2017 at 22:26
  • 1
    $\begingroup$ @rien333 Best to ask a new question, not sure what you mean by "pivot point has become rotated". $\endgroup$
    – iKlsR
    Apr 6, 2017 at 22:29
  • 5
    $\begingroup$ I would like to upvote your answer every time I need this. +4 till now. $\endgroup$
    – Izzy
    Aug 3, 2017 at 15:06
42
$\begingroup$

This is useful to have as a script, I wrote one back in 2011. It uses the 3d cursor but restores its original position.

A link to this script is here (includes all addon boilerplate) Once installed the script can be run from 3d view > space bar > Origin Move to Selected

This is the juicy bit:

def execute(self, context):
    saved_location = bpy.context.scene.cursor_location.copy()
    bpy.ops.view3d.snap_cursor_to_selected()

    bpy.ops.object.mode_set(mode = 'OBJECT')
    bpy.ops.object.origin_set(type='ORIGIN_CURSOR')  
    bpy.context.scene.cursor_location = saved_location

    bpy.ops.object.mode_set(mode = 'EDIT')
    return {'FINISHED'}

To bind this to a key combo:

  • User Preferences > Input > 3D View > 3D View (Global) > New.
  • Then fill in the text field with object.origin_to_selected and Blender will name the short-cut correctly. Then pick your short-cut keys: enter image description here

More work up front, but convenient when used hourly.

$\endgroup$
7
  • $\begingroup$ Very handy! I knew it could be done with scripting, but I'm new on that topic $\endgroup$
    – rraallvv
    Jun 23, 2013 at 12:11
  • 3
    $\begingroup$ Very nice.. This should be part of Blender distribution. $\endgroup$
    – satishgoda
    Jun 23, 2013 at 14:42
  • 1
    $\begingroup$ How can be added undo support? $\endgroup$
    – rraallvv
    Jun 27, 2013 at 15:11
  • 1
    $\begingroup$ hmm, this might take a bit longer, i will let you know when I find time to add undo. it's not just a simple bl_options = {'REGISTER', 'UNDO'} $\endgroup$
    – zeffii
    Jun 27, 2013 at 15:51
  • 2
    $\begingroup$ @rraallvv the best way I know at the moment is, and this only works immediately after the origin switch.. is to go to object mode and hit undo. $\endgroup$
    – zeffii
    Jun 27, 2013 at 21:30
34
$\begingroup$

In Blender 2.81 the transform tools can be restricted to only affect the origins, which allows to translate it directly.

  1. Open the Options in the Tool Settings
  2. In the Transform - Affect Only section check Origins
  3. Select an object and adjust the origin using the shortcut G to move it. Alternatively you can also use the Move tool from the toolbar for the interactive gizmo.

Enable transform only for the origins Moving the origin by using the move tool

$\endgroup$
1
  • 2
    $\begingroup$ In addition to the above, I also use the "Snap to" tool and set it to "Edge" and "Closest" so that I get exact positioning of the origin to be at the very edge of the object (which is usually what most folks want when they move the origin). $\endgroup$
    – Sat Thiru
    Dec 30, 2019 at 2:58
-1
$\begingroup$

In Object Mode, first select the Object you want to change the Origin. Then click Manipulate Center points (or Alt ,) It is the 3rd button on the right from the Object mode in the 3D header.
Switch to Edit Mode, if your Object is not selected, press A or A twice to select everything.
Move the selected object with the 3D manipulator. It works now relative to the center point. When you are done, go back to Object Mode and uncheck Manipulate Center points (or Alt ,).

$\endgroup$
1
  • 4
    $\begingroup$ Sorry but you're wrong. The "manipulate center points" button only works with rotation, in "object" or "pose" modes. To move the pivot point of an object, this option is useless... However, manipulating the whole vertices of an object in "edit" mode will do the trick, as you said. $\endgroup$
    – Polosson
    Sep 1, 2014 at 18:01

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .