Importing into Unity

SpeedTrees are supported in the Unity game engine. The .st files exported by SpeedTree 9 can be imported with Unity 2018.3 or later.

SpeedTrees work in the standard rendering pipeline, and shaders can be switched to work in the High Definition Render Pipeline (HDRP) and Universal Render Pipeline (URP).

Version compatibility

SpeedTree Modeler version Unity version SpeedTree model file type
9.x Unity 2018.3 and later (1) .st
8.x Unity 2018.3 and later (1) .st
7.x Unity 5.0 to Unity 2018.2.21 .spm

Notes:

  1. Shader functionality improves substantially in Unity 2021.2.0a17 and later. See HDRP and URP.

Pipeline to Unity

Before exporting a tree for Unity, be sure that your tree is set up for real-time use by using LOD. Also ensure that wind is correctly set for Unity by setting the fan to Legacy UE4/Unity mode and tuning the wind effects, if necessary.

If this is the first time exporting to Unity, be sure to pick one of the Unity presets in the export mesh dialog, to ensure all the export settings are correct for Unity. Export an .st file directly into the Assets directory of your Unity project. Be sure to wait until the export process is complete before switching back to Unity for the import. You can also export it to another directory and copy it into your Unity assets, but be sure to copy the mesh and all of the textures at the same time before switching back into Unity. Otherwise, the importer will not be able to find the textures. You may be prompted to fix normal maps after import, so select “Fix now” and the import process will continue.

Unity will create a SpeedTree prefab you can use as a GameObject, on the terrain, or in other places inside Unity.

Note: Do not simply choose import and pick the .st file from a location outside your assets. Unity will not be able to find the needed texture files.

Placement

The prefab created after import can be dragged into the scene and transformed like any other GameObject. While you probably want to keep the scaling uniform, it should be noted that rotating the object is allowed. Wind, LOD, and billboard facing will still work correctly on a rotated SpeedTree.

SpeedTrees can also be painted on terrains similar to other mesh objects. On the tree tab of the terrain and click “Edit Trees”. Add the SpeedTree asset you wish to paint in the resulting dialog, and it will then show up in the “Trees” section. See Unity's documentation on terrain SpeedTrees for more information.

Note: Grass SpeedTree assets are also painted using the “tree” tab, not with the Unity grass system.

Wind

Wind behavior is tuned inside of the SpeedTree Modeler. To see the animation in Unity, you must add a Wind Zone to the scene to provide the wind source. You can add a Wind Zone as an individual object, or as a component on another object. The wind zone allows you to edit the strength and direction of the wind effect.

Note: You'll probably want to turn down the strength since the default is 1.0 (high wind).

LOD

Your LOD behavior is set in the SpeedTree Modeler, but you can adjust when the LOD changes occur inside of Unity. The SpeedTree prefab includes a LOD Group with which you can adjust the LOD distances.

HDRP and URP

When using the Universal Render Pipeline (URP), there is a built-in shader for SpeedTrees that should work automatically as in the standard pipeline, though it is missing features like subsurface. With the High Definition Render Pipeline (HDRP), the SpeedTree meshes will have materials attached to them for the standard rendering pipeline. They will appear pink (ie shader error). You can switch to the standard Lit shader, or make your own in Shader Graph, though wind will no longer work.

Starting in Unity 2021.2.0a17, new shaders are available for SpeedTrees. Using the GUI on the SpeedTree prefab, extract the materials, and switch them to the new shaders: SpeedTree/HDRPLit and SpeedTree/HDRPLit_Billboard for HDRP or SpeedTree/PBRLit and SpeedTree/PBRLitBillboard for URP.

These new shaders are created in Unity's Shader Graph, so they will work in all aspects of those pipeline, even in areas that were troublesome before like subsurface. Being written in shader graph, they are also very easy to edit. If you wish to change the SpeedTree shaders, you can change the base shader graph to apply to all trees, or duplicate it for a new shader with your own modifications.