# quick_skin()

用网格和现有骨骼生成权重，写进你选定的一层。

不指定图层时，涂在**当前选中的图层**上。先选中 `Layer 1` 再调用，就只有 `Layer 1` 会变，`[Base]` 保持原样。默认会保留其他图层。

省略 `falloff` 和 `resolution` 时，用 [scan](scan.md) 选出的值。分辨率只能是 64、128、256、512。像 300 这样范围外的数字不会就近改掉，而是直接拒绝。`error` 是 `bad_resolution`。falloff 不在 0 到 1 之间则是 `bad_falloff`。

`bones` 里的名字才会分到权重。其余骨骼仍留在影响列表里，权重是 0。一个名字都对不上是 `no_bones`。没有网格是 `no_mesh`。

即使成功，`unseeded_bones` 也可能有内容。那是落在网格外面、没坐上格子的骨骼。它们的权重是 0，过后会看起来像「只有这根骨骼不动」。相信结果之前，先把这个列表打印出来。

Trial 锁住 Quick Skin 时，`error` 是 `trial_feature_locked`。中途停下是 `cancelled`，图层会回到调用之前。

### 签名
```python
skin.quick_skin(
    falloff=None,
    resolution=None,
    max_influences=4,
    keep_other_layers=True,
    bones=None,
) -> result
```

| 参数 | 含义 |
|---|---|
| `falloff` | 0 柔，1 硬。省略则用推荐值。 |
| `resolution` | 64、128、256、512。省略则用推荐值。 |
| `max_influences` | 一个点能接受的骨骼数。默认 4。 |
| `keep_other_layers` | `True` 时其他图层保持不变。 |
| `bones` | 要播种的骨骼名。省略则用槽里的全部骨骼。 |

窗口挂进度条时才会用到的 `progress`、`target_layer_id`、`seed_gap`、`smooth_strength`、`smooth_iterations` 也能传。脚本里要选图层，就先把那个图层设为激活，这些参数留空。

### 返回

| 字段 | 含义 |
|---|---|
| `ok` | 涂色是否完成。 |
| `error` | 失败代码。成功时为空。 |
| `layer_name` | 实际涂到的图层名。 |
| `vert_count` | 顶点数。 |
| `bone_count` | 骨骼数。 |
| `unseeded_bones` | 没坐上格子的骨骼。 |
| `elapsed_s` | 用了多少秒。 |

### 示例
```python
skin = api.skin()
result = skin.quick_skin(bones=["Bip001 L UpperArm", "Bip001 L Forearm"])
print(result.ok, result.layer_name)
print(result.unseeded_bones)
```

要用人体图把整套人形绑定拆开，用 [quick_skin_human](quick-skin-human.md)。