quick_skin()
마크다운 다운로드메시와 지금 있는 본으로 웨이트를 만들어, 고른 레이어 한 장에 넣습니다.
레이어를 지정하지 않으면 지금 선택된 레이어에 칠합니다. 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 입니다.