 rui40000andClaude Opus 5
|
61129bde89
|
新增「加载透明视频」节点:解决带 alpha 的 WebM 读入后透明通道丢失
带 alpha 的 WebM(VP8/VP9)不把透明度放在主视频流里。主流仍是 yuv420p,
alpha 被单独压成第二路藏在 Matroska 的 BlockAdditional 边带中,容器上只
留一条 alpha_mode=1 的元数据。ffmpeg 内置的 vp9/vp8 解码器不读这条边带,
只有 libvpx-vp9 / libvpx 才会——VideoHelperSuite 等常见加载节点走默认
解码器,因此每帧 alpha 恒为 255。
本节点显式指定 libvpx 系解码器并以 rgba 原始流读回,完整保留透明度
(含半透明边缘)。同一文件实测:默认解码器 alpha 全 255;libvpx-vp9
解出 alpha min=0 max=255,全透明 87.2%、半透明 2.0%。
- 自动探测 alpha_mode / pix_fmt,仅在需要时才换 libvpx(默认解码器更快)
- 解码器三档可手动覆盖,自动档失灵时可强制
- 支持强制帧率、帧数上限、跳过前N帧、间隔抽帧、等比缩放
- 输出 4 通道 rgba_image,直接接原生「保存图像」即存成 RGBA PNG 序列帧
(原生节点不做 convert("RGB"),实测落盘与内存 alpha 逐像素零误差)
- 另输出 alpha 遮罩与 3 通道 rgb_image,兼容只吃 3 通道的下游节点
- 流式读管道 + 预分配张量,达到帧数上限立即中止解码
- 全部参数带中文悬浮说明,附示例工作流
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
2026-08-18 18:06:11 +08:00 |
|
 rui40000andClaude Opus 4.8
|
cea14ef327
|
feat: 八方向拆分支持锚点对齐——尺寸统一、切换朝向不跳
原来每个方向各按自己的内容裁剪,8 个方向出 8 种尺寸,角色在各自
画面里的位置也不一致,游戏里切换朝向会跳。人工做法是一帧一帧手动
对位置,这里把它自动化。
新增三个参数:
- align_mode 锚点对齐·统一画布(默认)
- anchor_type 脚底中心(默认)/ 包围盒底边中心 / 包围盒中心
- align_scope 逐帧对齐·脚底钉死(默认)/ 按方向统一平移
锚点为什么取「脚底中心」:角色站在地面上,脚底才是它在世界里的位置;
而斗篷、披风、手杖会把包围盒拽向一侧。故 y 取最低的不透明行,
x 取底部窄带的水平质心 —— 那些外挂物基本不会垂到脚底,走路时两脚
一前一后,窄带质心正好落在两脚之间,即人真正站立的点。
画布尺寸由「所有方向、所有帧相对各自锚点的最大延展」求并集得出,
因此既统一又不会切到任何一帧。
实测(97 帧真实素材):
不对齐 8 种尺寸 各方向锚点散布 x 48.9px / y 27px
按方向统一平移 统一267x372 x 7.1px / y 4px,跨帧位移 13~23px(保留摆动)
逐帧对齐 统一284x367 x 0.76px / y 0px,跨帧位移约 1px
默认取逐帧对齐:行走循环本就该原地播放、位移交给游戏代码,sprite
内部不该有整体漂移,而 AI 生成的视频往往有(实测达 22px)。
info 输出新增统一画布尺寸、锚点坐标与 Unity/Godot 归一化 pivot
(左下为原点),照着填进引擎 8 个方向即可共用同一套坐标。
两个示例工作流同步更新 widgets(13→16,不同步会参数错位),
并已校验 widget 数量与结构自洽性。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 22:27:41 +08:00 |
|
 rui40000andClaude Opus 4.8
