Blender Stack Exchange is a question and answer site for people who use Blender to create 3D graphics, animations, or games. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

How can I use a Python script to obtain the exact coordinates of an object?

I have not been able to find out how to do this in the documentation.

share|improve this question
up vote 13 down vote accepted

Background: The object location (in fact transformation - so location/scale/rotation) is defined by initial values which are used to calculate the final transformation.

  • initial transform (as set by the user and possibly set by animation FCurves and Drivers).
    as a tool author, to manipulate data this is what you'll want to access typically
  • final transform (with parenting, constraints, and rigid body physics applied).
    when writing exporters or reading, typically this is what you will want to access since its whats displayed in the view (but you can't directly manipulate it)

To get the input location you can simply do:

loc = bpy.context.object.location... or via its matrix
bpy.context.object.matrix_local.to_translation()

To get the output transformation you can only do this by accessing the worldspace matrix.

loc = bpy.context.object.matrix_world.to_translation()

You may want to get the loc/rotation/scale, in that case:

loc, rot, scale = bpy.context.object.matrix_world.decompose()


If you want to test the location for example, you can set the cursor position.

from bpy import context
context.scene.cursor_location = context.object.matrix_world.to_translation()

Or you can create a new empty:

import bpy
from bpy import context
obj = bpy.data.objects.new("Empty", None)
context.scene.objects.link(obj)
obj.matrix_world  = context.object.matrix_world

... note, if the matrix contains shear, you wont see this in the empty, for that try the MathVis addons.

share|improve this answer
    
What would be the best way for me to test the above code? The Blender-Python integration tutorials I have completed have been based around graphical results. – Qu0rk Mar 7 '14 at 5:09
    
Added notes on viewing the transformation. – ideasman42 Mar 7 '14 at 8:41

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.