shirtsinbulkShift-S: Modeling UX for Unreal 5.6+

Version 1.0 | Unreal Engine 5.7+

1. Overview

Shift-S brings the lightning-fast workflow of Blender’s pivot and selection tools directly into the Unreal Engine Level Editor.

Unlike the default Unreal workflow—which requires navigating the Toolbar, Mode Selection, or Right-Click Context Menus—Shift-S consolidates essential layout tools into a gesture-based Pie Menu. It allows Level Designers and Environment Artists to manipulate pivots, select varying contexts, and snap geometry without ever taking their eyes off the viewport.

Key Features

  • The Pie Menu: Instant access to tools via the standard Shift+S hotkey.

  • Tactile "Scroll-Scope": Select objects by material/mesh, and tune the search radius in real-time using the mouse wheel.

  • Instant Pivot Adjustment: Snap actor pivots to Center or Bottom (Floor) without entering Modeling Mode.

  • X-Ray Vertex Snap: Snap the 3D cursor to specific vertices on complex geometry instantly.


2. Installation & Setup

  1. Install: Extract the ShiftS folder into your project’s Plugins directory (or the Engine’s Marketplace/Plugins directory).

  2. Enable: Open Unreal Engine, go to Edit > Plugins, and search for "Shift-S". Check Enabled and restart the editor.

  3. Verify: In the Level Editor viewport, hold Shift + S. If the radial menu appears under your mouse cursor, the plugin is active.


3. The Pie Menu Workflow

The core interaction is gesture-based.

  1. Select one or more Actors in the viewport.

  2. Hold Shift + S. The menu appears centered on your mouse cursor.

  3. Move the mouse slightly towards the desired option (Up, Down, Left, Right).

  4. Release Shift + S to execute the command.

(Note: You do not need to click. The action executes on key release based on mouse direction.)

  • TOP (North): Snap Pivot to Center

  • BOTTOM (South): Snap Pivot to Bottom

  • RIGHT (East): Smart Select (10m) / Scroll-Scope

  • LEFT (West): Smart Select (50m)


4. Feature Details

A. Pivot Operations (Top / Bottom)

These tools adjust the Actor's Transform Location while inversely offsetting Component Locations. This effectively "moves the pivot" visually while keeping the mesh stationary in the world.

  • Snap Pivot to Center: Calculates the center of the bounding box of visible geometry (ignoring billboards/arrow components) and moves the pivot there.

  • Snap Pivot to Bottom: Moves the pivot to the bottom-center of the bounding box.

    • Use Case: Essential for placing props (chairs, tables, rocks) flush against the floor.

Technical Note: This operation modifies the Actor Location and applies a Local Offset to the Root Component. It is non-destructive and supports Undo/Redo via Ctrl+Z.

B. Smart Selection / "Scroll-Scope" (Left / Right)

The "Killer Feature" of Shift-S. It allows for contextual selection based on the active object.

  1. Select a source actor (e.g., a specific floor tile with M_Concrete).

  2. Hold Shift + S.

  3. Hover over Right (Smart Select) or Left.

  4. Do not release Shift yet.

  5. Scroll the Mouse Wheel Up/Down.

Visual Feedback:

  • A Cyan Sphere will expand/contract in the viewport.

  • Any objects that share the same Material or Static Mesh (configurable) as your source object and fall inside the sphere will highlight green.

  1. Release Shift to commit the selection.

C. X-Ray Vertex Snapping

Allows precise cursor placement on geometry without complex collision setups.

  • This logic runs automatically when using specific cursor tools included in extended versions of the pie menu.

  • It traces against Complex Collision (per-poly) to find the exact face index under the cursor, then snaps to the nearest vertex of that triangle.


5. Configuration (INI Settings)

You can customize the default behavior of Shift-S by editing your project's Config/DefaultEditor.ini file.

Add the following section:

code Inidownloadcontent_copyexpand_less


6. Shortcuts & Input

The default binding is Shift + S to match Blender.

To change this:

  1. Go to Edit > Editor Preferences.

  2. Search for "Shift-S" under the Keyboard Shortcuts category.

  3. Rebind "Open Shift-S Menu" to your preferred key.


7. Troubleshooting

Q: The Pie Menu appears but nothing happens when I release.

  • A: Ensure you have an Actor selected before opening the menu. Most operations require a valid selection context.

Q: "Smart Select" isn't picking up my objects.

  • A: Smart Select matches the Material in Slot 0 of the source object. Ensure the target objects share the same material instance.

Q: Pivot Snap is moving my object's location.

  • A: Allows check the "Tool Mode". Shift-S moves the Pivot (Actor Location) but keeps the mesh visually in place. If you inspect the Transform panel, you will see the Location values change—this is intended behavior.


8. Technical Specifications

8.1 Module Architecture

Shift-S operates as a standalone Editor-Only module (EditorNoCommandlet). It introduces no runtime dependencies and is automatically stripped from packaged builds, ensuring zero impact on shipped game performance.

The plugin follows a strict Model-View-Controller (MVC) separation pattern:

  • Model (Source/Core): FShiftSOps contains stateless static logic for geometric calculations, actor iteration, and transaction handling. It has no dependency on the UI.

  • View (Source/UI): SShiftSPieMenu is a pure Slate widget handling rendering, hit-testing, and cursor delta calculations.

  • Controller (Source/Framework): FShiftSModule handles the input chord binding (Shift+S), viewport context detection, and lifecycle management.

8.2 Algorithms & Logic

A. Smart Selection ("Scroll-Scope")

