Skip to content

Releases: ez4cywa/ModelMergerGUI

Cast Model Merger GUI v2.5.2

Choose a tag to compare

@github-actions github-actions released this 26 Sep 01:09

Cast Model Merger GUI v2.5.2

仓库清理(无功能变化)

  • 移除迁移期遗留代码 146 个文件、约 2.3 万行:历史 WPF GUI/CLI(src/)、PhilLibX 与 SELibDotNet 兼容对照、C# 测试项目、迁移工具与已停用的协议 worker。全部功能由 Rust 原生实现,不受影响。
  • tests/fixtures/rust-migration 黄金语料保留,继续作为 Rust 合并与预览测试的对照基准。
  • 更新 README 与用户指南的工程结构章节;.gitignore 清理失效条目并忽略本地会话目录。
  • 本版本程序与 v2.5.1 功能一致,仅为仓库健康度清理。

Repository cleanup with no functional changes: 146 files / ~23k lines of migration-era code removed (legacy WPF GUI/CLI under src/, PhilLibX and SELibDotNet references, the C# test projects, the migration harness and the retired protocol worker). The tests/fixtures/rust-migration golden corpora stay as the baseline for the Rust merge and preview tests. README / user-guide structure sections were updated accordingly. The program is functionally identical to v2.5.1.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.5.1

Choose a tag to compare

@github-actions github-actions released this 25 Sep 07:02

Cast Model Merger GUI v2.5.1

同代号输出自动区分

  • 按武器代号推导的默认输出名(合并 <代号>.cast、弹匣装填 <代号>_filled.cast、手臂拼接 <代号>_viewhands.cast)现在会检查输出目录:已存在同代号文件时,把原始部件文件名中有区分度的段(代号之后、LOD 后缀之前,纯数字段跳过)前置于名称——先合并机匣 att_sat_vm_ar_eagle_rec_LOD0 得到 eagle.cast,再合并枪管 att_sat_vm_ar_eagle_barl_LOD0 会得到 barl_eagle.cast;弹匣装填依次得到 anov94_filled.cast → mag_anov94_filled.cast。
  • 前缀名仍冲突时追加数字计数(anov94_filled_1.cast);名称始终可手动修改;执行时若文件在此期间出现也会自动重推导,不再因命名冲突中断。
  • 源项目:文件名无部件类型段时回退完整文件名 + 数字计数。

Code-derived default output names (merge <code>.cast, magazine fill <code>_filled.cast, arm assembly <code>_viewhands.cast) now check the output directory: when a same-code file already exists, the distinguishing segments of the original part stem (between the code and the LOD suffix, skipping pure-numeric segments) are prepended — att_sat_vm_ar_eagle_rec_LOD0 then att_sat_vm_ar_eagle_barl_LOD0 produce eagle.cast and barl_eagle.cast; magazine fills chain anov94_filled.cast → mag_anov94_filled.cast. A numeric counter resolves remaining collisions, names stay editable, and execution re-derives automatically instead of failing.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.5.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 06:16

Cast Model Merger GUI v2.5.0

手臂武器拼接(可选功能,默认关闭)

  • 新增"手臂武器拼接"工具:把武器模型拼接到手臂骨架,生成完整的第一人称 viewmodel。在菜单 设置 → 手臂武器拼接 勾选开启(默认关闭),每组部件区出现工具按钮。
  • 拼接方式:武器根骨骼(如 j_gun)以零位移挂接为手臂 tag_weapon(自动探测,可下拉改选)的子骨骼;武器骨骼层级与蒙皮权重完整保留,与手臂骨骼重名时自动加 _wpn 后缀;武器贴图路径改写为绝对路径。输出为全新 CAST,不修改输入文件。
  • 输出命名统一按武器代号(文件名中部件类型段前一段)推导:
    • 合并输出默认 <代号>.cast(如 att_sat_vm_ar_eagle_rec_LOD0 → eagle.cast)
    • 弹匣装填默认 <代号>_filled.cast
    • 手臂武器拼接默认 <代号>_viewhands.cast
    • 找不到部件类型段时回退完整文件名,名称始终可手动修改。

New opt-in Arm + weapon assembly tool (off by default; enable in Settings): the weapon's root bone splices into the arms skeleton as a zero-offset child of tag_weapon (auto-detected, overridable), preserving the weapon's bone hierarchy and skin weights with collision-suffixed names and absolute texture paths. Output naming is unified around the weapon code extracted from the file stem: merges default to <code>.cast, magazine fills to <code>_filled.cast, and arm assembly to <code>_viewhands.cast — always editable.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.4.3

Choose a tag to compare

@github-actions github-actions released this 24 Sep 10:54

Cast Model Merger GUI v2.4.3

眼球被遮罩误伤修复

  • 数据核查发现:眼睛材质的语义 4a 贴图是平滑渐变(阴影类数据),并非发片/泪线那样的剪影遮罩——把它当覆盖率抖动会抹掉约七成眼球,看起来像闭眼。现在只有源项目 profiles.json 中声明 requires: ["opacity"] 的发片与泪线应用 4a 遮罩,眼球恢复完全不透明渲染,与源项目一致。

The eye material's semantic-4a texture turned out to be a smooth gradient (shadow data), not the bimodal coverage silhouette that hair cards and the tearline carry — dithering the eyeball with it erased most of the eye. Only the profiles that declare requires: ["opacity"] in the shader project (hair_card, tearline) now apply the 4a mask; the eyeball renders fully opaque again, matching the source project.

  • 发布包精简:ZIP 现在只包含主程序 CastModelMerger.exe 与中英文使用指南(docs/user-guide.zh-CN.md、docs/user-guide.en.md),不再附带 README、截图与第三方声明。

The release ZIP now ships only the executable and the bilingual user guides.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.4.2

Choose a tag to compare

@github-actions github-actions released this 24 Sep 09:31

Cast Model Merger GUI v2.4.2

眼部与发片材质修复

  • 不透明度遮罩(眼睛轮廓、泪线、发片)此前按 0.5 硬阈值二值剔除,alpha 渐变被压成锯齿条带,在眼睑周围出现粗黑条纹。现在不透明管线启用 alpha-to-coverage:遮罩值作为软覆盖率由 MSAA 抖动为平滑边缘,同时保留深度写入(发片卡片相互遮挡正确)。
  • 角膜壳基础不透明度从 0.3 降至 0.1:正视时近乎完全透过(虹膜清晰可见),仅保留掠射角的玻璃光泽边缘,对齐源项目透射式角膜的表现。

Opacity masks (eye atlas, tearline, hair cards) were cut out with a hard 0.5 threshold, turning their alpha gradients into jagged dark bands around the eyelids. The opaque preview pipeline now uses alpha-to-coverage: the mask value becomes a soft, MSAA-dithered coverage while depth writes are preserved. The cornea shell's base opacity drops from 0.3 to 0.1 so the iris stays clearly visible through it, keeping only the grazing-angle glass sheen.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.4.1

Choose a tag to compare

@github-actions github-actions released this 24 Sep 08:25

Cast Model Merger GUI v2.4.1

人物分档修复与瞄准镜玻璃修复

  • _mat_info 语义表支持:导出目录带有 _mat_info/<材质>.txt 时,预览按源项目 cast_spec.py 同款规则交叉解析——语义 47 → 底色、48 → 打包 NOG 法线、4a → 遮罩,优先按贴图名匹配 cast 槽位,其次读取 _images/<贴图名>.png。MW/BO 人物资产(如 dallas 头部)的 NOG 法线与发片透明遮罩此前全部丢失,现在完整解析:皮肤/发片/眼睛/角膜/泪线/口腔按源项目 techset 与材质哈希规则精确分档,发片获得正确的透明剔除。
  • 瞄准镜玻璃发黑修复:玻璃材质此前回退到暗色调色板颜色且基础透明度过低,在暗色枪身内部呈纯黑。现在玻璃使用深蓝灰默认色调、更高的基础不透明度,并加强视角光泽与菲涅尔边缘增亮,暗色镜片呈现玻璃质感而非黑洞。
  • $black/$white/$identitypackednog 哨兵按源项目语义处理;贴图名含 lens/glass 时识别为玻璃材质(命中全息瞄具镜片等哈希命名材质)。

Character profile classification now reads _mat_info semantic tables (semantic 47 = color, 48 = packed NOG, 4a = opacity) cross-validated against cast slots and _images, exactly like the shader project's cast_spec.py — resolving the NOG normals and hair opacity masks that named slots alone lose, and classifying skin/hair/eye/cornea/tearline/oral via the project's techset and material-hash rules. Optic glass no longer renders as a black hole: lenses use a dark blue-grey default tint, higher base opacity, and a stronger viewing-angle sheen with fresnel edge brightening.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.4.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 04:54

Cast Model Merger GUI v2.4.0

材质预览分档渲染(对齐源 shader 项目的 profile 体系)

  • 材质预览现在按材质名与文件名自动分类,并套用 ez4cywa-cod-blender-shaders profiles.json 的控制参数渲染,人物、武器、玻璃在预览中有明显不同的观感。
  • 武器 weapon:金属度 1.0,albedo Alpha 作为金属候选,金属区域呈反射式高光。
  • 玻璃 glass:薄壁透射(IOR 1.46),菲涅尔边缘高光,半透明叠加绘制;角膜 cornea 同样透射并断开底色(白)。
  • 人物 character:皮肤(SSS 0.22 包裹漫反射 + 轻清漆)、发片(不透明度剔除 + Sheen 边缘光 + 法线强度 0.4)、眼睛(Coat 0.8 强清漆)、泪线、口腔、布料(Sheen 0.15)各自套用研究参数。
  • 透射类材质(玻璃/角膜)在不透明几何之后单独以深度测试 + Alpha 混合绘制,可以正确透出其后方的模型。
  • 分类规则首个命中生效:武器名称/资产路径规则沿用源项目正则;研究项目基于 _mat_info techset 的规则在通用 cast 上不可用,人物子档改用通用名称提示(skin/hair/eye/cornea/tear/oral/cloth)。
  • 仍然默认关闭、完全只读;支持五种语言与明暗主题。

Material preview now classifies every material by name and file stem and renders it with the control values from the shader project's profiles.json, so weapons (metalness 1.0 with alpha metal candidates), characters (skin SSS wrap, hair sheen cards, glossy eyes, transmissive cornea) and optic glass (thin-wall IOR 1.46 transmission with fresnel highlights, alpha-blended over opaque geometry) all look distinctly different. Rules are first-match-wins; techset rules that need _mat_info tables fall back to generic name hints for character sub-profiles. Still off by default and fully read-only.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.3.0

Choose a tag to compare

@github-actions github-actions released this 24 Sep 03:57

Cast Model Merger GUI v2.3.0

可选的带材质模型预览

  • 预览窗口工具栏新增棋盘格“材质”开关(默认关闭),开启后模型按材质贴图渲染:albedo 颜色贴图(sRGB)+ 打包 NOG 法线(G/A 联合编码还原切线空间法线,R 通道作为光泽候选),并支持遮罩透明剔除。
  • NOG 解码与槽位角色表源自 ez4cywa-cod-blender-shaders 的 COD 材质逆向研究:albedo/diffuse/basecolor → 颜色,normal/nog → NOG,opacity → 遮罩。
  • 贴图按 cast 文件中的路径在后台线程解码,不阻塞界面;底部状态栏显示加载进度,文件缺失时逐材质回退纯色并提示。
  • 合并输出的 .cast 现在保留输入部件的贴图路径(此前会写空),合并后的模型同样可以带材质预览;同名但贴图不同的材质不再被错误合并。
  • 支持五种语言与明暗主题;材质预览同样只读,不修改源文件与合并结果。

Optional material preview lands in the model preview window. A checkerboard Materials toggle (off by default) switches the GPU shader from flat colors to textured rendering with sRGB albedo and COD-style packed NOG normal decoding, following the research in ez4cywa-cod-blender-shaders. Textures decode on background threads from the paths stored in the cast file, with per-material flat fallback and a status indicator. Merged .cast outputs now keep material texture paths, so merged models preview with materials too; same-name materials with different textures are no longer collapsed. Available in all five languages and both themes; still fully read-only.

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.2.2

Choose a tag to compare

@ez4cywa ez4cywa released this 08 Sep 12:05

Cast Model Merger GUI v2.2.2

2026-09-14 亮暗切换与弹匣界面精简(版本号不变)

  • 菜单栏右侧新增醒目的亮/暗主题切换按钮,自动保存选择;主界面和预览同步切换,切换语言不会重置主题。
  • 弹匣名称只显示一次,装填目标与复制来源合并在同一行,移除重复的来源下拉框,两种选择仍互不干扰。
  • 骨骼明细改为悬停查看,只在需要时拼接和排版,减少常规界面的重复工作。
  • 支持五种语言和明暗主题,保留既有装填与复制逻辑。

Added a prominent, persistent light/dark toggle at the right of the menu bar. Simplified magazine selection into one row per magazine with independent fill-target and copy-source controls. Bone details are generated only when hovered. Version remains 2.2.2; download the refreshed ZIP.

2026-09-14 专用预览区、分批导入与崩溃日志(版本号不变)

  • 新增固定的模型预览区,支持拖入或点击多选 CAST 文件,分别打开独立预览。
  • 其他区域用于导入部件:拖到指定模型组会追加到该组;拖到普通区域时,每批独立成组,优先复用空组,无需先合并上一批。
  • 三类拖放目标都有高亮和对应提示,适配五种语言及明暗主题。
  • 修复 Windows 拖放缺少普通鼠标移动事件时,区域命中失效、文件无响应的问题;拖放期间读取实际鼠标位置并换算窗口缩放。
  • 增强本地诊断日志:记录版本、进程、显卡、预览路径和加载/关闭事件;Rust panic 记录堆栈,Windows 原生异常尽可能记录异常码及地址。错误提示可打开日志目录。
  • 此次增加排查预览崩溃所需的证据收集,不代表此前未复现的预览崩溃已修复。

Added a dedicated multi-file preview drop area and separate import batches outside existing groups. Drag targets now highlight with localized hints. Fixed Windows file-drop routing when ordinary cursor events are missing. Added local panic backtraces, native exception details, GPU information and preview lifecycle logs. The previously unconfirmed preview crash still requires reproduction and logs. Version remains 2.2.2; download the refreshed ZIP.

2026-09-11 拖入 CAST 即可预览(版本号不变)

  • 将 CAST 文件拖到主工作区空白处即可打开独立预览,支持同时拖入多个文件,不改变合并组。
  • 拖到模型组内仍按原逻辑添加部件;空白处拖入预览提供高亮和五种语言提示,并适配明暗主题。
  • 忽略非 CAST 文件,无法加载的 CAST 文件显示正常的预览错误提示。

Drop one or more CAST files onto empty workspace space to open standalone previews without changing merge groups. Dropping onto a group still adds parts. Includes theme-aware highlighting and localized hints. Version remains 2.2.2; download the refreshed ZIP.

2026-09-09 全局预览布局更新(版本号不变)

  • 独立预览、部件预览和合并结果预览统一采用全窗口布局:顶部名称、中央模型、左下视角工具、底部“视图 / 模型信息”。
  • 保持现有 macOS 风格、明暗主题和五种语言,并将红黄绿窗口控制应用于预览窗口。
  • 新增可开关的透视地面网格,与模型共用相机和深度遮挡;支持旋转、缩放、复位,以及 G 键切换网格。
  • 模型信息页显示原始网格、顶点、三角形、实际显示三角形和尺寸;保留后台加载、错误提示和大模型抽样说明,不改写源文件。

All CAST previews now share a full-window layout with a compact name row, lower-left camera tools, and Viewport / Model info tabs. Added a toggleable perspective ground grid with depth occlusion, macOS-style preview window controls, and geometry details. Version remains 2.2.2; download the refreshed ZIP.

独立 CAST 预览更新(版本号不变)

  • 新增“文件 → 打开模型预览…”和 Ctrl+O 快捷键,直接选择 CAST 文件并打开独立 3D 预览窗口,无需添加模型组部件。
  • 预览沿用旋转、缩放、重置视角及后台加载;不会修改源文件或合并组,取消文件选择不会产生空预览窗口。
  • 菜单入口和文件选择窗口支持五种语言,版本仍为 2.2.2,请下载刷新后的 ZIP。

Added File → Open model preview… and Ctrl+O for standalone CAST viewing. Opens the existing 3D preview without adding files to a merge group. Canceling the picker leaves the workspace unchanged. Version remains 2.2.2; download the refreshed ZIP.

macOS 风格菜单栏

  • 用紧凑的“文件 / 设置 / 帮助”菜单栏替换原来的顶部按钮区,移除重复的应用标题和文字介绍,为模型工作区留出更多空间。
  • “文件”中可新建模型组;“设置”中可切换语言、保存设置或恢复默认;“帮助 → 关于”可查看版本、检查更新和访问项目链接。
  • 保留 Ctrl+N、Ctrl+S 等现有快捷键,并在菜单项旁显示对应操作系统的快捷键提示。支持键盘打开菜单和 Esc 关闭。
  • 保留 macOS 风格红黄绿窗口按钮,适配五种语言、明暗主题以及默认和最小窗口尺寸。
  • 包含 v2.2.1 的装填保存兼容性修复、备用弹匣布局复制和默认关闭的 GitHub 更新检查。

English

Replaced the previous header and command buttons with a compact macOS-inspired File / Settings / Help menu bar. Removed the repeated application heading and introduction to give models more workspace.

Create groups under File; choose a language or save/restore settings under Settings; open version information and update checks under Help → About. Existing shortcuts remain available with platform-specific hints. Menus support keyboard opening and Escape dismissal, all five languages, both themes, and minimum window dimensions.

Includes the v2.2.1 magazine-save compatibility fix, spare-magazine layout replication, and opt-in GitHub release checks (off by default).

解压 ZIP 后运行 CastModelMerger.exe,无需安装 .NET 或 Rust。Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required.

Cast Model Merger GUI v2.2.1

Choose a tag to compare

@ez4cywa ez4cywa released this 07 Sep 14:34

Cast Model Merger GUI v2.2.1

2026-09-08 装填兼容性、备用弹匣与窗口更新(版本号不变)

  • 修复输出文件系统不支持硬链接时,装填保存出现“函数不正确”的问题;仍不会覆盖已有文件。
  • 支持选择空备用弹匣,复制主弹匣的子弹布局,并将新增子弹绑定到对应备用弹匣骨骼。
  • “关于”新增 GitHub 更新检查,可手动检查或开启启动检查,默认关闭;不会自动下载安装。
  • 主窗口采用 macOS 风格红黄绿按钮和居中标题,支持关闭、最小化、最大化、拖动和边缘缩放。
  • 修复关于窗口展开内容后的滚动交互,完成 84 项自动测试及明暗界面检查。GitHub 匿名接口受限流时会提示检查失败,可稍后重试或手动下载。

Same-version magazine and window update

Fixed magazine saving on filesystems without hard-link support. Empty spare magazines can copy the primary magazine's ammunition layout with correct bone binding. Added opt-in GitHub release checks (off by default, no automatic download or installation) and macOS-style main-window controls. Version remains 2.2.1; download the refreshed ZIP.

2026-09-08 关于页面链接修复(版本号不变)

  • 修复“关于”中的 GitHub 地址、下载、问题反馈、上游项目与许可链接点击后无法打开浏览器的问题。
  • 补全原生浏览器支持,并增加链接、复制、展开与关闭的点击回归测试,以及发布包的系统集成检查。
  • 快捷键提示按操作系统显示;Windows 下显示 Ctrl+N、Ctrl+S、Ctrl+Enter,不再混入 macOS 的 Command 符号。
  • 输出文件夹和输出文件名输入框的文字改为垂直居中,保持原有控件高度和布局。

Same-version About link fix

Restored native browser integration so About links and download/report buttons open in the default browser. Added click regression tests for all links, copying, credits and closing, plus packaging checks for browser and clipboard support. Version remains 2.2.1; download the refreshed ZIP.

2026-09-07 关于界面更新(版本号不变)

  • 顶部新增“关于”:查看版本、打开 GitHub 项目和下载页、反馈问题、复制项目链接。
  • 应用图标与版本居中展示,GitHub 操作独立分区,致谢和许可按需展开,关闭按钮固定在底部。
  • 支持五种语言和明暗主题;保留现有模型合并、弹匣装填与预览功能。

Same-version About update

Added About with version information, GitHub links, downloads, issue reporting and link copying. The dialog uses a centered app identity, grouped project actions, expandable credits and licenses, and a persistent Close button. Supports all five languages and both themes. Version remains 2.2.1; download the refreshed ZIP to receive this update.

2026-09-07 多语言布局更新(版本号不变)

  • 根据实际译文宽度调整顶部和底部工具栏排列,修复俄文长标题挤压。
  • 修复折叠箭头与组名重叠、俄文预览按钮断词,以及不同长度“浏览”按钮挤压路径框的问题。
  • 设置区与部件区顶部对齐;部件操作纵向排列,槽位保持统一高度。
  • 弹匣装填内容可滚动,操作区固定可见;预览工具栏按功能成对换行。
  • 检查英文、法文、俄文、西班牙文的主界面、装填和模型预览;加入五语言自动布局回归检查。同步包含英文 README。

Same-version multilingual layout refresh

Toolbars now adapt to translated text widths. Fixes group-chevron overlap, broken Russian preview labels, Browse-button sizing and settings-pane alignment. Magazine filling keeps its actions visible while content scrolls; preview commands wrap in related pairs. English, French, Russian and Spanish layouts were inspected, with automated checks covering all five languages. Version remains 2.2.1; download the refreshed ZIP to receive these fixes.

预览窗口统一采用主界面的字体、圆角工具栏、按钮和明暗配色;模型采用随主题变化的中性灰着色,长模型名截断显示,避免挤压窗口。

在 v2.2.0 弹匣装填与 macOS 风格界面的基础上,新增“其他子弹骨骼(按需勾选)”。j_ammo_17 等不属于弹匣子树的编号子弹骨骼也可以单独装填,或与弹匣一起装填,默认不勾选。已占用的位置仍自动跳过。

使用:点击“弹匣装填”,选择武器和子弹模型,在弹匣组下方勾选需要的其他子弹骨骼,另存为新的 CAST 文件。也可以取消所有弹匣组,仅装填这些单独位置。

English

The preview window shares the main app's typography, rounded toolbar, controls and light/dark palette, with theme-aware neutral model shading and truncated long model names.

Adds optional individual ammunition bones outside magazine subtrees, such as j_ammo_17. Select them under Other ammunition bones (optional), either alone or together with magazines. They are unchecked by default; occupied slots are still skipped.

Includes v2.2.0's magazine filling, macOS-inspired UI, compact inputs and five interface languages. Extract the ZIP and run CastModelMerger.exe; no .NET or Rust installation required. Reference model files are not included.