quick_skin()
Markdownダウンロードメッシュと今あるボーンからウェイトを作り、選んだレイヤー一枚に入れます。
レイヤーを指定しないと、今選択されているレイヤーに塗ります。Layer 1 を選んでから呼ぶと Layer 1 だけ変わり、[Base] はそのままです。他のレイヤーを残すのが既定です。
falloff と resolution を省略すると、scan が選んだ値を使います。解像度は 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 がロックされていると trial_feature_locked です。途中で止まると cancelled で、レイヤーは呼び出し前に戻ります。
シグネチャ
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 |
かかった秒。 |
例
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 です。