> ## Documentation Index
> Fetch the complete documentation index at: https://comfytv.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Roto Mask

> 在节点上直接画一条样条曲线，把它烘焙成一段动画蒙版。

<Frame caption="Roto Mask · 截图待补">
  <img src="https://mintcdn.com/comfytv/dMkMxJDZdIo4YzAU/images/nodes/_placeholder.svg?fit=max&auto=format&n=dMkMxJDZdIo4YzAU&q=85&s=b54171099e5b02d4313fe581171ebbcc" alt="Roto Mask" width="800" height="450" data-path="images/nodes/_placeholder.svg" />
</Frame>

## 这个节点是做什么的

**Roto Mask（roto 蒙版）** 把手绘多边形变成片段的遮罩。你在节点里的视频预览上直接画一个闭合形状（3 个点以上）；点 ▶ 运行后，它会把这个形状光栅化到整段片子，输出一段蒙版视频。

形状保存在节点的 `shape_keys` 组件里，是样条数据（每个顶点带左右切线手柄，所以平滑后的形状走的是贝塞尔曲线而非直线）。编辑在浏览器里即时完成；真正的抠像处理在 ▶ 运行时进行（ffmpeg/CPU），生成一段新视频。

输入和输出都是 `COMFYTV_VIDEO`，输出是一段蒙版片段（形状内白、形状外黑，或反相）。要接到 ComfyUI 原生节点，请插入 **Bridge**（`ComfyTV/Bridge`）。详见 [https://github.com/jtydhr88/ComfyTV/blob/main/docs/bridges.md。](https://github.com/jtydhr88/ComfyTV/blob/main/docs/bridges.md。)

## 适用场景

* 抠出没有干净颜色可键控的主体或区域
* 做垃圾遮罩（garbage matte），把键控边缘外的杂物切掉
* 快速做一个形状蒙版，把调色或模糊限制在某一块区域

## 节点上的编辑器

卡片显示视频，上面叠一层画布：

* 在空白处 **单击** 落一个新顶点；点够 3 个后形状自动闭合。
* **拖动** 顶点可移动它。
* **双击** 顶点可删除它。
* **smooth（平滑）** 开关控制顶点之间用直线还是贝塞尔切线连接（平滑时从相邻点推出手柄）。
* **Clear（清除）** 抹掉整个形状。

运行前必须画一个至少 3 个点的形状，否则节点会报「draw a shape (3+ points) on the node first」。

## 参数

### shape\_keys

画出的样条，存为 JSON `[{t, points:[{x,y,lx,ly,rx,ry}]}]`。你不用手打——它由节点上的编辑器在你绘制时写入。默认空。

### feather

边缘柔化，单位像素。范围 `0`–`200`，默认 `0`。数值越大蒙版边缘越模糊，过渡越柔和。合成时想避免刀切边缘就调到几像素；要硬边则保持 `0`。

### invert

反相蒙版，让形状 *之外* 的区域变白。布尔，默认关。

## 输出

| 输出       | 类型              | 含义                           |
| -------- | --------------- | ---------------------------- |
| **mask** | `COMFYTV_VIDEO` | 与源片等长的蒙版片段；形状覆盖处为白，其余为黑（或反相） |

## 小贴士

* 当前形状作为单个关键帧放在时间 0 上，整段片子都用这个形状。要做跟随运动的蒙版，先给一帧做蒙版，再接 **Mask Propagate**。
* feather 以源像素计，所以视觉柔和度会随输出分辨率变化。

## 相关节点

* **Mask Propagate** — 把首帧蒙版沿运动的片段传播
* **Shape Mask** — 参数化的渐变/几何蒙版，不用手绘
* **Cutout / Erase** — 消费蒙版来抠出或移除内容
