Scaling Bug?

I noticed a strange behaviour of scaling in Blender 2.37a when I tried to mirror something using the key combination <S> <X> <1> <-> <Enter> (is there a simpler way?). Before posting it as a bug I wanted to ask you, if possibly I’m doing something wrong.

I made a simple testfile to illustrate it: http://www.pekaro.de/blender/scaletest.blend

I duplicated (ALT-D) the cube of the default scene two times with a slight rotation:

http://www.pekaro.de/blender/scaletest1.png

When I do <S> <X> <1> <-> to mirror it, I expect the following result:

http://www.pekaro.de/blender/scaletest2.png

But in fact the result is:

http://www.pekaro.de/blender/scaletest3.png

Of course, “Move object centers only” is turned off. I didn’t find a way to mirror this group of objects along the X-axis. The behavior of axis restricted scaling is simply strange no matter if you use keys or the graphical handles. For instance, the objects never become flat even if scaled to X=0.

Am I doing something wrong? Is this a bug? How to achieve the desired result? Thanks for any help.

edit: Link should work now.

ive had some troubles too when scaling like that.

ive found that scaling in edit mode and object mode gave different results.

Hi Usagi! Your link doesn’t work, but tried to recreate your scene and got very different results - but still not what was wanted. Not sure exactly where the problem lies either.

A small note, but as alternative to <S><X><1><->
CTRL M, and choose Miror X. But that didn’t work with the rotated objects either.

Think we have to wait for the experts now…

This menu offers local axis only. I want to scale along the global axis.

There seems to be somethings strange indeed.

First, create a cube and turn on its axis (F7->Draw panel->axis), so you can see what’s going on.

Go in editmode, select all vertices and rotate them a little.
Go into objectmode, ALT-D the cube twice to get the same picture above.
Do <S><X><1><->, should work correct.

Now do the same as above but don’t rotate the vertices in edit mode, instead rotate the cube in object mode. After you duplicate this cube twice to recreate the above scene, <S><X><1><->, doesn’t work correct. The axis and objects start flipping in an inpredicatble way, at least I cannot explain its behaviour.

<lukep> Gimble, seem not abnormal. if you rotate in object mode then scale, the scaling apply on rotation too. “apply transform” should correct things

<Gimble> lukep: true - could also just parent all cubes to an Empty at the origin and apply the scale to the Empty…

<Gimble> lukep: Hmmm, Ctrl_a == ERROR - Can’t apply to a multi-user mesh…

<lukep> Gimble, oh alt-D ?
<lukep> apply to first cube before

What exactly am I supposed to do?

Apply Ctrl-A (to first cube) before copying, rotating, scaling, whatever.

%<

The other option would be to go to the ‘Links and Materials’ panel in the Edit Buttons window. Select the second and third cube and in turn, press the number button next to the Mesh data name (reads 3 initially) and confirm the ‘Single User?’ prompt, until each one is unique.

Then press Ctrl_a for each cube.

Then go to Cube 2 and relink it to Cube’s mesh data. (arrow icon to the left of the Mesh data name).
Then go to Cube 3 and relink it to Cube’s mesh data.
(You should see a 3 again next to the Mesh data indicating all are sharing the same Mesh data once again).

Now the scaling operation should work properly.

SURGEON GENERAL’S WARNING: The following post is very technical and long-winded, and may be dangerous to your health. Side effects can include confusion and general absense of understanding. Handle with caution.

Here’s how it breaks down:

  • None of blender’s object transformations (Loc/Rot/Scale) will make the local axes of the object “Skewed”, ie no matter what you set the Loc/Rot/Scale values to the cube will still be a cube (or at least a rectangular prism)… no parallelepipeds that would result from having skewed local axes.

  • Scaling an object along an axis other than one of its local axes will result in skewed local axes (unless the scaling factor is -1 or 1)

  • Rotating the object to some odd angle and scaling along a global axis will generally mean not scaling along a local axis, thus causing the above.

  • Therefore, blender does not allow scaling along a global axis in Object mode. Well, it does, but the results are incorrect, as it does not allow the local axes to become skewed.

A 2D analogy I made way back when someone asked a similar question before:

However, I don’t know why mirroring with Ctrl+M can’t be done on the global axis… probably it’s just based around the scaling code, which is broken on the global axes. It would be possible to do though without breaking the axes…

Or, even quicker, select just one of them and press U->Object & ObData, Ctrl+A, then select them all (select the one you tinkered with last) and press Alt+R, Alt+S and then Ctrl+L->Mesh Data. Then enter and exit edit mode to get it to update the display.

I understand. But how can I mirror the ALT-D instanced cubes if they have different rotations? The sample above was just the most simple scene to illustrate my problem. Moreover, after applying the transformation I can no longer work with local axes properly, because it changes the local coordinate system to match the global coordinate system.

Why is it so complicated for the user to scale/mirror some rotated objects along a global axis in object mode? Why does the transformation not work intuitive? I consider this a bug.