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>
This commit is contained in:
rui40000
2026-07-29 19:07:01 +08:00
co-authored by Claude Opus 4.8
parent 28fd14aaad
commit 5d3834503e
25 changed files with 512 additions and 123 deletions
+14 -2
View File
@@ -12,7 +12,11 @@ class SpriteSplitter:
def INPUT_TYPES(cls):
return {
"required": {
"图像": ("IMAGE",),
"图像": ("IMAGE", {
"tooltip": "待拆分的合图,需自带透明通道(背景为透明)。\n"
"节点按 alpha 的连通区域找出各个独立素材并逐个裁出。\n"
"白底图请先接抠图节点转成透明再进来,否则整图会被当成一块。"
}),
"最小面积过滤(像素数)": ("INT", {
"default": 100,
"min": 1,
@@ -162,7 +166,11 @@ class SpriteSplitterRGBA:
def INPUT_TYPES(cls):
return {
"required": {
"图像": ("IMAGE",),
"图像": ("IMAGE", {
"tooltip": "待拆分的合图,需自带透明通道(背景为透明)。\n"
"节点按 alpha 的连通区域找出各个独立素材并逐个裁出。\n"
"白底图请先接抠图节点转成透明再进来,否则整图会被当成一块。"
}),
"最小面积过滤(像素数)": ("INT", {
"default": 100, "min": 1, "max": 50000, "step": 1,
"tooltip": "最小面积过滤。"
@@ -173,6 +181,10 @@ class SpriteSplitterRGBA:
}),
"排序方式": (["从左到右-从上到下", "从上到下-从左到右", "面积从大到小", "面积从小到大"],{
"default": "从左到右-从上到下",
"tooltip": "输出顺序。\n"
"⚠ 逐帧处理动画序列时慎用:素材位置一旦浮动跨过内部\n"
"行/列分界,顺序就会在帧间改变。那种场景请改用\n"
"「八方向序列拆分」节点(按固定网格定位,顺序恒定)。"
}),
"seed": ("INT", {
"default": 0, "min": 0, "max": 0xffffffffffffffff,