Modular Snap System Editor Plugin allows to snapping and aligning Actors by simply moving them close enough to each other. Especially useful for working with modular assets without worrying about grid and alignment. Works with any Actor class that has Static Mesh Components. Existing static meshes can be easily prepared for use with the system.
GET MSS FOR FREE: MSS plugin is free for modular asset creators. If you sell modular assets on the Unreal Marketplace and you are interested please PM me. Also, if you send me some of your assets I can help you to prepare them for MSS (add sockets) and make a tutorial like those above.
Support: this thread or email@example.com
Description: With Modular Snap System (MSS) Editor Plugin you can easily snap and align Actors together by simply moving them close enough to each other. Especially useful for working with modular assets without worrying about grid and alignment. Works with any Actor class that has Static Mesh Components. Existing static meshes can be easily prepared for use with the system.
Status: v1.2 release July 23, 2018
v1.0 (May 31, 2018)
- Snaps Actors by using named snap points defined using sockets. Adds “snap socket to socket” feature to UE4 and builds other features on it.
- Only snap points with compatible names will snap.
- Don’t attaches actors to each other, but simply moves/rotates them.
- Works with any Actor class or blueprint that owns at least one static mesh component.
- Supports snapping multiple selection and groups, will snap all selected actors as one.
- Supports stepped rotation around snap point forward vector, can be customized for each snap point.
- Supports attaching actors to the target parent.
- Settings like minimal snap distance, angle, rotation snap etc. can be modified in editor.
- Viewport button to easily enable/disable the plugin (near snap to grid button).
v1.1 (June 15, 2018)
- Supports attached actors hierarchies and child actor components.
- Supports snap and attach actors, can be customized for each snap point.
- Supports moving selection pivot to the snap point.
v1.2 (July 23, 2018)
- Compatible UE 4.20
- Socket polarity (tutorial)
- Snap directly after dragging from the content browser
- Fixed incorrect pivot for groups and multiple selection
Code Modules: Snap System Module (Editor)
Number of C++ Classes: 4
Supported Development Platforms: Win32, Win64, Linux, Mac
Supported Target Build Platforms: None (Editor-only)
Important/Additional Notes: Source code included.
Modular Snap System (MSS) aligns actors by using sockets defined in static meshes. Those sockets are also called “snap points”.
After one or more Actors are moved in the Level Editor the MSS will look around all sockets defined in those Actors. It will search for matching sockets from the Actors that was not moved.
If a matching socket is found then the moved Actors will be aligned in such a way that both sockets have the same location and orientation in world space. It’s important to note that by default the moved Actors will not be attached to the matching socket.
Right now MSS will only consider Static Mesh components (looking to change that later). Actors owning those components can be of any class. To be considered for matching Static Mesh should have a collision.
Parameters of the plugin can be accessed from Level Editor toolbar “Settings” menu or in “Plugins” section of Project Settings. Parameters are saved in EditorPerProjectUserSettings.ini config file.
Matching rules and parameters.
While searching for matching socket three things are considered: socket name, distance between sockets and angle between socket’s forward vectors.
Only sockets in range with matching names and angles are considered, from those the nearest socket is chosen.
Distance. The radius of the search around each source socket is defined by the SearchDist plugin parameter.
Angle. Socket’s forward vectors (X axis) should be pointing in more or less opposite directions in World Space. The tolerance is defined by the MaxAngle parameter. MaxAngle = 0° means that the forward vectors should be exactly opposing each other, while MaxAngle = 180° means that they can be oriented in any direction. Default is 75°.
Name. Sockets should be named like “SnapPointName_TheRest”. Only “SnapPointName” – the part before the first “_” – is compared. “_TheRest” part is optional. Comparison is case insensitive. Sockets named Socket, Socket_0, Socket_XYZ_123 will snap, while those named Socket1 and Socket2 will not.
Polarity. Starting from v1.2 snap point name can have “polarity”: positive, negative or neutral. Socket named Door+ is positive, Door- is negative and Door is neutral. If one snap point has polarity and other has not, then the polarity is discarded and only names are compared. If both have the same name and opposite polarity they will match. If both have the same name and the same polarity they will not match. Therefore Socket+ matches Socket-, Socket matches both Socket+ and Socket-, but Socket+ doesn’t match socket Socket+. and Socket- doesn’t match Socket-. (tutorial)
Paramters. “_TheRest” part of the socket name can contain snap point parameters. At this time only 2 parameters are defined: _R (roll snap angle) and _A (attach). Other values are ignored. For example: Socket_R120_A_10 has a roll step of 120° and attach flag set. Anything else (_10) is simply discarded..
Roll snap angle _R. When snapped, the actor will be aligned to the target socket Y-Z plane, but still can be rotated around X axis (Roll). This rotation has a default step snap defined by the DefaultRollStepSnap plugin parameter (default value 90°). Step snap value of 0° means free rotate (no snap), while the value of 360° means there is no rotation possible. This value can be also defined in the socket name using “_R” parameter. For example: socket named “DoorFrame_R180” defines rotation step snap of 180°, only rotations of 0° or 180° are possible. Socket named “Tri_R120_0” can be rotated at 0°, 120° or 240° around X axis. Socket named “Fix_R360_12” cannot be rotated in any way, while socket named “Pipe_R0” can be rotated freely.
If both source and target sockets defines the rotation snap, then the target socket’s snap is used.
Attach to target _A. By default the moved Actor will not be attached to the matching Actor. But if the target socket has the “_A” parameter, then the moved actor will be attached to the target actor. It only works when only one actor is moved and only if the target socket has “_A”. Therefore, if you snap “Door” to “Wall_A”, Doorwill be attached, but if you snap Wall_A to Door there will be no attachment (may change in the future).
Attach to parent. If the plugin parameter AttachToParent is true, then MSS will attach the moved Actor to the parent Actor of the target Actor (if there is one).
Snap pivot. If the plugin parameter Snap to Pivot is enabled then the selection pivot will be moved to the last snap point. The pivot location will return to normal when the selection is changed.