Convert selected components to blueprint class changes location values seemingly at random

When selecting multiple static meshes with different location values (xyz) and using the option: ‘convert selected components to blueprint class’ the objects do not retain location values inside the blueprint. instead the values for location get scrambled

e.g. if one static mesh is at position x -25.0 y -75.0 z 250.0, it is moved to x 87.499863 y 62.500122 z -62.5
all relative locations between objects are still intact. the new locations appear to be dependent on the position of the static meshes in relation to each other.

expected behavior would be to either retain the location values from the placement inside the editor or pick one elements pivot as a new 0,0,0 center point and translate all other elements accordingly.

so if there are two objects A with x value of 50 and B with x value of 150 then the useful predictable behavior would either be to have the same values after the blueprint conversion or A set to 0 and B to 100

Hello akaChrisV,

I have run a few tests on our end and I have found that this appears to be working as intended. When I take multiple static meshes in the level and convert them to a blueprint they used the center between them as the origin for the new blueprint (the relative center becomes 0,0,0 for the new blueprint). This means that if you have two meshes set the the locations of (100,-300,20) and (100,150,20) the end result for their new relative locations will be (0,225,0) and (0,-225,0) respectively. I hope that this information helps.

Make it a great day

I don’t believe this is working correctly. If all of the actors are snapped to the grid and you group them and then position the collection in the exact center of the grid, the created Blueprint is still offset. This shouldn’t happen because the grouped selection is dead center of the world. Unless the actors all share the same pivot point, it makes creating a prefab from the selection incredibly frustrating. Not to mention that in my test cases, even though every actor is snapped perfectly to the grid, the created prefab is re-aligned to a new position that is fractional IE x: -119.511665 for example. This shouldn’t happen when your meshes are all using perfectly round units. IE two meshes 200x200x200 units should still end up with a location that is a whole number but this is not the case. What you end up with is a prefab that is impossible to align to the grid because everything is nudged by small amounts.

There is an easy workaround to this issue actually, thank god! After creating your prefab blueprint, the actors in the scene are replaced with the blueprint itself and you’ll see your 0,0,0 location adjusted accordingly. Open up the blueprint and add in an Arrow component. Select all of the meshes and parent them to the arrow and then copy the new Location value from inside the map (the weird offset) and paste it onto the location of the Arrow inside your BP. Now you can reset the location in the world and everything will line up fine. After you’ve made the adjustment you can safely re-parent all of the meshes back to the scene root and delete the arrow and it will maintain the offset.

I made a video covering some solutions to this problem, hopefully it helps anyone coming along this way.

2 Likes