NIFDiff——Bethesda游戏NIF模型并排对比工具
NIF差异 向……敞开心扉
一次加载8个NIF网格 并同步它们的摄像机、灯光和文件选择——这样你就能看到
正是如此 网格的两个版本之间有何差异。视差/PBR模组对比原版、两个模组争夺同一资源,或是你自己编辑前后的对比。
这是一个独立的、无需Qt的独立工具:一个单一的
2.3 MB 可执行文件,约半秒即可冷启动。无需安装程序,无需运行时框架,无后台服务。双击.nif文件,即可开始对比。
🆕 v1.4.176 — FaceGen 修复- 修复了看不见的FaceGen头发 — 部分模组在头发网格中烘焙了错误的纹理Alpha值,导致头发显示为完全秃顶;现在默认会正确显示(可切换查看原始文件值)
- 修复了同步文件后其他窗格中残留的过时缩略图高亮问题。
- 大型模组文件夹中启动和缩略图加载更快、响应更迅速
🆕 v1.3.171 — 支持 FaceGen- FaceGen面部几何体 (heads/eyes/mouth/hair) 现已支持 — 此前不支持,现在可正确比较与渲染
🆕 v1.2.168 — 节点与骨骼差异- 节点 / 骨骼变换差异 (`L`) — 跨面板比较完整的NiNode层级结构:平移/旋转/缩放变化、新增/移除/重新指定父级的节点,以及模糊匹配检测,支持CSV/JSON导出
- 碰撞材质比较 — Havok `bhkCompressedMeshShape` 块材质已在材质对比面板中进行比较并凸显显示
- 差异表列现在可通过拖拽调整大小,并为狭窄的状态/类型列提供简洁标签
- 图像平移不再受限于图像边界——无论缩放或旋转如何,均可自由平移
🆕 v1.1.163 — 纹理加入对比- 每个面板现在都可以显示纹理,而不只是一个 NIF——同一个面板、同一条缩略图栏,在你浏览 `.dds`/`.png`/`.tga`/`.bmp` 时切换显示内容
- 平滑指针缩放、限制平移、旋转、适应屏幕、R/G/B/A通道隔离、棋盘格透明以及DDS的mip层级浏览
- 多游戏数据 — 一次性注册《天际》传奇版、《天际》特别版和《辐射4》的Data文件夹;纹理查找范围限定于每个NIF对应的游戏,因此同名资源不会跨游戏解析。
- 直接浏览档案库 — 缩略图栏现在可以像浏览文件夹一样进入 BSA/BA2/ZIP/7z/RAR 文件;在纹理检查器中双击一行,即可在完整图像面板中打开该材质的纹理
- 纹理文件的缩略图条卡片现在会显示真实的解码预览,而非占位图标;窗口标题也会跟随当前激活的文件变化。
🆕 v1.0.116 — 首次发布以下内容均为新增内容。重点摘要,若您只阅读一份列表:
- 最多8个窗格,摄像头和光照已同步——围绕Vortex“打开所有冲突文件”流程构建。
- 材质差异面板 — 一张真正逐项对照的表格,而不是两个窗口加你的记忆
- 视差 / 复杂材质 / 真物理渲染 渲染中,每个开关均可切换,以便您查看网格采用的路径
- 动画播放 用于动画静态内容,跨面板锁相
- 用户可编辑着色器 支持1秒热重载
⚡ 为什么会有 NIFDiffNifSkope是每个人用来检视NIF文件的工具——但当你真正需要解答时
这个模组改了什么?,你的结局是:
- 打开两个NifSkope窗口,来回对照着看
- 手动匹配的镜头角度总是无法完美对齐
- 遍历方块树以比较两个纹理槽位
- 总是分不清纹理是来自松散文件还是BSA
NIFDiff 专为对比功能而设计。 加载两个网格,环绕一次——二者同步运动——选中一个子网格,差异表便会显示哪些数值实际存在不同。
🔍 并排对比(1–8 格视图)- 1–8个等宽网格窗格(每行1–4个,两行5–8个),可在运行时添加或移除
- 同步视图 — 一次轨道/平移/缩放操作将同时移动所有模型
- 同步光照 — 一道光线变幻触及每块窗格
- 已同步文件 — 在任意一个窗格中切换到下一个网格,所有窗格都会切换到各自文件夹中的同名文件。
- 每次同步均独立切换,因此您可以冻结其他同步以进行单独的对比前后效果
- 同步 / 专属徽章 一眼就能看出异类——缺少网格的模组会立刻显现出来
🧩 专为 Vortex 模组管理器用户打造这正是NIFDiff在你的工具箱中占有一席之地的原因。
Vortex的冲突编辑器可以打开冲突文件的每个模组版本。NIFDiff通过单实例转发捕捉所有版本,并自动将它们排列整齐:
- 打开所有8个覆盖同一网格的模组→ 一个窗口,8个面板,全部同步
- 无需手动设置,无需拖拽文件
- 立即查看你实际获取的是哪个模组的版本——以及它让你付出了什么代价
打开一个.nif文件,其
名称 与已打开的匹配文件始终会在同一窗口的新窗格中打开。不相关的文件则会启动自己的窗口。
📋 材质差异面板 — 真正的“差异”选择一个子网格并按下
I:
- 其BSLightingShaderProperty数据表——着色器类型与标志、每个纹理槽位、高光/自发光/透明度/UV值、透明与深度状态
- 并肩同行 每个其他窗格中的同名网格,差异值已高亮显示
- 宽松标记 vs BSA标记 — 当两个面板将相同纹理路径解析到不同源时,它会亮起
- 悬停纹理单元格以查看其完整路径和解析后的源;右键单击可复制
🔬 纹理检查器按下
T 列出所选网格的绑定纹理及其分辨率、像素格式、mip数量和解析源——然后在二维视图中预览任意纹理槽,支持R/G/B/A通道分离。无需离开查看器即可读取RMAOS/复杂材质通道内容。双击一行即可在完整图像面板中打开该纹理——支持完整缩放/平移/mip/通道工具,无需重新解码。
🖼️ 纹理是顶级窗格将 `.dds`/`.png`/`.tga`/`.bmp` 文件拖放到某个面板上(或在缩略图条中点击一个),该面板即变为完整的2D图像视图——无需单独的窗口,也不会新建面板,而缩略图条仍会停留在您上次浏览的位置继续滚动。该缩略图条还能直接深入 BSA/BA2/ZIP/7z/RAR 存档——即便纹理深藏在压缩包内,打开方式也如同松散文件一样顺畅。
- 流畅的指针缩放,无限制平移(不限制在图像范围内),90°/180°旋转,适应屏幕及重置
- 可切换的平滑/最近邻采样,以及实时信息栏(尺寸、格式、缩放、旋转)—— I 打开完整详情,包括mip级别和源压缩信息。
- 直接浏览DDS的mip链(Ctrl+[ / Ctrl+],或通过右键菜单)查看纹理在较小尺寸下的表现
- 透明度后的棋盘格背景、R/G/B/A通道分离,以及针对自动透明度与数据判定策略出错时的罕见纹理提供逐窗格Alpha通道覆写。
- 压缩DDS(BC1-BC7)以原生块格式直接上传至GPU——4K纹理实现即时打开
- 启用同步视图后,缩放/平移/通道切换会在各面板间同步联动,就像3D摄像机那样——将漫反射贴图与其法线贴图对齐排列,或比较两个模组对同一纹理的处理版本。
✨ 现代材质支持(不止原版)- 《香草》点亮路径: 高光、自发光/放射光、带每种材质立方体贴图的环境映射、柔和光/边缘光/背光、模型空间法线、多层视差、皮肤/头发着色、面部着色遮罩、特效着色器、Alpha混合/测试、贴花、双面材质
- 视差 (_p.dds):视差遮挡映射,带高度场自阴影
- 复合材料 (ENB / Community Shaders _m.dds):R/G/B/A 分别读取为反射 / 光泽度 / 金属度 / 高度,由生态系统的标准规则检测——通过CPU端探测排斥平坦透明通道和二进制遮罩,使虚假的“高度”字段不会产生无用的视差贴图。
- True PBR (Community Shaders / PBRNifPatcher):SLSF2_Unused01标记、RMAOS通道约定、GGX/Cook-Torrance着色、位移POM,以及来自程序化IBL立方体贴图的环境镜面反射,使金属材质获得有方向性的彩色反射
- 切换每条路径的开关状态 (视差/复合材质/真PBR)对比有无此效果的网格体——快速找出某个面板为何看起来不同的最快方法
可信的预览,而非ENB/CS的精确复现——但已足够接近,足以发现网格模型的实际问题。🎬 动画播放游戏世界中的动态元素——水车、风车、陷阱、动画门——直接在你的查看器中播放:
- 播放/暂停、序列下拉菜单(“空闲”、“打开”等)、可拖动的“时间”滑块、循环以及速度(0.25–2倍)
- 同步动画 让所有面板保持同步——两个模组对同一动画网格的版本并排运行 阶段中
- 待机时若无播放,CPU占用保持为零。
仅支持NIF内嵌的刚性动画——角色的骨骼动画位于外部Havok .hkx文件中(NifSkope同样无法播放这些动画)。🧭 不再与你较劲的导航- 左键拖拽旋转,中键/右键拖拽平移,滚轮朝光标方向缩放 — 外加DCC标准 替代和弦 (Alt+左键/中键/右键) 便于Maya/Blender肌肉记忆
- 屏幕XYZ坐标轴指示器 在每个面板中——点击轴向控制点,即可动画捕捉到该视图
- Blender风格的小键盘视图(1/3/7=前/右/顶,Ctrl为对面视图,5=切换正交视图)
- 正交模式 — 调整视角,让两个剪影1:1对齐
- 围绕你的选择旋转 ——被选中的子网格保持不动,其余部分围绕其旋转
- 特写镜头确实有效 — 靠近时平移和缩放不会冻结,且缩放可以进行推拉 通过 枢轴点进入模型内部
- 移动 / 缩放 / 旋转灵敏度滑块和视场角滑块,所有窗格共用同一组设置。
📁 按窗格浏览文件夹每个窗格底部都有自己的缩略图条,显示文件夹内容。
那个 窗格打开各自文件——因此,当比较来自不同模组文件夹的文件时,每个窗格会浏览各自的文件。
- 将“Sibling .nif files render as real”翻译成中文,在游戏本地化语境中,“.nif”是NetImmerse/Gamebryo格式的文件扩展名,常用于角色模型。“Sibling”指同级文件。结合渲染场景,可以译为:
同级.nif文件以真实形式渲染 3D缩略图从每个模型自身宽高比的四分之三角度进行取景。
- 子文件夹和“..”图标用于浏览;支持键盘导航,并可键入快速选择
- 在后台线程池中生成 — 大文件夹也绝不会卡顿或阻塞界面
- 可调整大小(拖动条带边缘),含小/中/大预设;一键关闭所有条带
🗂️ 修正贝塞斯达资源处理方式- 加载Skyrim LE / Skyrim SE / Fallout 4的NIF文件
- 纹理解析中 引擎指令: 覆盖文件夹 → NIF自身所在目录 → 游戏数据 → BSA/BA2档案
- 多游戏游戏数据 — 同时注册 Skyrim LE、Skyrim SE 和 Fallout 4 的文件夹(侦测 查找所有已安装的游戏; 设为激活 将文件夹分配给活动NIF所属的游戏)。查找范围按游戏划分,因此两个游戏的资产若共享路径,则无法交叉解析。
- 松散纹理模组的覆盖文件夹列表,应优先于游戏数据
- 已命名但未解析的漫反射渲染 品红 与其默默无闻地融入纯白之中——缺失内容反而无处遁形
- 纹理在进程范围内进行池化:每个解析后的唯一资源仅解码并上传一次,在所有窗格间共享。
🎨 用户可编辑着色器(高级)HLSL 源码位于可执行文件旁的 shaders 文件夹中。编辑并保存其中一个——应用
在一秒内热重载,无需重启。编译错误会保留之前的着色器并显示提示;损坏的编辑绝不会让查看器空白。
你也可以
将渲染器路由到你自己的着色器 每种材质类型通过shaders.ini配置:
[程序]
MyToon=custom\MyToon.hlsl
[绑定.网格]
Rule1=pbr -> MyToon
Rule2=* -> Lit
选择器:pbr / complexmat / parallax / envmap / effect / decal / node:<子字符串> / tex:<子字符串> / *。清单和每个着色器源文件都支持热重载,因此单条规则即可仅重新样式化对比中的True PBR网格(包括缩略图),而其他内容保持默认着色。删除文件即可恢复默认行为(默认情况下——未修改的安装零启动开销)。
⌨️ 快捷键(日常使用)- 左键拖拽 / 中键-右键拖拽 / 滚轮: 环绕 / 平移 / 缩放至光标
- 按住Alt键+鼠标左/中/右键拖拽: 轨道 / 平移 / 推拉(DCC和弦)
- 小键盘1/3/7: 前置 / 右侧 / 顶部(按Ctrl+切换至对面)— 小键盘5: 正交切换
- 小键盘. / 小键盘0: 帧选择 / 整个场景
- F / R: 重置所有视图 / 活动面板的视图 — C: 聚焦选定的子网格
- I / T: 材质差异面板 / 纹理检查器
- G X W H N Shift+N M: 网格 / 坐标轴 / 线框 / 隐藏 / 法线 / 切线 / MSAA
- 1–8 / Tab: 选择活动窗格
- Ctrl+O / Ctrl+Shift+O: 打开到活动窗格/新窗格
- 左/右,主页/结尾: 轻扫缩略图条—— 回车 / 退格: 进入文件夹 / 返回上级
- Ctrl+E / F12: 在资源管理器中显示 / 保存截图
- 图像面板 — 滚轮 / 拖拽 / F: 缩放 / 平移 / 适应屏幕 — [ ] \ Ctrl+[ Ctrl+] 旋转 / Mip 层级
小键盘视图键需要开启NumLock。🧭 快速开始- 注册您的 游戏数据 文件夹一次(资源组 → 检测 找到所有已安装的Skyrim/Fallout游戏(因此BSA/BA2纹理可以解析)
- 将.nif文件拖放到窗格上 — 左侧约75% 替换 它,右侧约25% 插入一个新的窗格
- 一次性拖入多个同名.nif文件,即可在等大的面板中排列显示。
- 注册.nif文件关联,以便直接从资源管理器或Vortex中打开网格文件
⚙️ 轻快之选- 2.3 MB 单个可执行文件,无需安装程序
- 大约半秒内冷启动——BSA扫描在后台并行运行
- 模型加载是端到端异步的:窗格立即出现,模型流式载入,纹理随解码而浮现
- 无Qt,无Electron,无运行时框架,无后台服务
- 完整会话持久化:打开的文件、面板布局、窗口位置、游戏数据路径、最近使用的文件
🎯 适用人群- 任何解决mod之间网格冲突的人(尤其是Vortex用户)
- 网格作者检查自己的前后对比
- 任何使用Parallax / Complex Material / True PBR设置并需要了解网格体实际路径的人
- 厌倦了来回切换两个NifSkope窗口还得眯着眼看的人
📋 需求- Windows 10/11,64位
- 支持Direct3D 11的GPU(近十年内的任何产品)
- 用于存档备份纹理的Skyrim/Fallout数据文件夹(可选——无此文件夹时,松散文件也能正常使用)
对比工具NifSkope从未做到:8个网格、一个摄像机,外加一张差异表,告诉您到底改了什么。🔗 源代码Github — MIT 许可,免费且开源。
NIFDiff由作者独立开发构建。
图片2 应用程序框架,其NIF解析和3D逻辑均移植自
NifSkope (BSD)。完整署名信息请参阅仓库中的THIRD_PARTY_NOTICES.md文件。