How Can You Scale Multiple Actors at Once Properly?

Hello, I’m relatively new to Unreal and I have a (hopefully) simple question that I haven’t been able to find the answer to.

I need to scale an entire level down uniformly, and I was assuming it was as easy as to select everything and use the scale gizmo. The problem is, when I scale it up and down, everything moves around in different directions and some actors don’t even scale evenly and become warped. I’m not technical enough to explain what is happening, but described above is the end result.

I thought I had found the issue when I noticed that the gizmo was set to local coordinates instead of world coordinates. No good, as the toggle button for this doesn’t work when scale is selected. The documentation seems to confirm that scale cannot be set to world coordinates.

Is there a way to fix this issue, or a work around to accomplish the same goal? At this point it would almost be faster to recreate the whole level at the new scale than to clean up the mess that results from trying to scale it down. Any help is appreciated.

2 Likes

the issue that youre having is the fact that many of the objects have different poitns of origin. if you play around with the scale in some of the starter content youll see that some of them scale from the bottom, and others scale from the middle. I honestly dont think there is a simple solution to youre issue, but you can try selecting everything the pressing ctrl G to group them all together, then scaling them down. I think that will make them all scale uniformly but ive only used groups with moving objects so im really not sure.

1 Like

Thanks for the reply. That makes a lot of sense. Theoretically if I changed all of the points of origin to be top left let’s say, would they scale together correctly?

I tried to grouping idea and thought that would be the answer too, but unfortunately it doesn’t seem to work with scaling either.

It seems crazy to me this is so difficult to do. Is having to scale a whole room or building in a level that rare of an issue? I’ll admit I’m coming from using Adobe and other 2D game engines. In those worlds scaling everything at once and having it stay together properly is a completely standard feature. Maybe in 3D it’s not like that, though?

Just posting to chime in with my vote.

I’m with you guys on this one. The default scale tool makes it useless for 90% of the level designers needs when it comes to scaling multiple meshes at once.

I’ve seen a some requests that are asking for this feature, and I think it gets shot down because the requests are getting confused with a request for true worldspace scaling, which can allow for skewing…but that request is NOT the same thing as what you’re looking for, which is just shared-pivot-scaling.

Shared pivot scaling is exactly when grouping does…and is also essentially what the rotate and move tools do. (last selected object acts as the axis for rotating/moving). It’s really bizarre why this behavior isn’t the same for scaling too.

1 Like

You can scale multiple meshes with shared origin by creating new mesh with scale 1:1:1, attaching other meshes to it, scaling parent mesh, and then deleting it.

4 Likes

Hey Gomo, thanks for the response. We actually reached the same conclusion in the end. Still wish this was easier, but good to know there is a work around. For others with the same problem, these are the exact steps we used:

  1. Drag an “Empty Actor” to the scene.
  2. Set its location to 0, 0, 0
  3. Click “DefaultSceneRoot” in the Details tab. Set “Mobility” to “Static”
  4. Drag and drop everything else (except your Player) inside of it. Unfortunately folders aren’t supported.
  5. Set its scale to resize the rest (you are multiplying all of your other objects’ scale by the amounts you put in)
  6. Reposition the Player to where it should be. Voila!
14 Likes

Simply parent the all the actors you wish to scale to one of the actors and scale the parent actor. Then un-parent the actors in the outliner when you are happy.

4 Likes

You save me. Thanks!

To clarify what Clockwatcher means for anyone who hasn’t done this before, here’s a step by step guide:

1) Drag a new mesh like a Cube into your scene, then rename it SCALER (select the actor in the world outliner and press F2).

2) Press CTRL + A to select your entire level (or just select the actors you want to scaler) and then hold CTRL and Left click on your SCALER actor to de-select it.

3) In the World Outliner, right-click on any of the selected actors and choose Attach To and then pick your SCALER mesh in the list (Alternatively you can drag all of the selected objects in the world outliner onto the SCALER mesh to parent/attach.)and then deselect everything. In the World Outliner, you will see that your SCALER mesh is now at the top of the list with a grey arrow (black when selected) to the left of its name and everything else is below it and slightly indented to the right letting you know that they’re all children of the SCALER mesh.

4) If you know the exact amount you want to scale everything, select your SCALER mesh and hit the lock icon to scale uniformly then type the amount in one of the axes. For example 4.0 for 4X larger or 0.25 for 4x smaller. You can also use the transform gizmo (Press R or hit Spacebar till you get to scale) to scale by eye if you’re not sure of the exact amount.

5) Once everything is to the scale you want, just delete the SCALER mesh and it will unparent everything else.

8 Likes

Hi, could you help me with this?

I’ve put in an actor, selected everything other than it, but when I go to ‘attach to’ It shows a search bar and then a ‘empty world’ text with a drop arrow (which shows my world but doesn’t allow me to select or do anything with it)

it isn’t letting me attach to the empty actor or anything and I’m so confused, lol.

1 Like

You should be able to attach by drag and drop in outliner.

Was having the same problem. User Hodge a few posts up has the answer

  1. Click “DefaultSceneRoot” in the Details tab. Set “Mobility” to “Static”

You need to double click the SCALER BP and in the Viewport under the Details tab change the Transform from Movable to Static. After doing this SCALER will show up in the list to Attach To

I have the answer!!! It’s been so long, but I have a solution that will work for both Geometry Brushes and Static Mesh Actors! Confirmed works in version 4.19. Shortcuts in Windows.

Geometry:

  1. Group all of your actors together (Ctrl + G).
  2. Under Brush Settings, click on the arrow at the bottom to open the advanced settings

246421-brushsettings.png

  1. Click on “Create Static Mesh”, rename to whatever you want, and save it in the folder of your choice.

Now you have a static mesh of your Geometry Brushes able to be scaled as if they were their own object.

Static Mesh:

  1. Group all the objects together.
  2. Right click, and select “Convert Actors to Static Mesh”

246422-staticmeshrightclick.png

Like above, rename to whatever you want, and save it in the folder of your choice. Now you have a static mesh of your group meshes able to be scaled as if they were their own object.

Hope this helped people!

I found a simple (in my particular case) solution, without need to grouping, merging, attaching, etc. - all you need to scale objects from their individual origins - select objects you want to scale and use the data box inside transform section in Details window. Spent roughly 30 seconds to find the right numbers.

Before:

After:

thank ypu

You can set a custom pivot point. Scaling behavior of the transform field on the details panel is also different from the arrows in the level.

Only issue is usually we need actors to remain separate, not combined.

I found a solution which may suit some situations >>>

Create an actor blueprint.
Add all objects you need to scale.
You can arrange them in the blueprint’s viewport.
Compile.

Then drag into the scene.
All objects added to the blueprint act as one - so you can scale them all together.

Thanks!

Parenting the actors to a “root” mesh in the World Outliner does exactly this. It allows each mesh to remain separate, but when you scale the root, they scale together. I just use a static mesh cube and set it to NoCollision and disable shadows and Hidden in game.