Page MenuHomeFeedback Tracker

Incorrect thermal image visual range handling in Arma 3 2.18
New, NormalPublic

Description

Currently, the thermal imaging visuals do not accurately or realistically respond to the provided attributes via https://community.bistudio.com/wiki/setTIParameter as expected.

Changes made via this do not produce expected results. As per https://community.bistudio.com/wiki/getTIParameters the output formula is as follows:

OutputRangeStart + thermalValue × OutputRangeWidth

Where "thermalValue" is the standin for "temperature" or the level of simulated thermal emissivity of a given surface. This value should be in a 0 to 1 range where 0 equals no emissivity (or minimum observable temperature) and 1 equals full emissivity (or maximum observable temperature.)

With the default values, which can be retrieved via getTIParameter, are as follows:

[["OutputRangeWidth",0.8],["UpdateHistogram",1],["FilmGrain",1],["OutputRangeStart",0.1],["Blur",1]]

The two relevant parameters here being "OutputRangeWidth" and "OutputRangeStart", utilizing the given formula, the expected default range should be 0.1 to 0.9

Visually, this means everything below 10% emissivity should be "cut off" or "clamped" and not appear in the final image, same for everything above 90% emissivity.

However, this is not what happens. Instead, it appears that the full visual range is present but the "exposure" is altered as if a post process filter is applied, so the full color range is simply forced into the desired range. The resulting output looks like what you might get if you altered the range of luminence with the "levels" filter in photoshop.

For example, if you wanted to limit the visual range to only the upper 12%, you'd use the following commands:

setTIParameter ["OutputRangeWidth", 0.125];
setTIParameter ["OutputRangeStart", 0.875];

Which should give and output range of 0.875 to 1.0, or the highest 12.5% of the thermal value.

With a thermal imaging device, you'd use temperature, but the principle is ultimately the same. This should show the full range of colors (complete black to complete white) but without displaying anything below 0.875 brightness.

Instead, the result is as follows:

Not only is this incorrect, but by looking at the brightness of the human units vs the terrain objects, you can see that the contrast isn't properly adjusted. If we were seeing only the upper 12.5% of the thermal emissivity, you'd expect the trees, clutter, and surface to nearly impossible to see, if at all, where the human units should be nearly full brightness.

You can see here how the engine seems to incorrectly adjust the output range:

Which means the formula provided is incorrect, or selecting a slice of the visual range, as all thermal imaging devices that exist allow, isn't possible. Part of the reason for this could be that the parameters are restricted to the 0 and 1 range, which would obviously restrict what can be changed.

If I "normalize" the image in photoshop, The output looks like this:

For comparison, here is how it looks with default, unaltered settings:

This issue is consistent across terrains, modded and vanilla, including my own terrain with custom lighting and tone mapping settings. This is true regardless of date, time, and weather conditions. There doesn't appear to be a way to address this via modding or scripting. The 0 and 1 limit for the TI parameters make this impossible to be fixed on the modder or mission maker side of things.

Graphics settings have no effect on the issue.

This thread makes some good observations as well.

PLEASE ask me for clarification, more info, more reference images, or ANYTHING that could help.

Details

Severity
Major
Resolution
Open
Reproducibility
Always
Operating System
Windows 10 x64
Operating System Version
Edition Windows 10 Pro Version 22H2 Installed on ‎4/‎13/‎2024 OS build 19045.5011 Experience Windows Feature Experience Pack 1000.19060.1000.0
Category
Visual-Environment
Steps To Reproduce

Launch the game, enter the editor, place down some units for reference.

Optionally, set the mission to night time, full overcast, and in December for maximum visual difference between the "temperature" of the environment, and the units.

  1. Start the mission
  2. Pause the game, and start up the splendid camera
  3. Set the acceleration of time to 1, so time passes normally
  4. Pause the game to access the debug console, and adjust the "OutputRangeWidth" and "OutputRangeStart" as desired.

You can use a function to retrieve expected output range values to help with more quickly testing different combinations of values:

testformula = { 
 _width = _this select 0; 
 _start = _this select 1; 
 
 _rangeMin = _start + (0 * _width); 
 _rangeMax = _start + (1 * _width); 
  
 _visualRange = [_rangeMin, _rangeMax]; 
 _visualRange 
};

[0.125,0.875] call testformula;
setTIParameter ["OutputRangeWidth", 0.125];
setTIParameter ["OutputRangeStart", 0.875];
  1. Optionally you can use photoshop or other image editing tools to look at the color range, and normalize the result to check for relative differences in temperature.
  1. Optionally use a real thermal device to take reference images. It's what I did for comparison while making this post. All consumer FLIR devices have this functionality built into their framework. I have worked with various such devices over the years and can confirm this myself.
Additional Information

I was under the impression that the thermal visual mode was broken in the latest release, when I was testing it on vanilla terrains. I was attempting to correct what I thought were visual issues with my own custom terrain and models that were causing the unrealistically bright trees, roads, clutter, and visual glitches with the sky, fog, and sea.

Additionally, roads appear to emit more heat than physically possible in the vast majority of circumstances. Clothing, vests, and facewear also don't appear to correctly render. Turns out this is just how it looks. Both on the stable release and the dev branch. Graphics settings don't seem to have any effect.

Given the controversial nature of the TI overhaul that came in 2022, I think some corrections are warranted. In it's current state, the thermal visual mode is nearly unusable, and has a significant number of issues with accuracy and realistm. It is to the point that the previous system was far more realistic and much easier to work with for both mission creators and for gameplay.

I have come to this conclusion from real experience with thermal devices, consumer and military, and a significant number of available online reference photos.

See various community threads for even further context if necessary.

Personally, I think making changes that allow this feature to be usable or moddable would be enough. Being able to correctly isolate a slice of the thermal range would allow for realistic thermal rendering for mission makers and modders. If it isn't possible to rollback the thermal overhaul, improvements need to be made in my opinion, otherwise a perfectly good feature was destroyed at the end of Arma 3's support making legacy features unusable.

Currently, the system we have only looks "realistic" for a scenario that takes place mid day in a dessert with no cloud cover. The previous system could pass as semi-realistic for most scenarios, but this one is essentially broken for most scenarios. This isn't just a matter of opinion.

Or at least, my own opinion. The "realism" of the update is debated, but a significant portion of players that support the update only seem to care from a balance perspective. If balance is an issue, that can be handled by mission makers and server owners. If the TI attribute command worked as described, this could be fine-tuned further.

Debate over realism and whether the feature is actually working.

Additionally, some solid suggestions and feedback appear in this thread

The following screenshots are from Altis, full overcast, December, with a new moon:

With adjusted parameters:

And, on CUP's Chernarus 2020 with the same mission parameters:

Event Timeline