# Can I get the object dimensions in Cycles?

Can I get these dimensions:

(bpy.data.objects['Cube'].dimensions)

in a Cycles node, as a vector?

I tried an Attribute node with dimensions[0] as the Name, but this didn't work. I also looked at the Geometry and Object Info nodes, but couldn't find anything that looked promising.

Preferably without Python due to the whole "trusted blendfile" feature.

This would open tons of possibilities for optimizations, such as automatically adjusting the scale of a procedurally generated material (here, the dots are non-square).

Well, I can answer part of the question. You can get the values of the dimensions into cycles by using drivers, driving 3 separate Value nodes and using the data path of dimensions[0] as the driving value:

2. Right click the value and choose 'Add Driver'.
3. Change to the graph editor and change to 'Drivers' mode from the header toolbar.
4. Use the following settings in the Property panel (N) after selecting the channel on the left:

As you already identified the data path you need is dimensions[0] (0, 1, or 2).

This will result in:

(6.399 simply being the X dimension value of my test cube)

Repeat this for the 2 other dimension values and 2 more value nodes.

However, as to how you would combine 3 value nodes into a vector is something I don't know. You could of course drive something other than a 'Value' node using this method if that is more useful.

Edit: As noted by Chebhou, in the comments, as of Blender 2.72 a "Combine XYZ" node exists:

Instead of driving 3 individual 'Value' nodes, you can now drive the x, y and z values of the 'Combine XYZ' node which will result in a vector.

• Never thought of using drivers to get external data, nice! You might be able to make a vector by doing some fancy maths with the object coordinates, but it won't be too simple I think. Oct 24 '13 at 11:59
• Pretty nice solution. You could eliminate the Python by changing Scripted Expression to Sum Values. However, this material would just be compatible with a single object, then, right? (by the way, I use the Combine RGB node to create a vector, even though I always feel terrible when I do so, simply because there's no better way) Oct 24 '13 at 13:16
• @RayMairlot you can add the combine XYZ node to your answer since it is available now Apr 2 '15 at 17:54