|
5e9e1e6a84
|
feat: 新增角色图→八方向行走动画一体化工作流(打通 VIDEO→IMAGE)
把原来分开的两个工作流合并成一条链:角色图 → 八方向静态图 →
Seedance 循环视频 → 抽帧 → 抠图 → 八方向拆分 → 8 个透明 webm + 8 组序列帧。
断点在于 Seedance 输出的是 ComfyUI 的 VIDEO 类型,而八方向拆分要 IMAGE
帧序列,VHS「Load Video」只能从文件读、接不上 VIDEO。
桥梁用 ComfyUI 原生的 GetVideoComponents(comfy_extras/nodes_video.py,
image/video 分类):输入 VIDEO,输出 images/audio/fps。Holopix 插件的
README 也明确写了可直接连接原生 Get Video Components,且它内部先把视频
下载到本地再包装成 VIDEO,解码没问题。因此没有为此新写任何节点。
帧率处理:Seedance 出 720p/4s/24fps≈97 帧,游戏行走循环 8~12 帧即够,
中间加 VHS Select Every Nth Image 抽帧(间隔 3 → 8fps ≈32 帧),
输出帧率同步设 8。这两个值必须匹配否则播放速度不对,已写进 Note。
另外保留一份 SaveVideo 留存 Seedance 原始视频:生成是付费的,后半段
调参时可用另一个工作流单独重跑,不必重复花钱。⑤ 生成静态图后有预览节点,
布局/朝向不对可在此止损。
抠图沿用用户原有的 LayerMask BiRefNetUltraV2,拆分节点 bg_mode 相应设为
「已带透明通道」——这套提示词要求纯黑背景,颜色阈值法本就不适用。
工作流由脚本循环生成(8 路重复),结构自洽性已逐项校验:
links 与节点 inputs/outputs 双向一致、无越界、无悬空引用、
拆分节点 widget 数 13 与定义相符、8 方向各连出 2 条。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 19:04:22 +08:00 |
|
 rui40000andClaude Opus 4.8
|
2a6fd42c57
|
fix: 治理抠图白边——推荐改用模型 alpha,新增收边与颜色反溢出
用户反馈边缘一圈白边。诊断:按 alpha 分层统计 RGB 均值,
alpha 0.05~0.3 的边缘像素 RGB 高达 0.989(角色本体只有 0.363),
证实边缘掺了背景白 —— 我只设了 alpha 却没动 RGB。
新增两个参数:
- decontaminate 颜色反溢出,按 观察色=前景×a+白×(1-a) 反解前景色
- edge_shrink 把边缘那圈几乎全是背景的半透明像素收掉
实测白边强度(合成到深绿底,量主体外缘3像素环带比背景亮多少):
都关闭 0.0483 / 只反溢出 0.0466 / 只收边 0.0283 / 两者 0.0261 / 狠收边 0.0164
即:收边是主力(-41%),反溢出单独几乎无效(-3.5%)——因为观察色
本身就太白,反解出来还是白。这点如实写进 tooltip 与 README。
但收边暴露了颜色阈值法的死穴:它按「离白色多远」估 alpha,
白衬衫接近白、alpha 天生偏低,收边会把衬衫啃出破洞(肉眼可见背景
透过衣服)。这不是调参能解决的,故改推荐语义级抠图:
- bg_mode 默认改为「已带透明通道(推荐·上游接抠图节点)」,
选项名直接把取舍写进去,旧选项名保留在 _BG_ALIAS 里做兼容
- edge_shrink 默认 0.2(配模型 alpha 够用;配阈值法需 0.35+)
- 示例工作流插入 Lucida 节点:加载视频 → Lucida → 拆分(masks 输入)
实测 Lucida 一次识别整张雪碧图全部 8 个角色(各格前景占比 0.18~0.24,
中间空格 0.002);同等白边水平下主体被啃面积比阈值法少 35%,白衬衫完好。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-30 10:23:54 +08:00 |
|
 rui40000andClaude Opus 4.8
