setFog: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "</dl> <dl class="command_description"> " to "")
(Undo revision 347437 by POLPOX (talk))
Tag: Undo
 
(24 intermediate revisions by 3 users not shown)
Line 30: Line 30:
|descr= Smoothly change the fog over given time (in seconds). See also [[fogParams]].
|descr= Smoothly change the fog over given time (in seconds). See also [[fogParams]].
{{Feature|arma3|This command is MP synchronised, if executed on server, the changes will propagate globally. If executed on client effect is temporary as it will soon change to the server setting.}}
{{Feature|arma3|This command is MP synchronised, if executed on server, the changes will propagate globally. If executed on client effect is temporary as it will soon change to the server setting.}}
|mp= Before {{arma3}}, server and clients could have each a different (local) fog value.


|s1= time [[setFog]] fog
|s1= time [[setFog]] fog
Line 35: Line 37:
|p1= time: [[Number]] - transition time to the new value
|p1= time: [[Number]] - transition time to the new value


|p2= fog: [[Number]] - fog density. Range 0..1
|p2= fog: [[Number]] - fog density in range 0..1


|r1= [[Nothing]]
|r1= [[Nothing]]


|s2= time [[setFog]] [fogValue, fogDecay, fogBase] {{Since|arma3||y}}
|s2= time [[setFog]] [fogValue, fogDecay, fogBase]
 
|s2since= arma3 0.50


|p21= time: [[Number]] - transition time to the new value
|p21= time: [[Number]] - transition time to the new value


|p22= fogValue: [[Number]] - normal [[fog]] value that represents fog density at ''fogBase'' level. Range 0..1
|p22= fogValue: [[Number]] - normal [[fog]] value that represents fog density at ''fogBase'' level, in range 0..1


|p23= fogDecay: [[Number]] - decay of fog density with altitude. Range -1..1
|p23= fogDecay: [[Number]] - decay of fog density with altitude, in range -1..1; a negative value means a "ceiling" fog


