画面のフェードイン・フェードアウト

Modを作ろう

2つの方法があるようです。 目次 Game.FadeOutGameImageSpaceModifier Game.FadeOutGame FadeOutGameを使います。 画面を徐々に暗くさせるには、以下のようにします […]

2つの方法があるようです。

Game.FadeOutGame

FadeOutGameを使います。

画面を徐々に暗くさせるには、以下のようにします。

323 (papyrus)

Game.FadeOutGame(true, true, 0.0, 1.0)

1秒かけて徐々に暗くなります。いわゆるフェードアウトです。この関数は処理を待たないので、即座に次の行の処理が始まります。

画面を徐々に明るくさせるには、以下のようにします。

326 (papyrus)

Game.FadeOutGame(false, true, 0.0, 1.0)

真っ暗な状態から1秒かけて徐々に明るくなります。いわゆるフェードインです。

ポイントが3つあります。まず、この関数は画面処理を上書きできます。エリア移動でロード画面を挟むと、画面処理が上書きされます。つぎに、第4引数に0を指定すると挙動がおかしくなります。そして、画面処理が終わると即座に通常の明るい状態に戻ります。

フェードアウトさせてからしばらく真っ暗にさせておきたい場合は、以下のように重ね掛けすればできます。

328 (papyrus)

Game.FadeOutGame(true, true, 0.0, 1.1) ; 1.1秒かけて暗くする
Utility.Wait(1.0) ; ほぼ暗くなるまで待つ
Game.FadeOutGame(false, true, 30.0, 0.1) ; 真っ暗な状態で30秒後に一気に明るくする

; ここで画面が暗いうちにしたいことをする

; ここでエリア移動のロードが発生すると、30秒を待たずともロード完了後は強制的に明るくなる

; ロードが発生しないのなら、30秒経つ前に以下のコードで即座にフェードインできる
;Game.FadeOutGame(false, true, 0.0, 1.0)

; 何もしないのなら、30秒が経過したら明るくなる

FadeOutGameとFadeOutGameの間に隙間の時間ができると、画面が一瞬表示されてしまうので、0.1秒だけ重ねるのがポイントです。

ImageSpaceModifier

FadeToBlackHoldImodなどのImageSpaceModifierを使う方法です。

ApplyまたはApplyCrossFadeで適用し、Removeで解除です。

この方法はENB環境では動作しないようです。

ENBでも動作するようにするにはenbeffect.fxに手をいれます。

どこでもいいので、できるだけ上の方に以下のコードを追加します。

enbeffect.fx その1 (papyrus)

float Empty_Row0 <
  string UIName="-------------------FADE"; string UIWidget="spinner"; float UIMin=0.0; float UIMax=0.0;
> = {0.0};

bool EnableFade
<
string UIName="Enable Fade Transition";
> = {true};

PS_Drawという関数を探して、その中に以下のコードを追加します。

enbeffect.fx その2 (papyrus)

// PS_Drawという関数を探して
float4 PS_Draw(VS_OUTPUT_POST IN, float4 v0 : SV_Position0) : SV_Target

// (中略)

// この行を探して
    float grayadaptation=TextureAdaptation.Sample(Sampler0, IN.txcoord0.xy).x;

// ここから追記
if (EnableFade)
{
    float3 fade = Params01[5].xyz;
    float fade_weight = Params01[5].w;

    color.rgb = lerp(color.rgb, fade, fade_weight); // fade current scene to specified color
}
// ここまで追記

ゲームの中でENBのコントロールパネルを開くと、ENBEFFECT.FXのところにEnable Fade Transitionという項目が増えています。これにチェックを入れるとImageSpaceModifierによるブラックアウトが効くようになります。

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