|
5d3834503e
|
fix: 八方向拆分不再切断角色;全仓库参数补齐中文 tooltip
【修复】角色被格线切断(脚、手杖、飘起的斗篷被削掉)
新增 expand_beyond_cell(默认开启):格子只用来判定「这是哪个方向」,
角色的实际范围由它自身的连通区域决定,按质心归属确保邻居不混入。
实测 8/8 方向的裁剪框边缘 alpha 从 1.00(内容顶到边界=被切断)
降到 0.00,S 方向高度 326→356、E 方向宽度 150→188 把缺的部分找了回来。
代价是需要两遍扫描(先求全序列并集框再提取),耗时 4.7s→14.9s。
【规则】每个参数都必须有中文 tooltip,作为以后的统一约定
全仓库 26 个节点 169 个参数,此前缺 115 个,现已 100% 覆盖。
tooltip 写「怎么调」而不只是「是什么」:给取值区间的实际影响、
推荐值与踩坑提示(如 OpenAI/ZenMux 的地址栏不能带 :// ,
素材拆分节点用于动画序列时顺序会漂移等)。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 19:07:01 +08:00 |
|
 rui40000andClaude Opus 4.8
|
28fd14aaad
|
feat: 新增八方向序列拆分节点(8方向行走动画管线)
把每帧排布着 8 个朝向的雪碧图序列,一次拆成 8 条独立动画序列,
完成方向编号与分组。整条管线只有这一环缺失,其余复用现成实现:
视频转帧用 VHS 的 force_rate,透明 webm 用 VHS 的
format=video/webm + pix_fmt=yuva420p,序列帧用 SaveImage
(4 通道输入 PIL 会自动存成 RGBA)。
三个关键设计:
- 用固定网格而非连通区域拆分:连通区域按包围盒排序,角色走动时
位置浮动,跨过排序行界方向就错乱,上百帧错一帧整条动画就废;
且各自 bbox 裁剪导致尺寸不一无法合成视频
- 白底转透明用边缘连通性判断:角色常穿白衣服,按亮度一刀切会把
白衬衫掏空,故只把与画面边缘相连的白色判为背景
- 裁剪框取全序列并集:逐帧各自裁剪会尺寸不一且角色帧间跳动
另加碎片清理(按连通块面积比):网格切分会把相邻格探进来的手杖尖
切入本格,既难看又撑大裁剪范围。实测 E 方向 172x370 -> 150x335,
跨帧重心极差 8.0 -> 0.5 px。
实测 97 帧 834x1112 素材:拆分约 4 秒,导出 webm 回读透明像素占比
0.635 与素材一致。注意验证 webm 透明需显式 -c:v libvpx-vp9 解码,
内置 vp9 解码器不处理 alpha 边带,否则会误判为透明丢失。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 18:48:50 +08:00 |
|
 rui40000andClaude Opus 4.8
|
b517c5714b
|
feat: 新增像素化节点(面向像素游戏资产,含 AI 伪像素图网格还原)
产出真实小分辨率、颜色数受控、边缘硬朗的 sprite,而非马赛克滤镜。
纯 numpy/PIL 自研实现,无额外依赖、无需模型权重。
三种模式:按目标宽度 / 按像素块大小 / 自动检测网格。第三种专治
AI 生成的伪像素图(看着像素风,实际网格歪斜、边缘抗锯齿、上千颜色)。
选型说明:Pixel Snapper(MIT)解决的是「伪像素图 → 完美像素图」,
而「普通图 → 像素画」是另一个问题,核心在降采样与调色板量化,
故两条路都做进同一节点。
网格检测处理了两类经典误判:
- 谐波(八度)错误:取得最高分后回查真约数(octave killer)
- 内容周期冒充像素周期:把最佳/最差相位的分差并入评分(anti-phase)
评分用单元内方差而非相邻差分——差分对模糊极敏感,实测会把 4 像素
网格判成 24~28;组内方差则天然压制过大的 s。
实测:干净放大图 k=2~16 共 27/27 全对零八度错误;非方形网格与相位
偏移全对;普通插画正确判为未检出;端到端把 32×32 放大 10 倍加模糊
噪点的图还原回 32×32,与真值 MAE 0.0049;整数倍放大为纯复制无插值。
调色板在 CIELAB 空间聚类(RGB 距离与人眼感受相差很远,会丢暗部层次),
降采样默认主导色(均值会造出新颜色并糊边),内置 PICO-8/Game Boy 等
可确认取值的复古调色板。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 18:23:43 +08:00 |
|
 rui40000andClaude Opus 4.8
