6
$\begingroup$

I need to move an object in depth without automatically changing its size. Is it possible?

Blender automatically scales the object's size when the object is moved in depth according to the principles of perspective. I want to manually control the scaling.

$\endgroup$

4 Answers 4

7
$\begingroup$

If you place your pivot point at the camera ( e.g. 3D cursor to camera, then '3D Cursor' selected as pivot center), when you scale your object in all axes (or any element of it, in edit mode,) the shape will not appear to change in perspective, when seen through the camera. If you then want to 'scale the object manually', you can do that in some other space, say, by setting the pivot to 'Median Point'.

$\endgroup$
2
  • 4
    $\begingroup$ This is the basis of camera mapping, and trompe l'oeil effects $\endgroup$
    – Robin Betts
    Apr 23, 2018 at 10:50
  • 1
    $\begingroup$ This is great for grease pencil projects where you need to move objects relative to the camera without changing the size of the drawing in the camera view. $\endgroup$
    – bigLarry
    Dec 7, 2020 at 14:09
5
$\begingroup$

Object is not changing its size, but only seems to be smaller due to perspective. I suppose what you need is:

  • Pressing 5 on the Numpad turns off perspective. (Or other way: View -> View Persp/Ortho).
  • Pressing S on the keyboard lets you scale the object.
$\endgroup$
5
$\begingroup$

One option is to use Drivers to automatically set the scale based on the distance to the camera. This way, whenever the object or the camera moves the object will automatically scale to match.

To achieve this, add drivers to the Scale properties of your objects (move the mouse over the Scale properties and press Ctrl+D). Set each of the driver as Type 'Scripted Expression', Expr 'var / 10' (use a different constant in place of '10' for a different 'at rest' scale - how many units away from the camera that the scale should be '1'), the variable type (the icon alongside the variable name ('var')) to Distance, and set Object 1 and Object 2 for the object and the camera (both using World Space). Do the same for each of the X, Y, Z channels.

drivers

Now, moving the object (Cube) should result in the scale automatically adjusting to suit.

NOTE : You might need to go into User Preferences and enable the Auto Run Python Scripts option on the File tab to enable Scripted Expressions.

If all is set up correctly this should now produce the following result :

animated

(To explain the animated image, the cube is moving purely along the X/Y plane - no vertical motion at all. From the top view you can see its motion along the grid and how it actually changes scale depending on how far it is from the camera (bottom-right). From the camera's perspective it appears that the object doesn't change size at all - it also doesn't appear to move away from or towards the camera but this is an optical illusion due to its changing scale - at its most distant (towards the top edge of the top view) you can see the grid overlap the bottom of the cube when viewed from the camera when it's at its largest scale)

$\endgroup$
0
$\begingroup$

Something I am currently using is going to the camera settings and changing the "Lens" option from perspective to orthographic. Then things stay the same size unless scaled manually.

orthographic camera

$\endgroup$

You must log in to answer this question.

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