Overview
Subdivision data is cooked once in the editor from the mesh's quad-based control cage and stored in a Subdiv Info asset. At runtime the plugin evaluates the smooth surface from the cage's current pose, so an animated Skeletal Mesh stays smooth while you animate the light cage. Every cooked level can be switched instantly without cooking again; level 0 is the original cage.
USoftSubdiv comes in two forms that install the same way and work with the same assets:
| Free player (Fab) | Full version (usoftsubdiv.com) | |
|---|---|---|
| Display, animate and render cooked subdivision | Yes | Yes |
| Switch subdivision levels, Movie Render Queue level | Yes | Yes |
| Play Alembic-driven subdivision | Yes | Yes |
| Demo scene | Yes | No |
| Cook Skeletal Meshes, Static Meshes and Alembic caches | No | Yes, with a license key |
| Source code | Full C++ source | Precompiled |
In the free player the cook buttons are present but open a window explaining that cooking is part of the full version, with links to a free Trial key and to a paid license.
Installation
Requirements
- Unreal Engine 5.7 or 5.8, Windows 64-bit.
- Skeletal subdivision needs the GPU Skin Cache in the project — see GPU Skin Cache. Static and Alembic subdivision do not.
- Hardware ray tracing is optional; when it is on, subdivided meshes cast ray-traced shadows.
Free player from Fab
- In the Epic Games Launcher, open Fab Library, find USoftSubdiv and click Install to Engine for your engine version.
- Open your project, go to Edit > Plugins, search for USoftSubdiv, tick it and restart the editor.
Full version from usoftsubdiv.com
- Download the archive for your engine version from the Download section of the site.
- Extract it into your project's
Pluginsfolder so that the result isYourProject/Plugins/USoftSubdiv/OpenSubdivUE.uplugin. Do not leave an extra folder level such asPlugins/UE_5.8/USoftSubdiv. - Start the editor and activate your key (see Activating a license).
Plugins/USoftSubdiv folder first, then extract the new one. Copying a new version over an old folder mixes old and new files and can stop the cook module from loading.Plugins folder, Unreal loads the project's copy. You do not need to uninstall the player.Quick start: the demo scene
The free player includes a demo scene, so you can see the plugin working before cooking anything.
- In the Content Browser, open Settings and turn on Show Plugin Content.
- Open Plugins > USoftSubdiv Content > Demo > Map > PreviewMap.
- Open the Level Sequence Animation in the same Demo folder and press play. The first part shows the animated Skeletal Mesh at several subdivision levels, the second part cooked Static Meshes.
- Select one of the characters. In the Details panel, the USoftSubdiv section shows the Subdiv Level; change it to see the levels switch instantly.
If the subdivided characters stand still in their bind pose while the animation plays, the project has the GPU Skin Cache off — the next section explains it.
The demo uses two engine plugins, HDRI Backdrop and ACL; USoftSubdiv enables them. The demo content is optional: the plugin works the same without the Demo folder.
GPU Skin Cache
A subdivided Skeletal Mesh reads its animated pose from the engine's GPU Skin Cache. Unreal turns it off by default and only some project templates turn it on (for example Film, Video & Live Events, and projects created with ray tracing). In a project without it, a subdivided character stays in its bind pose.
USoftSubdiv detects this. The first time a subdivided Skeletal Mesh is shown, a notification appears: "USoftSubdiv: skeletal subdivision cannot follow animation in this project".
- Enable and restart writes
r.SkinCache.CompileShaders=Trueto the project'sConfig/DefaultEngine.iniand restarts the editor. Shaders recompile once after the restart. - Not now closes the notification. You can turn the setting on later in Project Settings > Engine > Rendering > Skinning: Support Compute Skin Cache in UE 5.7, Skin Cache Shader Support in UE 5.8. Restart the editor afterwards.
Using subdivision
Everything in this section works in both the free player and the full version.
Skeletal Meshes
Once a Skeletal Mesh has been cooked, every actor in your levels that uses it gets subdivision automatically: the plugin attaches a Subdiv component to the Skeletal Mesh Component. Select the actor and look for the USoftSubdiv section in the Skeletal Mesh Component's Details:
| Subdiv Info | The cooked asset to display. Only assets cooked from this mesh are offered. |
| Subdiv Level | The level shown in the viewport and in Play. 0 is the original cage; the highest value is the level the asset was cooked to. Changing it never needs a new cook. |
| Subdiv Only Render | When ticked, Subdiv Level applies to the viewport and Play only, and Render Subdiv Level is used by Movie Render Queue renders. Use it to keep the viewport light and render the smooth surface. |
| Render Subdiv Level | The level Movie Render Queue renders when Subdiv Only Render is on. |
At level 1 and above the original mesh is hidden and the subdivided surface is drawn in its place, with the same material sections, UVs, normal-map tangents and overlay material.
Static Meshes
Cooking a Static Mesh produces ordinary Static Mesh assets named <Mesh>_<Level>_Subdiv, one per cooked level, next to the source mesh. Use them like any other Static Mesh; Nanite can be enabled on them.
Alembic caches
An Alembic-driven subdivision reads a Maya .abc cache from disk frame by frame, so even a long cache uses little memory.
- Drag the cooked Alembic Subdiv Info asset into the level. This creates a Subdiv (Alembic) actor at level 0.
- Its Frame property selects the cache frame; it can be keyed in Sequencer. Interpolate Frames (advanced) blends between cache frames.
- With the shot's Level Sequence open in Sequencer, the Key Cache Range at Playhead button in the actor's Details keys Frame so the whole cache plays from the playhead: the cache's first frame at the playhead, its last frame as many frames later as the cache is long.
The cache file stays outside the Content folder (usually in YourProject/AlembicSource). Keep it with the project when you move or share it; Migrate copies it along with the asset and asks before overwriting an existing cache.
Cooking (full version)
Activating a license
Cooking needs a license key. A free Trial key (5 cooks) or a 1-Month License (unlimited cooks for 30 days) is available at usoftsubdiv.com. A key activates one machine.
- Open the USoftSubdiv menu in the main menu bar and choose Manage License....
- Paste the key into License key and click Activate. The window shows this machine's fingerprint, which support may ask for.
- To move to a different key later, open the same window and use Upgrade / Change License.
Activation and license checks contact license.usoftsubdiv.com over HTTPS; a Trial key needs an internet connection for each cook. Without a license the cook buttons stay visible and open this window instead of cooking.
Cook a Skeletal Mesh
- Right-click the Skeletal Mesh in the Content Browser and choose USoftSubdiv > Cook Subdiv, or select an actor using it in the level and click Cook SKM on the level editor toolbar.
- In the Cook USoftSubdiv window, pick or create the Subdiv Info Asset.
- The cook reads the quad-based FBX the mesh was imported from. If the source FBX is not found, tick Manual source FBX and choose the file.
- Set Subdiv Levels (the highest level to cook; 2 is the default) and click Cook Subdiv. The window estimates the cook time for large meshes.
Every placed actor using the mesh gets subdivision right after the cook.
Cook a Static Mesh
Use USoftSubdiv > Cook Subdiv on a Static Mesh, or Cook SM on the toolbar. Choose the Output mesh, whether to Enable Nanite on it, and Subdiv Levels. Placed actors that showed the source mesh are switched to the cooked mesh in one step that a single Ctrl+Z undoes.
Cook an Alembic cache
- Select the destination folder in the Content Browser, then choose Add > Subdiv from Alembic..., or click Cook ABC on the toolbar.
- Choose the
.abcfile. - Keep Copy cache into the project ticked when the cache is outside the project, so it travels with it.
- Choose Subdiv Levels (0 by default for Alembic) and cook. The asset is named
<cache>_<Level>_Subdiv.
Maya tools
The free USoftSubdiv Maya Exporter tags each Maya mesh with its shading-group name and exports the Alembic cache USoftSubdiv reads, so material slots survive the trip to Unreal. Download it from the Free tools section of the site, extract it anywhere and drag install.py into the Maya viewport; its shelf button appears. The full version also includes the tools in Plugins/USoftSubdiv/MayaContent, with an export guide.
Console variables and commands
For advanced use; the defaults suit most projects.
r.OpenSubdivUE.Alembic.CacheFrames (8) | Decoded Alembic cage frames kept in memory. |
r.OpenSubdivUE.Alembic.PrefetchFrames (2) | Alembic cage frames decoded ahead during playback (0 = off). |
r.OpenSubdivUE.AutoReleaseLevels (1) | Releases subdivision levels no component is showing from memory after 10 seconds. 0 = only through the command below. |
OpenSubdivUE.ReleaseUnusedLevels | Releases unused subdivision levels from memory now. |
OpenSubdivUE.DumpAssetSize /Game/Path/Asset | Logs a Subdiv Info asset's size and memory use, level by level (editor). |
r.OpenSubdivUE.RayTracingRefit (0) | Ray-tracing geometry: 0 = rebuild each frame, 1 = refit each frame (faster, can be less exact). |
r.OpenSubdivUE.FlipNormals (-1) | Overrides the cooked normal direction: -1 = as cooked, 0 = off, 1 = flip. |
Troubleshooting
- A subdivided character stays in its bind pose (T-pose).
- The project has the GPU Skin Cache off. Use Enable and restart in the notification, or see GPU Skin Cache.
- The mesh looks like the low-poly cage.
- Subdiv Level is 0. Raise it in the USoftSubdiv section of the Details panel.
- Subdivided characters are missing in a Movie Render Queue render.
- If the render uses a collection or render-layer modifier, build the collection by actor. A rule such as "everything except Skeletal Meshes" also hides the attached Subdiv component.
- The log says an asset "was cooked in an older format".
- The asset comes from an early version of the plugin. Re-cook it with the full version.
- The cook buttons open a "Full Version" window.
- This is the free player, which does not cook. Install the full version in the project's
Pluginsfolder (see Installation). - Activation fails with "Cannot reach the license server".
- Check the internet connection, and that a firewall or antivirus allows
UnrealEditor.exeto make HTTPS connections tolicense.usoftsubdiv.com. - "This key has already been used."
- The key is active on another machine. Contact support with the machine fingerprint shown in Manage License.
- Lost your key?
- Have your keys emailed to you again at usoftsubdiv.com/recover.
Video tutorials
Step-by-step videos on the YouTube channel. The narration is not in English; the steps on screen follow this guide.
Support
Ask in the community on Discord (discord.gg/A5mMfgYjmj) or write to support@usoftsubdiv.com.