|
d47fd27062
|
feat: 新增 Lucida 抠图节点(BiRefNet_HR 微调,擅长文字/Logo/插画/玻璃)
模型 https://huggingface.co/egeorcun/lucida (MIT),220M 参数、885MB。
作者基准:文字/Logo 0.0091(商业参考 0.0123)、插画 0.0092、
伪装 0.0270、总体 0.0257。
- 模型代码(2250 行)内嵌 lucida/ 子包,不用 trust_remote_code:
那会在运行时拉取并执行远程代码,ComfyUI 场景既不该联网也不该如此;
构造传 bb_pretrained=False,避免联网拉 Swin 预训练权重
- 预处理规格与 BiRefNet 系一致,复用 FeyNobg 那份已验证实现;
输出适配 list 格式(eval 下 forward 返回各尺度预测,取 [-1])
- 权重加载严格校验,除窗口尺寸推出的确定性 buffer 外失配即中止
- 不开放分辨率选项:模型 Config.size=1024 且 decoder 走 patch split
示例工作流把 Lucida 与 FeyNobg 并联便于同图对照。实测两者差异
不是精度高低而是「前景」定义不同:同一张动漫插画上 FeyNobg 只抠人物
(前景占比 0.098),Lucida 还把半透明的云判为前景(0.391),
与其训练透明材质的目标一致,两者互补。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 11:08:35 +08:00 |
|
 rui40000andClaude Opus 4.8
|
be93fd36a3
|
feat: FeyNobg 抠图开放半透明控制与长图形变补救参数
针对「主体整片半透明发灰」的实际反馈,模型侧无可调参数
(架构参数训练时已固化),故在后处理层开放:
- alpha_threshold / alpha_softness:以阈值为中心、柔和度为宽度
取一段区间线性拉伸到 [0,1],压掉灰雾同时保留边缘过渡。
默认 (0.5, 1.0) 区间恰为 [0,1],是恒等变换,行为与之前逐位一致;
实测 (0.35, 0.3) 半透明像素占比 1.49% -> 0.31%,主体均值几乎不变
- keep_aspect_ratio:模型固定吃 1024 方图,长图默认被拉伸压扁。
开启后改为等比缩放 + 边缘延展补边(不填黑,避免造出假轮廓),
推理后按有效区域裁掉补边
同步更新示例工作流的 widgets_values(widget 由 5 个增至 8 个,
不同步会导致参数错位)与 Note 说明。
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 10:10:10 +08:00 |
|
 rui40000andClaude Opus 4.8
|
01a26baea9
|
feat: 为水印与 FeyNobg 抠图节点补充示例工作流
example_workflow/FeyNobg抠图.json:
- 加载图像 → 抠图 → alpha 预览 / cutout 预览 / 透明 RGBA 保存
- 含 InvertMask 环节:JoinImageWithAlpha 内部会做 1-alpha,
不先反相会得到前景透明的反效果
example_workflow/满屏文字水印.json:
- 同一张图并联两组参数(常规白色半透明 vs 高密度黄色宽字距)便于对比
- Note 说明八个参数的调法,含密度与字号联动的换算关系
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
2026-07-29 09:48:03 +08:00 |
|
rui40000
|
a826b42576
|
feat: 增加 SDMatte 示例工作流
包含 BiRefNet 出粗遮罩 -> SDMatte 精细化 -> 合成透明背景 RGBA 的完整链路,
并附 Note 节点说明易踩的坑:
- is_transparent:抠玻璃/水/纱/烟雾必须打开。实测关闭时 84.8% 的像素落在
半灰区间(背景浮灰雾),打开后降到 27.7%
- image 直接接 LoadImage 原图,而非 BiRefNet 的 image 输出(后者为 RGBA,
虽经通道收敛后等价,但直连原图的数据流更清晰)
- InvertMask 不可省:JoinImageWithAlpha 内部会做 alpha = 1 - alpha
- BiRefNet 的 process_detail 保持关闭:SDMatte 只取其外接框,细化是浪费
|
2026-07-16 12:01:16 +08:00 |
|