Precise Propotional Scaling of Mesh Objects?

I can use S to scale on all axises at once and get close (closer with shift), but if I want to scale an object’s bounds to exactly 10cm on the X axis? Can use the Properties>Dimensions box, but if there’s a way to proportionally lock the other two axises to it I can’t find it.

Is this doable in Blender?

(Search attempts found a lot about about proportional scaling of renders, but nothing about precise proportional scaling of objects other than S-then-shift – sorry if this is something obvious. :frowning: )

1 Like

Hey; If you want to scale ONLY one axis (s > X) that scales ONLY on the ‘X’ axis, but if you want to scale object WITH OUT one axis (s > shift > X) that will scale the object on the ‘Y’ and ‘Z’ axis but NOT the ‘X’ axis. If you hold down ‘CTRL’ you can scale in increments.

I want to scale the X axis to exactly 10cm (not close to, exact, even through the hidden decimal places) while the Y and Z axes scale proportionally. The S-key methods get it close, but they haven’t (for me, maybe I’m doing something wrong) gotten it exact.

2 Likes

Ok, you got it right , if you want it exact then typing in the amount is the way. Also depending on your ‘scene’ scale you could use snapping, but it is still good to check either with the ‘dimensions’ or I use the add-on “Measure-It”.

Nope, doesn’t work – all that does is scale the given axis, the other two don’t follow proportionally. I’m looking for what makes the Y and Z axes scale proportionally to the number I type into the X axis.

Not sure I’m following you then, can you post a pic or .blend ? Are you in ‘Edit’ or ‘Object’ mode ?

EDIT: In your original post you mentioned “Dimensions”, that is not the same as ‘scale’ and changing the dimension of one axis will scale it in just that axis, but scaling (S) scales everything proportionally as long as there is no interference like proportion edit mode (O) even then in 'Object 'mode it should scale equal.

According to the Properties>Dimensions boxes the object is X = 0.939801m, Y = 0.350243m, and Z = 0.001450m – if I set the X axis to exactly 0.100000m, to scale proportionally the Y axis should go to 0.037268m and the Z axis to 0.000154m (according to the spreadsheet I did). Is there a way to get Blender to do this, or should I just paste the numbers into the Dimensions boxes from my spreadsheet?

1 Like

Sequence of events went:

  • Realize I need to precisely (as described in the OP) proportionally scale a mesh object.

  • Search for solution, with no success. :frowning:

  • Post question.

  • Attempt to refine description of my problem in response to answers (thanks, ajcdfin) – latest attempt includes setting up a spreadsheet that does the precise proportional scaling calculations I expect Blender to do (somewhere, somehow) to provide an example of what I’m looking for, and post it in my latest response.

  • Realize that the spreadsheet does what I need regardless of whether or not I can get Blender to do it. :eek:

  • Face-palm.

My original question is now academic – I’d still like to know if there’s a way to get Blender to do this, out of curiosity.

1 Like

If I got it right, here’s what I would do:

set 10cm in the X dimension (notice that X scale field changes)
copy new scale factor of X
paste in Y and Z scale factors
Ctrl+A apply scale

1 Like

Ok, When you type directly into the ‘Dimension’ box you are setting that particular dimension and NO other, blender will not scale the others. So the answer to your question “should I just paste the numbers into the Dimensions boxes from my spreadsheet” is YES. As stated below by Isscpp, you could do it that way, but it is not precise - scaling your object from your original dimensions to 10cm in the ‘X’ axis leaves you with a scale of .106, which can range from 10.008 to 9.921 cm on your part. So if you are needing precision (blender is not CAD) then working from the spreadsheet is what you will have to do. One other thing, the dimensions you posted are small, it may help you to change the ‘scene’ scale from the default 1.000 to .100, that is located in ‘Properties’ > ‘Scene’ > ‘Units’ there is a box that says “Scale”. Do this BEFORE you add anything. Hope this helps

Yep, that works, thanks! Not quite what I was thinking of (which was like in GIMP, a little lock button somewhere near the boxes), but it does the job. Much appreciated! :yes:

This is a small piece in what’s going to be a much larger thing, but it’s critical and going to be in close-ups, so I wanted it exact (as feasible, anyway). But thanks for all your help!

Ok, this has been asked two years ago, and I found out a lot of similar questions to this one, and it’s hard for me to believe that Blender still doesn’t have some simple way of proportional scaling when adjusting object’s size just on one axis?
To me this sounds as one very basic and important function for all the people who are using Blender not just for artistic stuff but also for things where precise measurement is a must.

Copying scale factor just isn’t right method, because you are still doing approximation, no matter how good that approximation is.

So, my question would be, is this solved in Blender and can I do proportional scaling of the whole object while manually entering value on only one axis? If not, how can I create request for Blender developers to solve this?

Thanks!

1 Like

The OP problem can be resolved using advanced numeric input: say your object’s X dimension is ‘some_number’ and you want to scale the object uniformly so that that X dimension becomes 10. Which means you have to scale the object by a factor of 10/some_number. So you invoke the scale operator (S key in default keymap), then type:

=10/some_number

and press Enter.

1 Like

Hi!
Thanks for the quick answer :slight_smile:
Yes, that approach definitely works, but I still believe that Blender should add this very simple functionality to it’s interface.
Thanks again!

I was looking for a feature like that a few days ago. That is how I discovered this thread. As this didn’t seem to complicated, I figured I could just as well give writing a python operator a try.

After doing some tests and with the help of the “Scripting for Artists” videos and the blender.chat python channel it seems to be working now. :slight_smile:

It adds an “Uniform Scaling” entry to the “Object > Transform” menu. If you are still interested, you are welcome to give it a try:
https://raw.githubusercontent.com/fasthellgenug/Uniform-Scaling/main/uniform_scaling.py

4 Likes

Thanks for your effort! :slight_smile:

1 Like

Incredible there’s still no built in solution for something THAT simple!
Thank you very much @Helge !