Importing into Unreal Engine (ST9 Format)
SpeedTrees are supported in the Unreal Engine game engine. The .st9 files exported by SpeedTree 9 can be imported with Unreal Engine 4.27 or later.
Version compatibility
Unreal Engine version | SpeedTree Modeler version | SpeedTree model file type |
---|---|---|
Unreal Engine 4.27 and later (see note) | 9, 10, + | .st9 |
Unreal Engine 4.19.2 and later | 8, 9, 10, + | .st |
Unreal Engine 4.3 to 4.19.1 | 7 | .srt |
Note
- As of Unreal Engine 5.1, SpeedTree .st9 files work with Nanite.
- In Unreal Engine 5.0, SpeedTree models work with Lumen but are incompatible with Nanite.
Differences between .ST9 and .ST files
The importer for the .st9 format is a little different from the .st format in that it uses the concept of a master material that is used as the parent material for all the material instances on a tree. This makes it easy for you to change one material and all your SpeedTrees get the changes.
Wind is also now done in the material editor and is fully computed on the GPU, rather than relying on CPU-side components as in previous versions. This makes it easy to tune wind parameters inside UE, optimize rendering, and even change wind effect nodes all from inside UE. Wind for .st9 files also has fewer instructions than .st wind and does not require multiple draw calls for wind effects on different geometry types.
However, there may be times when you would still want to use the legacy .st pipeline instead of the new pipeline. Since the wind is done wholly on the GPU, it is harder to change the frequencies of motion. For instance, if the wind strength changes dramatically at runtime, and you wish to have leaves flutter faster, this would be more difficult in the .st9 wind (and require some work in blueprint). But for most cases of steady wind strength, and even changing wind directions, .st9 should be an easier, faster, and more configurable method of rendering SpeedTrees in UE.
Pipeline to UE
Before exporting a tree for UE, be sure that your tree is set up for real-time use by using LOD. Also ensure that wind is correctly set for UE by setting the fan to Games mode and tuning the wind effects, if necessary. For the .st9 format, be sure to set the wind strength to approximately what you want within UE, as that will be used as the basis for the wind parameters set on the material.
If this is the first time exporting to UE, be sure to pick one of the Unreal Engine presets in the export mesh dialog, to ensure all the export settings are correct for UE. Export an .st9 file to disk, then switch to UnrealEd and import the .st9 file there. The mesh and all textures should be found and imported into your UE project assets.
On import, material instances will be created for all of the materials in the .st9 file. The material instances can be switched to a new parent material after import, if wanted.
Placement
Once you've imported the model as an asset you can place it in your scenes like you would any other static mesh. Simply drag the asset and drop it in the scene to place a model. Mark them as “static” to use them with Lightmass (you'll need a good lightmap uv) or “moveable” to have them be dynamically lit and shadowed.
You can also paint the tree with a foliage layer. Drag the asset into foliage painting area and paint the SpeedTrees like any other static mesh. See UE's foliage tool documentation for more information.
Wind
With .st9, you can wholly tune the wind effects inside UE after import instead of needing to go back to the Modeler. There is no strength value, you edit the wind animation parameters directly, including direction. Smoothly changing any non-frequency values over time, including direction, can be done using a blueprint.
Note
If editing in UE, be sure to change all of the material instances of a tree to the same values or you may have separation.
However, editing in the Modeler does offer some benefits. The values are scaled into meaningful ranges so you can more easily copy values from tree to tree (rather than work in real-world units in UE). Also, the Modeler has wind curves that are used in conjunction with wind strength so you can dial up and down the wind effects easily, while in UE you are tuning the singular wind effect used on the tree. The wind strength at export time is "baked in" to the wind curves to find the wind parameter values set on the material instances.
LOD
Your LOD behavior is set in the SpeedTree Modeler, but you can adjust when the LOD changes occur inside of UE. LOD transitions are based on screen space area, and these values can be edited in the static mesh editor associated with the SpeedTree model. Default values are chosen upon import that work for typical situations.
All smooth LOD transitions are done using UE's crossfaded LOD.
Materials
The materials created by the .st9 importer are actually material instances based off of one of two "master" materials (one for geometry and one for billboards). Wind effects and other settings are available parameters to edit on each instance.
If you wish to edit SpeedTree materials, you can do this by editing the original materials stored in the engine. Or (and this is a better practice) you can duplicate the engine materials and edit them as you wish. Then, switch the material instances to the new parent material after importing the tree. In this manner, you could have a number of different material setups ready to go, and the various parameter values set by the importer will move to the new ones.