光を調整する

環境構築

最近こればかりやっているので、忘れないうちにメモを残しておきます。

光源の調整

光の出どころに関する調整です。

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.

タイトルとURLをコピーしました