粒子风效 - SKSE插件(2026-04-10更新)
本帖最后由 鼓掌之间 于 2026-5-16 17:33 编辑转自:https://www.nexusmods.com/skyrimspecialedition/mods/174812
本插件通过SKSE在游戏引擎层面运行,可完美兼容原版游戏、DLC及各类MOD新增的粒子效果,无需替换模型,也不会产生任何冲突。
MOD说明
粒子风效可让游戏内所有粒子效果动态响应风速与风向的变化,大幅提升画面真实感与沉浸感。
所有效果均通过SKSE在游戏运行时生效,可完美兼容原版游戏、DLC及各类MOD的粒子效果。
本MOD不会替换任何模型文件,不会修改任何游戏记录,直接在引擎层面对粒子效果进行控制。这意味着粒子会随天气状况的变化自然响应,无需额外补丁,也不会产生冲突。
本MOD的工作原理,是在游戏运行时将引擎内置的风效修改器注入粒子系统中。这套系统其实一直存在于游戏引擎内,只是原版游戏默认没有启用它。
本MOD与《Wildfire》的适配效果极佳——这是一款开发中的MOD,目前已在QTR Discord服务器开放免费公测。
本MOD的创作灵感最初就来自《Wildfire》,也正因为这项功能的普适性极强,我将其制作成了独立插件发布。
---
️技术细节
- 以SKSE插件的形式实现
- 影响所有粒子系统(包括原版、DLC、创作俱乐部、MOD新增的粒子效果)
- 在游戏运行时,将原生风效修改器注入粒子系统
- 风效的影响(风向+强度)完全由原版游戏原生机制处理
- 无Papyrus脚本、无模型修改、无ESP/ESL格式的MOD文件
- 无需任何设置,自动对所有粒子效果生效
---
兼容性
本MOD为SKSE插件,兼容以下游戏版本:
- 1.6.1170:完全支持
- 1.6.640:大概率支持,恳请玩家测试后反馈确认
- 1.5.97:完全支持,感谢firefg的测试确认
- VR版:完全支持,感谢davidou64的测试确认
同时兼容:
- 所有天气大修MOD
- 所有粒子/视觉特效(VFX)MOD
- 所有模型替换MOD
- 所有ENB/光影预设
只要带有粒子效果,本MOD就能生效。
由于效果在游戏运行时加载,不会与新增、修改粒子效果的MOD产生任何冲突。
---
同类MOD对比
部分MOD通过手动编辑模型文件,为特定粒子效果添加风效修改器来实现类似效果,例如:
- Rudy Fix for Smoke(Rudy烟雾修复)
- FYX - Sparks of Fire reacts to the Wind(FYX - 火花风效响应)
这类MOD会修改.nif模型文件,仅对单个资产逐个应用风效。
与基于模型编辑的解决方案不同,本MOD的方案是完全动态的,会在运行时全局生效。
如果某个粒子系统已经自带风效修改器,本MOD会完整保留原有设置,不会进行覆盖。
---
前置需求
- SKSE:https://bbs.3dmgame.com/thread-6550387-1-1.html
- SKSE插件地址库:https://bbs.3dmgame.com/thread-6549645-1-1.html
源代码
核心代码如下:
SKSEPluginLoad(const SKSE::LoadInterface *skse) {
SKSE::Init(skse);
Hooks::InstallHooks();
return true;
}
static bool HasWindModifier(RE::NiParticleSystem* ps) {
if (!ps) return false;
auto& list = ps->GetParticleSystemRuntimeData().modifierList;
for (const auto& mod : list) {
if (skyrim_cast<RE::BSWindModifier*>(mod.get())) {
return true;
}
}
return false;
}
struct LinkObjectHook {
static void Hook(RE::NiParticleSystem* a_this, RE::NiStream& a_stream) {
original(a_this, a_stream);
if (!HasWindModifier(a_this)) {
auto wind = RE::BSWindModifier::Create("ParticleWind", 5.0f);
if (!wind) return;
a_this->AddModifier(wind);
}
}
static inline REL::Relocation<decltype(Hook)> original;
};
inline void InstallHooks() {
REL::Relocation<std::uintptr_t> vtbl{RE::VTABLE_NiParticleSystem};
LinkObjectHook::original = vtbl.write_vfunc(0x19, LinkObjectHook::Hook);
}
---
下载地址:
**** Hidden Message *****
看到楼主这么努力分享,我只能顶个贴感谢一下了!感谢论坛,感谢LZ热心分享!
666666666666666 66666666666
谢谢你的分享~~~ 谢谢!!
6666666666666
感谢分享 1212121212121212121212
+666666666666666666
2026-03-23更新
2026-03-29更新
2026-03-30更新
{:3_121:}
感谢分享,Thanks
666666666
2026-04-10更新
1111111111
6666666666666666
感谢楼主分享!
1111111111111111
页:
[1]