USoft Mesh Transform — baking transforms and moving pivots in Unreal Engine
===========================================================================

A free editor plugin. It bakes a static mesh actor's rotation and scale into
the mesh itself, and moves the mesh pivot to any point on its bounding box —
without entering Modeling Mode.

No licence, no sign-in, no internet connection. Supported on UE 5.7 and 5.8.


1. INSTALL
----------

1. Extract the archive into your project's Plugins folder, so that you end up
   with:

       YourProject/Plugins/USoftMeshTransform/QuickBakeTransform.uplugin

   If your project has no Plugins folder yet, create one next to the .uproject
   file.

2. Restart the editor. The plugin is enabled by default.

IMPORTANT: if you downloaded an earlier archive of this plugin under the name
"QuickBakeTransform", delete that folder before extracting this one. Unreal
identifies a plugin by its .uplugin filename, so keeping both gives you two
plugins with the same name and the editor refuses to start with the error
"Found more than one plugin with the name QuickBakeTransform".


2. WHY BAKE A TRANSFORM
-----------------------

Placing a static mesh actor with a rotation or a non-uniform scale is common,
but the asset itself never learns about it. Only the actor's component is
rotated or scaled — the mesh, its collision, its sockets and its LODs all stay
in their original orientation.

That difference leaks into other systems. Collision is generated from the
untransformed mesh. Foliage and instanced tools read the asset, not the actor.
Lightmap and shadow behaviour follow the asset's own bounds.

Baking pushes the rotation and scale into the mesh, then puts the component
back where it was. Nothing moves on screen, but afterwards the actor reads
Rotation = 0, 0, 0 and Scale = 1, 1, 1, and every system downstream sees the
shape you actually placed.


3. SHORTCUTS
------------

    Ctrl+Shift+B      Bake the rotation and scale into the mesh

    Ctrl+Numpad 5     Move pivot to the centre of the bounding box
    Ctrl+Numpad 4     Move pivot to the left
    Ctrl+Numpad 6     Move pivot to the right
    Ctrl+Numpad 2     Move pivot to the front
    Ctrl+Numpad 8     Move pivot to the back
    Ctrl+Numpad 7     Move pivot to the bottom
    Ctrl+Numpad 9     Move pivot to the top
    Ctrl+Numpad 0     Move pivot to the world origin

The numpad layout is the map: the key that sits on the left moves the pivot to
the left, the key at the top moves it to the top. Nothing to memorise.

Every command is also on the actor's right-click menu, under "USoft Mesh
Transform", with the pivot commands in a "Set Pivot" submenu. The menu always
shows the shortcut that is currently assigned, so it stays correct after you
rebind anything.

Select one or more static mesh actors first. Everything the plugin does is a
single undo step (Ctrl+Z).


4. HOW TO CHANGE THESE SHORTCUTS
--------------------------------

Every command in this plugin is a normal Unreal editor command, so you rebind
it the same way you rebind anything else in the editor:

1. Open the keyboard shortcuts editor. WHERE IT LIVES DEPENDS ON YOUR ENGINE
   VERSION — Unreal moved it in 5.8:

     UE 5.8   Edit → Keyboard Shortcuts...   (or press Ctrl+Alt+K)
              Its own window, sitting directly beneath "Editor
              Preferences..." in the Edit menu. It is NOT a page inside
              Editor Preferences, and searching there will not find it.

     UE 5.7   Edit → Editor Preferences → Keyboard Shortcuts
              A page in the left-hand list, under General. There is no
              "Keyboard Shortcuts" entry in the Edit menu on 5.7.

2. Find the section named "USoft Mesh Transform".

   You can also type into the search box at the top — "Bake Transform" or
   "Pivot" will narrow the list straight to these commands.

3. Click the binding field next to a command and press the keys you want.
   If the combination is already taken, Unreal names the command holding it
   and offers an "Override" button, so you decide rather than losing a
   shortcut silently.

The button beside the field clears a binding entirely, leaving the command
available from the right-click menu only.

Your choices are saved per user, not per project, and survive restarting the
editor.

IF YOUR NEW SHORTCUT DOES NOTHING, IT IS PROBABLY ALREADY TAKEN

Unreal only warns you about a clash when the shortcut is already used inside
the same section of that window. A shortcut owned by a different section —
the Level Editor's own commands, for example — is accepted in silence, and
then the other command wins when you press the key.

So an accepted binding does not prove a free one. If a key you just assigned
appears to do nothing, assume the collision first.

Ctrl+M is the trap we hit: it is already "Move Selection to Current Level" in
the Level Editor. In a map with a single level that command does nothing
visible, so the key looked simply dead. Ctrl+Shift+M was free and worked
immediately.

To check a candidate before committing to it, type it into the search box at
the top of the Keyboard Shortcuts window: if any other command lists it, pick
something else.

A NOTE ON SHIFT AND THE NUMPAD

The pivot commands use Ctrl, not Ctrl+Shift, and that is a Windows constraint
rather than a preference. Holding Shift temporarily cancels NumLock, so
Shift+Numpad 7 arrives as Shift+Home and the numpad key never reaches Unreal
at all. If you rebind a pivot command yourself, avoid putting Shift on a
numpad key for the same reason — the menu entry will keep working, but the
keyboard shortcut will appear to do nothing.


5. WHAT BAKING COVERS
---------------------

    Every source LOD              transformed
    Nanite high-res source        transformed
    Sockets                       transformed
    Simple collision              box, sphere, sphyl and convex transformed

Complex (per-triangle) collision follows the mesh automatically, since it is
built from the mesh itself.

Some combinations cannot be represented exactly. A sphere or a capsule has no
way to express a non-uniform scale, and a rotated socket under a non-uniform
scale would need shear, which Unreal's transform type cannot store. In those
cases the plugin uses the closest approximation and tells you so in the
notification.


6. SHARED ASSETS
----------------

Baking rewrites the mesh asset, so it affects every actor using that asset —
including actors you did not select.

When that is the case the plugin stops and asks:

    Create new asset   duplicates the mesh as SM_Xxx_Baked, bakes the copy,
                       and points only the selected actors at it. Other actors
                       are left untouched.

    Apply to all       bakes the original mesh in place. Every actor using it
                       is affected.

    Cancel             leaves the asset alone.

If the same asset is selected twice with two different transforms, baking in
place is impossible by definition and only the duplicate option is offered.


7. WHAT IS SKIPPED, AND WHY
---------------------------

The plugin reports anything it passed over in the notification.

    Instanced meshes (ISM / HISM)   one mesh, many per-instance transforms;
                                    there is no single transform to bake

    Blueprint components            the construction script recreates them on
                                    the next run, which would apply the bake a
                                    second time

    Actors with no static mesh      nothing to bake

    Sheared parents                 a parent with both a non-uniform scale and
                                    a rotation would require shear to place
                                    the child back correctly


8. LIMITS
---------

Static meshes only. Skeletal meshes are not supported.

Baking edits the asset on disk once you save. It is undoable in the session,
but treat it like any other asset edit: source control or a backup is the
safety net, not undo.


---

USoft Mesh Transform is free. The paid plugin from the same author is
USoftSubdiv, a subdivision-surface plugin for Unreal Engine:

    https://usoftsubdiv.com