|p24= fogBase: [[Number]] - base altitude ([[Position#PositionASL|ASL]]) of fog (in meters). Range -5000..5000
|p24= fogBase: [[Number]] - base altitude ([[Position#PositionASL|ASL]]) of fog (in meters), in range -5000..5000


|r2= [[Nothing]]
|r2= [[Nothing]]


|x1= <code>15 [[setFog]] 0.5;</code>
|x1= <sqf>15 setFog 0.5;</sqf>


|x2= Force no fog: <code>0 [[setFog]] 0;
|x2= Force no fog:
{{cc|[[forceWeatherChange]]; // change is immediate}}
<sqf>
999999 [[setFog]] 0;</code>
0 setFog 0;
// forceWeatherChange; // change is immediate
999999 setFog 0;
</sqf>


|x3= <code>0 [[setFog]] [1, 0.01, 0];</code>
|x3= <sqf>
// Arma 3 examples:
0 setFog [1, 0.01, 0];
0 setFog [1, -1, 70]; // mountain fog, starts from 70m ASL and thickens the higher you climb
0 setFog [1, 1, 60]; // valley fog, starts from 60m ASL and thickens the lower you descend
0 setFog [1, 1, 0]; // fooooog on the waaaater
</sqf>


|x4= Mountain fog, starts from 70m ASL and thickens more the higher you climb: <code>0 [[setFog]] [1, -1, 70];</code>
|seealso= [[Arma 3: Improved Fog]] [[fog]] [[fogParams]] [[fogForecast]] [[nextWeatherChange]] [[forceWeatherChange]] [[setRain]]
}}


|x5= Valley fog, starts from 60m ASL and thickens more the lower you descend: <code>0 [[setFog]] [1, 1, 60];</code>
{{Note
|user= Ceeeb
|timestamp= 20070420042500
|text= Only one script command induced weather change (either [[setOvercast]] or setFog) can be happening at a time.
Starting a new weather change will immediately halt the current weather change.
[[setRain]] changes are independent and can occur simultaneously to a weather change.
}}


|x6= Fooooog on the waaaater: <code>0 [[setFog]] [1, 1, 0];</code>
{{Note
|user= Zapat
|timestamp= 20151215143200
|text= [[setTimeMultiplier]] DOES affect transition time.
}}


|mp= Pre-Arma 3, each client and the server could have different fog values
{{Note
|user= Killzone_Kid
|timestamp= 20190110102300
|text= A little information about how Alt Syntax works.
The ''fogValue'' is normal [[fog]] value that could be set independently with original [[setFog]] command.
''fogBase'' is the ASL altitude at which the fog will start. 0 is the sea level. ''fogDecay'' is how defined the fog start is. The more defined, the denser is the fog.
1 (or -1) are the max values. If it is positive the fog will be generated below ''fogBase'' line, if negative, above it.
If ''fogDecay'' is small, the fog will transition more smoothly from no fog to full fog, and because of that it will cross ''fogBase'' line by quite a lot, depending on how small is ''fogDecay'' value.
Current values of ''fogDecay'' and ''fogBase'' can be retrieved with [[fogParams]].
}}


|seealso= [[Arma 3: Improved Fog]], [[fog]], [[fogParams]], [[fogForecast]], [[nextWeatherChange]], [[forceWeatherChange]], [[setRain]]
{{Note
|user= samatra
|timestamp= 20220705052931
|text= Few notes about network behavior of the fog:
* Fog is the only weather parameter that is ''almost'' properly network-synchronized by the engine. You can rely on it for both connected players and JIP players without jumping through hoops like other weather commands.
* ''time'' is not synchronized over the network exactly, fog values changes will be linear over time where you run the command, while network-synced ''time'' will be non-linear, but in the end fog is still will be somewhat close between clients and servers, so its not much of a game breaker.
* Say fog all 0 on both server and client, instantly setting fog on the server with <sqf inline>0 setFog 1</sqf> or even <sqf inline>0 setFog [1,1,1]</sqf> will not set it instantly on clients, but rather interpolate it there over few seconds (~10-15), non-linearly (slower the closer it gets to server values)
* Setting ''fogValue'' to values above 1 is allowed where you run the command, but network sync will still clamp it to 1, so if you do <sqf inline>0 setFog 100</sqf>, clients will still interpolate ''fogValue'' to 1, including JIP, so make sure you don't set it above 1 if you expect consistent values between server and client for some calculations.
}}
}}


<dl class="command_description">
{{Note
 
|user= samatra
<dt><dt>
|timestamp= 20220801094329
<dd class="notedate">
|text= Be aware that this command is affected by [[setWindStr]] and [[windStr]]! Max fogValue = 1 - windStr, so if you do <sqf inline>0 setWindStr 1</sqf>, setting any fog with time>0 will actually set fog to 0! Doing instant fog changes with time=0 strangely still works though.
<dt class="note">[[User:Ceeeb|Ceeeb]]</dt>
}}
<dd class="note">Only one script command induced weather change (either [[setOvercast]] or setFog) can be happening at a time.
Starting a new weather change will immediately halt the current weather change.
[[setRain|SetRain]] changes are independent and can occur simultaneously to a weather change.
<dt><dt>
<dd class="notedate">Posted on December 15, 2015 - 14:32 (UTC)</dd>
<dt class="note">[[User:Zapat|Zapat]]</dt>
<dd class="note">[[setTimeMultiplier]] DOES affect transition time.</dd>
 
 
<dt></dt>
<dd class="notedate">Posted on January 10, 2019 - 10:23 (UTC)</dd>
<dt class="note">[[User:killzone_kid|killzone_kid]]</dt>
<dd class="note">
A little information about how Alt Syntax works. The ''fogValue'' is normal [[fog]] value that could be set independently with original [[setFog]] command. ''fogBase'' is the ASL altitude at which the fog will start. 0 is the sea level. ''fogDecay'' is how defined the fog start is. The more defined, the denser is the fog. 1 (or -1) are the max values. If it is positive the fog will be generated below ''fogBase'' line, if negative, above it. If ''fogDecay'' is small, the fog will transition more smoothly from no fog to full fog, and because of that it will cross ''fogBase'' line by quite a lot, depending on how small is ''fogDecay'' value. Current values of ''fogDecay'' and ''fogBase'' can be retrieved with [[fogParams]]
</dd>
 
</dl>

Latest revision as of 12:37, 19 September 2023

Hover & click on the images for description

Description

Description:
Smoothly change the fog over given time (in seconds). See also fogParams.
Arma 3
This command is MP synchronised, if executed on server, the changes will propagate globally. If executed on client effect is temporary as it will soon change to the server setting.
Multiplayer:
Before Arma 3, server and clients could have each a different (local) fog value.
Groups:
Environment

Syntax

Syntax:
time setFog fog
Parameters:
time: Number - transition time to the new value
fog: Number - fog density in range 0..1
Return Value:
Nothing

Alternative Syntax

Syntax:
time setFog [fogValue, fogDecay, fogBase]
Parameters:
time: Number - transition time to the new value
fogValue: Number - normal fog value that represents fog density at fogBase level, in range 0..1
fogDecay: Number - decay of fog density with altitude, in range -1..1; a negative value means a "ceiling" fog
fogBase: Number - base altitude (ASL) of fog (in meters), in range -5000..5000
Return Value:
Nothing

Examples

Example 1:
15 setFog 0.5;
Example 2:
Force no fog:
0 setFog 0; // forceWeatherChange; // change is immediate 999999 setFog 0;
Example 3:
// Arma 3 examples: 0 setFog [1, 0.01, 0]; 0 setFog [1, -1, 70]; // mountain fog, starts from 70m ASL and thickens the higher you climb 0 setFog [1, 1, 60]; // valley fog, starts from 60m ASL and thickens the lower you descend 0 setFog [1, 1, 0]; // fooooog on the waaaater

Additional Information

See also:
Arma 3: Improved Fog fog fogParams fogForecast nextWeatherChange forceWeatherChange setRain

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note
Ceeeb - c
Posted on Apr 20, 2007 - 04:25 (UTC)
Only one script command induced weather change (either setOvercast or setFog) can be happening at a time. Starting a new weather change will immediately halt the current weather change. setRain changes are independent and can occur simultaneously to a weather change.
Zapat - c
Posted on Dec 15, 2015 - 14:32 (UTC)
setTimeMultiplier DOES affect transition time.
Killzone_Kid - c
Posted on Jan 10, 2019 - 10:23 (UTC)
A little information about how Alt Syntax works. The fogValue is normal fog value that could be set independently with original setFog command. fogBase is the ASL altitude at which the fog will start. 0 is the sea level. fogDecay is how defined the fog start is. The more defined, the denser is the fog. 1 (or -1) are the max values. If it is positive the fog will be generated below fogBase line, if negative, above it. If fogDecay is small, the fog will transition more smoothly from no fog to full fog, and because of that it will cross fogBase line by quite a lot, depending on how small is fogDecay value. Current values of fogDecay and fogBase can be retrieved with fogParams.
samatra - c
Posted on Jul 05, 2022 - 05:29 (UTC)
Few notes about network behavior of the fog:
  • Fog is the only weather parameter that is almost properly network-synchronized by the engine. You can rely on it for both connected players and JIP players without jumping through hoops like other weather commands.
  • time is not synchronized over the network exactly, fog values changes will be linear over time where you run the command, while network-synced time will be non-linear, but in the end fog is still will be somewhat close between clients and servers, so its not much of a game breaker.
  • Say fog all 0 on both server and client, instantly setting fog on the server with 0 setFog 1 or even 0 setFog [1,1,1] will not set it instantly on clients, but rather interpolate it there over few seconds (~10-15), non-linearly (slower the closer it gets to server values)
  • Setting fogValue to values above 1 is allowed where you run the command, but network sync will still clamp it to 1, so if you do 0 setFog 100, clients will still interpolate fogValue to 1, including JIP, so make sure you don't set it above 1 if you expect consistent values between server and client for some calculations.
samatra - c
Posted on Aug 01, 2022 - 09:43 (UTC)
Be aware that this command is affected by setWindStr and windStr! Max fogValue = 1 - windStr, so if you do 0 setWindStr 1, setting any fog with time>0 will actually set fog to 0! Doing instant fog changes with time=0 strangely still works though.