Description

When using ISMs and HISMs, each instance can have its own transform, which can affect the LOD selection of one or more instances. For HISMs in particular, changing the scale of a single instance greatly skews LOD selection for every single instance on all clusters, which is highly unexpected and makes it impossible to have dynamic scale changes in runtime.

One common technique that is affected by this behavior is hiding specific instances of an HISM. Since visibility cannot be toggled per-instance, it is common to hide specific instances by setting their scale to a tiny value. This works well for ISMs, especially since 5.4 which allowed per-instance LOD selection, but it makes all HISM instances (over all clusters) select a less-detailed LOD than desired.

An initial investigation showed that, up to UE 4.21, HISMs did not take instance scales into account for LOD selection, which could result in large instances being incorrectly clipped (see [Link Removed]). On February 2019, CL 5225334 attempted to address this by introducing an "average scale" for the entire HISM component. However, it used the following calculation:

"AverageScale = (MinInstanceScale+MinInstanceScale)/2"

This calculation is extremely sensitive to the scales of potentially only two instances of the entire HISM (maximum and minimum), while ignoring the scale of all other instances. Compare it with "AverageScale = SumOfAllInstanceScales/NumberOfInstances", for example.

As a result of the change above, all UE versions from UE 4.22 up to mainline latest (currently 5.7) don't properly handle scaling individual instances of an HISM, forcing the usage of ISMs when this is needed, for example for hiding specific instances in runtime.

Apart from using a better AverageScale calculation, it might also be valuable to have a property on the HISM component allowing the user to opt in or out of taking scale into account for LOD selection.

 

Steps to Reproduce

1. Download, unzip and open the repro project
2. Open level Test_HISM and position the camera on the middle between the two groups of spheres, so that on each group some spheres have high detail and some have low detail.
3. Locate which group is BP_HISM and which group is BP_ISM
4. Edit BP_HISM. On the Construction Script:
4.1. Find node "Update Instance Transform" at the end
4.2. Change the new scale to (10,10,10) and compile. One instance will become huge, and most others will unexpectedly change their LOD to high detail
4.3. Change the new scale to (0.1,0.1,0.1) and compile. One instance will disappear, and most others will unexpectedly change their LOD to low detail

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-331289 in the post.

0
Login to Vote

Unresolved
CreatedSep 22, 2025
UpdatedOct 14, 2025
View Jira Issue