最近こればかりやっているので、忘れないうちにメモを残しておきます。
光源の調整
光の出どころに関する調整です。
Enhanced Lights and FX
光源の位置を調整します。
ENB Lights Overhaul
光源がHDRで処理されるようになります。
一部はELFXと競合します。
ENBが必要です。ENBのBloomで調整します。
太陽光の調整
Weather
天候のSunlightが太陽光になります。
God Ray
太陽光のための特別なエフェクトです。
fallout4prefs.iniで以下のように設定します。
[Display] iVolumetricLightingQuality=3 bVolumetricLightingEnable=1
負荷を下げる調整方法はネットで検索すると出てきます。
私はfallout4.iniに以下のように書いています。
[General] sStartingConsoleCommand=gr quality 3;gr grid 2;gr maxcascade 1;
時間帯の調整
Darker Nights
夜を暗くします。
天候を調整して実現しているようです。ですので天候Modと競合します。True Stormsにはパッチが存在します。
日の出、日没の時間
Game SettingsとENBにあります。
Game SettingsはTrue StormsにTrueStormsFO4-EarlierSunsets.espというプラグインがあるので、これをたたき台に調整してもいいでしょう。
太陽光にエフェクトをかけて調整する
Reshadeで画面全体にBloomでエフェクトをかける場合、太陽光が明るくなりすぎる傾向があります。
機械的に弱めるFO4Edit用スクリプトを書いて調整しました。
15 Weather - Change sun light to dark.pas (pascal)
{
Change sun light to dark.
Load order:
1. Fallout4.esm
2. DarkerNights.esp
3. (Weather Mod)
4. (Your Patch)
}
unit UserScript;
function MakeLightToDark(base: string; p: IInterface; e: IInterface; mult: double): integer;
var
elem, old_val, old_val_r, new_val, new_val_r, s1, s2: string;
mult_g, mult_b: double;
begin
// Red
elem := base + '\Red';
old_val := GetElementEditValues(p, elem);
new_val := Round(old_val * mult);
if GetElementEditValues(e, elem) <> new_val then
SetElementEditValues(e, elem, new_val);
s1 := format('%3d ', [strtoint(old_val)]);
s2 := format('%3d ', [strtoint(new_val)]);
old_val_r := old_val;
new_val_r := new_val;
// Green
elem := base + '\Green';
old_val := GetElementEditValues(p, elem);
mult_g := old_val / old_val_r;
new_val := Round(new_val_r * mult_g);
if GetElementEditValues(e, elem) <> new_val then
SetElementEditValues(e, elem, new_val);
s1 := s1 + format('%3d ', [strtoint(old_val)]);
s2 := s2 + format('%3d ', [strtoint(new_val)]);
// Blue
elem := base + '\Blue';
old_val := GetElementEditValues(p, elem);
mult_b := old_val / old_val_r;
new_val := Round(new_val_r * mult_b);
if GetElementEditValues(e, elem) <> new_val then
SetElementEditValues(e, elem, new_val);
s1 := s1 + format('%3d ', [strtoint(old_val)]);
s2 := s2 + format('%3d ', [strtoint(new_val)]);
// Log
AddMessage(s1 + ' / ' + s2 + ' : ' + base);
end;
function Process(e: IInterface): integer;
var
m, p: IInterface;
begin
if Signature(e) <> 'WTHR' then Exit;
m := Master(e);
if not Assigned(m) then begin
AddMessage( IntToHex(FixedFormID(e), 8) + ' master not found' );
Exit;
end;
if OverrideCount(m) <> 3 then begin
AddMessage( IntToHex(FixedFormID(e), 8) + ' OverrideCount != 3' );
Exit;
end;
p := OverrideByIndex(m, OverrideCount(m) - 3);
if not Assigned(p) then begin
AddMessage( IntToHex(FixedFormID(e), 8) + ' parent not found' );
Exit;
end;
AddMessage('Sunlight');
MakeLightToDark('NAM0\Sunlight\Day', p, e, 0.7);
MakeLightToDark('NAM0\Sunlight\EarlySunset', p, e, 0.7);
MakeLightToDark('NAM0\Sunlight\LateSunrise', p, e, 0.7);
AddMessage('Sun Glare');
MakeLightToDark('NAM0\Sun Glare\Day', p, e, 0.4);
MakeLightToDark('NAM0\Sun Glare\EarlySunset', p, e, 0.4);
MakeLightToDark('NAM0\Sun Glare\LateSunrise', p, e, 0.4);
AddMessage('Effect Lighting');
MakeLightToDark('NAM0\Effect Lighting\Day', p, e, 0.3);
MakeLightToDark('NAM0\Effect Lighting\EarlySunset', p, e, 0.3);
MakeLightToDark('NAM0\Effect Lighting\LateSunrise', p, e, 0.3);
end;
end.