【修复】角色被格线切断(脚、手杖、飘起的斗篷被削掉) 新增 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>
49 lines
1.7 KiB
Python
49 lines
1.7 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""
|
|
多行文本框(原样输出)节点
|
|
==========================
|
|
把输入的多行文本一字不动地输出为 STRING。
|
|
|
|
背景:WAS Node Suite 的「Text Multiline」节点会把 "#" 开头的行当注释删除,
|
|
还会做动态提示词/token 替换——喂 Markdown 文本时标题行(# 一级标题)会凭空
|
|
消失。本节点纯透传、零处理,专门用来安全地承载 Markdown / 代码等原样文本。
|
|
"""
|
|
|
|
|
|
class RuiTextBoxNode:
|
|
"""多行文本原样透传。"""
|
|
|
|
@classmethod
|
|
def INPUT_TYPES(cls):
|
|
return {
|
|
"required": {
|
|
"text": ("STRING", {
|
|
"default": "",
|
|
"multiline": True,
|
|
# 关闭动态提示词处理,杜绝 {a|b}、通配符等被前端改写
|
|
"dynamicPrompts": False,
|
|
"tooltip": "多行文本,一字不动地原样输出。\n"
|
|
"不删注释行、不做动态提示词/通配符/token 替换。\n\n"
|
|
"用来替代 WAS 的「Text Multiline」——那个节点会把\n"
|
|
"「#」开头的行当注释删掉,喂 Markdown 时标题会凭空消失。\n"
|
|
"承载 Markdown、代码等格式敏感的文本请用本节点。"
|
|
}),
|
|
},
|
|
}
|
|
|
|
RETURN_TYPES = ("STRING",)
|
|
RETURN_NAMES = ("text",)
|
|
FUNCTION = "passthrough"
|
|
CATEGORY = "Rui-Node🐶/文本处理📝"
|
|
|
|
def passthrough(self, text):
|
|
return (text,)
|
|
|
|
|
|
NODE_CLASS_MAPPINGS = {
|
|
"RuiTextBox": RuiTextBoxNode,
|
|
}
|
|
NODE_DISPLAY_NAME_MAPPINGS = {
|
|
"RuiTextBox": "多行文本框(原样输出) / Text Box (Raw)",
|
|
}
|