To maintain 120Hz editor performance while scrolling through thousands of actors, the selection logic uses a Two-Pass Caching Strategy:

  1. Pass 1 (Initialization): When the menu opens, the iterator scans the active level once.

    • Filter: O(N) scan where N is total actors.

    • It filters for AStaticMeshActor and matching MaterialInterfaces (or StaticMesh assets).

    • Valid matches are stored as TWeakObjectPtr<AActor> in a temporary session cache.

  2. Pass 2 (Scroll Update): As the mouse wheel events fire.

    • Filter: O(M) where M is the subset of cached candidates (usually <1% of the world).

    • It performs a simple fast FVector::DistSquared check against the cached set.

    • Visualizer: Uses DrawDebugSphere (transient) for the selection volume and DrawDebugBox for candidate highlights.

  3. Commit: GEditor->SelectActor is deferred until the input is released to avoid triggering the heavy NoteSelectionChange event broadcast during scrolling.

B. Pivot Transformations

The "Snap to Bottom/Center" operations are non-destructive to the visual mesh position. The algorithm performs a "Counter-Transform":

  1. Calculates the new Pivot Location (

    ) based on World Bounds.

  2. Calculates the Delta vector:

    .

  3. Updates the Actor Location:

    .

  4. Iterates all USceneComponent children attached to the root.

    • Applies an inverse local offset:

      .

  5. Marks the package dirty via Modify() to ensure the change is serialized.

C. X-Ray Vertex Snapping

To achieve vertex snapping without requiring the user to enable "Complex Collision" on every mesh, the plugin accesses the Render Data directly:

  • Trace: Performs a LineTraceSingle using bTraceComplex = true against the PhysX/Chaos mesh to retrieve the Hit.FaceIndex.

  • Buffer Access:

    • Retrives FStaticMeshLODResources from LOD 0.

    • Accesses PositionVertexBuffer and IndexBuffer (Abstracted for UE 5.x RHI).

  • Transformation: The raw vertex positions (Local Space) are multiplied by Component->GetComponentTransform() to resolve World Space coordinates.

  • Nearest Neighbor: Computes Euclidean distance from the Hit.ImpactPoint to the three vertices of the returned triangle index to find the snap target.

8.3 Performance Profile

Operation

Complexity

Notes

Open Menu

Low

Instantiates lightweight Slate Window.

Pivot Snap

O(N)

N = Selected Actors. Uses FScopedTransaction for Undo buffer.

Selection Scan

O(N)

Runs once on session start. Filtered by Class & Material.

Selection Scroll

O(M)

M = Cached Candidates. Extremely fast; safe for high-poly scenes.

Render

Minimal

Standard Slate OnPaint. No 3D scene injection overhead.

8.4 Integration & Extensibility

C++ Access

Tool programmers can utilize the Shift-S logic libraries within their own custom editor tools or Blutilities without invoking the Pie Menu UI.

Include Path: ShiftS/Public/Core/ShiftSOps.h

Example Usage:

code C++

Editor Scripting (Python)

Currently, the Shift-S functions are not exposed to Python or Blueprints. To request Python exposure for pipeline automation, please contact support.

8.5 Dependencies

The module has strict dependencies to ensure stability within the Unreal Editor environment:

  • UnrealEd / LevelEditor: For viewport and selection interaction.

  • RenderCore / RHI: For vertex buffer access.

  • SlateCode: For UI rendering.

Compatible Engines: UE 5.0 - 5.7+ Platforms: Win64, Mac, Linux.

9.1 Trademark Notice

Shift-S is an independent commercial workflow tool developed by [Your/Studio Name].

  • Unreal® Engine is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere.

  • Blender® is a registered trademark of the Blender Foundation (Stichting Blender Foundation).

Shift-S is not affiliated with, endorsed by, sponsored by, or officially connected to the Blender Foundation or Epic Games, Inc. References to "Blender-Style" workflows are made solely for descriptive purposes to indicate user interaction similarities (UI/UX patterns) for educational and functional clarity.

9.2 Warranty Disclaimer (AS-IS)

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.

While Shift-S utilizes Unreal Engine's native FScopedTransaction system to support Undo/Redo operations for all geometric changes, the user acknowledges that:

  1. Backup Responsibility: It is the user's sole responsibility to maintain version control (Perforce, Git, PlasticSCM) and regular backups of their Unreal Engine projects.

  2. Liability: In no event shall the authors or copyright holders be liable for any claim, damages (including, but not limited to, corruption of map files, loss of work, or system failure), or other liability, whether in an action of contract, tort, or otherwise, arising from, out of, or in connection with the software or the use or other dealings in the software.

9.3 Licensing & Distribution

Shift-S is distributed exclusively via Fab.com (owned by Epic Games). Usage of this plugin is subject to the Fab Content License Agreement (Standard License).

  • You may: Use this plugin in any number of commercial or non-commercial projects (Games, ArchFreq, Film) as permitted by the license seat purchase.

  • You may NOT: Resell, redistribute, or repackage the source code (.cpp, .h, .cs) or the compiled binaries of this plugin as a standalone product, assets, or part of another marketplace plugin. Including the source code of Shift-S in a public GitHub repository (or similar) is a violation of the distribution rights.

9.4 Third-Party Content & IP

All code logic, icons, and Slate UI widgets contained within Shift-S were created originally for this specific product.

  • No source code from the official Blender source repository (GPL) was utilized, copied, or linked in the creation of this tool.

  • No assets from the Unreal Engine Starter Content or restricted samples were repackaged.

9.5 Update Policy

We strive to support the current version of Unreal Engine plus the two preceding versions (e.g., 5.7, 5.6, 5.5). While we intend to update Shift-S for future engine releases, we cannot guarantee compatibility with future, unreleased versions of Unreal Engine due to potential API deprecations by Epic Games.

10. Support

For bug reports and feature requests:

Copyright © 2025 [YourName/Studio]. All Rights Reserved.