메쉬 가중치 워크플로
May 18th, 2020
가중치를 사용하면 메쉬의 정점을 뼈에 바인딩할 수 있습니다. 개별 정점에 자유 형태 변형 기법을 사용하는 대신 정점이 바인딩된 뼈를 움직여 정점을 옮길 수 있습니다. 뼈를 사용하여 메쉬를 변형시키면 복잡한 메쉬 설정을 보다 쉽게 제어할 수 있으며 변형 키를 설정하는 것보다 훨씬 더 효율적입니다.
이전 블로그 게시물의 메쉬 생성 팁 및 메쉬 분류에서 메쉬 생성의 기초에 대해 토론했습니다. 여기서 메쉬 정점에 가중치를 할당하는 워크플로 팁에 대해 토론하면서 탐구를 계속하겠습니다.
하나의 메쉬, 여러 개의 출력
동일한 메쉬를 고려할 때 서로 다른 뼈와 가중치를 사용하여 정점 위치를 조작함으로써 매우 다양한 결과를 얻을 수 있습니다.
예를 들어 이 팁에서는 앞쪽의 뼈를 중심으로 회전하도록 가중치가 부여된 큐브를 보여줍니다.
여기 동일한 큐브 메쉬가 있습니다. 뼈 세트는 같지만, 가중치는 반대로 되어 있어서 메쉬는 큐브 뒤쪽에 있는 뼈를 중심으로 회전합니다. 가중치를 반대로 하고 메쉬가 가중치를 두고 있는 뼈 목록을 반대로 함으로써 뒤바뀜이 이루어집니다.
여기에 동일한 큐브 메쉬가 또 있지만, 큐브가 왼쪽과 오른쪽 코너의 정점 사이에서 축을 중심으로 회전하도록 가중치가 설정되어 있습니다.
미리 계획
메쉬에 관한 이전 블로그 게시물에서 메쉬의 용도에 따라 메쉬 정점을 배치하는 간단한 규칙을 만들었습니다. 이러한 용도에 기반한 사고를 가중치 설정으로 확대할 수 있습니다. 다행스럽게도 메쉬의 구조를 결정했을 때 이미 대부분의 계획을 이행했습니다.
이전 섹션에서 가중치의 이러한 용도에 기반한 사고에 대하여 몇 가지 예를 보았으며, 메쉬와 그 정점이 어느 뼈를 중심으로 회전해야 하는지를 고려했습니다.
가중치를 설정할 때 우리가 답해야 할 것은 다음 질문입니다. 메쉬의 용도에 맞게 하려면 어느 뼈가 어떤 정점을 움직여야 하나요?
우리의 삶을 더 편안하게 하려면 항상 단순함을 추구하기 위해 노력해야 합니다. 이는 가중치를 설정할 때 메쉬의 용도에 맞추기 위해 메쉬에 필요한 최소한의 뼈 정점에 가중치를 부여하고자 함을 의미합니다. 메쉬를 조작하기 위해 다루어야 하는 뼈가 적을수록 메쉬에 애니메이션을 적용하는 것이 더 쉬워집니다.
여기 또 다른 예가 있습니다. 다소 고정적인 큐브를 잘 휘어지는 젤리 큐브로 바꿀 수 있습니다. 먼저 큐브의 메쉬 구조를 수정하여 벤딩을 허용한 다음 하나의 뼈로 벤딩을 쉽게 제어할 수 있도록 가중치를 설정하면 됩니다. 이 설정에서는 아래 GIF에 나와 있는 것처럼 큐브를 구부릴 수만 있습니다. 이처럼 큐브의 "용도"를 제한하면 설정이 간단해집니다.
메쉬를 뼈에 바인딩할 때 주의하세요
애니메이트 모드에서 메쉬를 바인딩하면 다양한 뼈의 구성을 사용하는 대체 포즈를 추가하는 고급 설정을 만들 수 있습니다. 이 프로세스를 이 블로그 게시물에서 설명했습니다. 여기서는 같은 날개의 서로 다른 두 포즈가 동일한 뼈 세트에 바인딩됩니다.
하지만, 부주의하게 사용하면 이러한 자유가 새로운 사용자에게는 위험할 수 있습니다.
메쉬가 뼈에 바인딩되었을 때 메쉬는 뼈의 위치를 기억합니다. 흔한 초보자 실수는 뼈를 이리저리 옮기고, 메쉬를 뼈에 바인딩한 다음 뼈를 원래 위치로 다시 옮기는 것입니다. 이렇게 하면 가중치를 변경할 때 정점이 이동하게 됩니다. 이제 뼈 위치가 정점을 뼈에 바인딩했을 때의 위치와 달라지기 때문입니다.
애니메이트 모드에서 메쉬를 바인딩할 때 이 문제가 뜻하지 않게 발생할 가능성이 훨씬 더 높습니다. 이는 설정 모드에서 보다 애니메이트 모드에서 뼈를 더 많이 이리저리 옮기려는 경향이 있기 때문입니다.
따라서 대체 포즈를 추가하기 위해 애니메이트 모드에서 메쉬를 특별히 바인딩해야 하는 경우가 아니라면, 거의 언제나 메쉬를 설정 모드에서 바인딩하는 것이 가장 좋습니다.
다행히 이런 종류의 사소한 문제가 발생하는 경우 바인딩 업데이트 버튼을 눌러 선택한 메쉬에 새 바인딩 위치를 할당할 수 있습니다. 이렇게 하면 정점이 "기억하는" 뼈 위치가 현재 뼈 위치로 업데이트되고, 이전 위치는 삭제됩니다.
애니메이트 모드에서 가중치 설정 및 테스트
메쉬가 뼈에 처음 바인딩될 때 가중치는 자동으로 설정됩니다. 가중치의 효과를 확인하기 위해 설정 모드에서 뼈를 이리저리 옮겨야 할 수도 있습니다. 뼈를 움직여서 가중치가 어떻게 변형되는지 확인한 다음 실행 취소 방법을 사용하는 것이 좋을 수 있지만, 이전 섹션에서 설명했듯이 설정 모드에서 뼈를 옮기면 가중치가 조정될 때 정점이 이동된다는 것을 의미합니다.
어떻게 하면 이 프로세스를 더 안전하게 만들 수 있을까요? 애니메이트 모드에서 직접 가중치를 설정하시면 됩니다! 메쉬를 변형시켜야 하는 뼈가 움직이는 테스트 애니메이션을 만든 다음 결과에 만족할 때까지 가중치를 조정합니다.
이 방법은 입체감을 시뮬레이션하거나 복잡한 메쉬를 다룰 때 특히 유용합니다. 정지 포즈를 보면서 가중치를 설정하는 것에 비해 동작 중인 가중치를 보면 가중치를 조절하는 것이 훨씬 더 쉬워집니다.
Ctrl
(Mac에서 Cmd
) 키를 누르면 애니메이션이 일시적으로 중지되며 가중치 직접 도구를 사용하여 정점을 더 쉽게 선택할 수 있습니다.
극단에서 시작
메쉬에 할당된 가중치의 효과를 테스트할 때는 항상 극단에서 시작합니다. 즉, 가장 반대되는 두 개의 값이나 위치입니다. 이 프로세스를 가중치뿐만 아니라 뼈 위치에도 적용할 수 있으므로 두 가지의 다른 워크플로가 제공됩니다.
메쉬의 가중치를 설정하는 가장 쉬운 방법은 메쉬가 이동해야 하는 정반대 쪽 끝에 있는 정점에 100%
의 값을 할당하여 시작하는 것입니다. 그런 다음 중간에 정점을 배치하여 메쉬의 계획된 움직임을 따라가는 양으로 가중치 믹스의 균형을 맞춥니다. 대신에 이 방법은 연결된 간단한 메쉬를 제외한 거의 모든 메쉬에 적용됩니다.
예를 들어, 입체감을 시뮬레이션하는 메쉬의 경우 뷰어에서 가장 멀리 떨어져 있는 정점부터 시작하여 메쉬를 제어할 뼈에 100%
의 초기 가중치를 할당합니다. 다음으로 가장 가까워져야 하는 정점을 식별하고 메쉬를 제어할 뼈에 100%
의 영향 값을 할당합니다. 마지막으로 테스트 애니메이션을 재생하는 동안 입체감 효과를 얻으려면 중간에 있는 정점의 가중치를 조정합니다.
극단에서 시작하는 다른 방법은 애니메이션을 적용할 때 실제로 필요한 것 이상의 위치나 포즈로 메쉬를 제어하는 뼈를 옮기는 것입니다. 다리가 굽혀져야 하는 경우 가능한 각도를 약간 넘어서서 다리를 조금 꺾습니다. 얼굴이 공간 내에서 회전해야 하는 경우, 때로는 다소 코믹하게 보일 수 있는 극단의 한계까지 얼굴을 밉니다.
이렇게 하는 이유는 이러한 극단에서 수정되어야 하는 가중치가 쉽게 눈에 띄게 되어 가중치의 미세 조정이 더 쉬워지기 때문입니다. 또한 더 넓은 범위의 모션을 지원하면 애니메이터에게 더 많은 자유를 제공할 수 있습니다.
여러 개의 패스가 필요한 경우가 종종 있습니다. 모든 것이 한 방향 또는 극단의 위치에서 좋아 보이면 정반대 쪽을 테스트하고 보기 좋지 않은 가중치를 수정합니다. 그런 다음 뼈를 이전 포즈에 놓고 다른 방향을 수정할 때 제자리를 벗어난 것이 없는지 확인합니다.
모든 극단에서 모든 것이 좋아 보이면, 그 사이의 포즈는 이미 환상적으로 보일 것입니다.
가중치 그룹
가중치를 할당하는 프로세스를 단순화하는 또 다른 방법은 모두 동일한 가중치를 가질 수 있거나 우선 가중치에 근접할 수 있는 가중치 그룹을 찾는 것입니다.
측면 보기에서만 구부러지는 메쉬는 이 프로세스를 매우 쉽게 만듭니다. 예를 들어, 팔이 윗부분에서 모양을 유지하도록 하려면 최소한 4개의 정점을 선택하고 팔 위쪽 뼈의 모든 정점에 가중치를 부여해야 합니다. 그런 다음 팔 아랫부분에 대한 프로세스를 반복합니다. 그 상태에서 팔이 구부러지는 팔꿈치의 정점에 대한 가중치를 알아내는 것이 훨씬 더 쉽습니다. 메쉬가 튜브형인 경우 두 개의 정점을 쌍으로 선택할 수도 있습니다.
입체감을 시뮬레이션하는 메쉬는 좀 더 까다롭습니다. 메쉬를 여러 조각으로 나눈다고 상상해 보세요. 조각은 뷰어에 가장 가까이 있는 부분을 향해 가장 멀리 떨어져 있는 메쉬 부분으로부터 일정한 간격으로 있을 수 있습니다. 이러한 각 조각은 뷰어와 동일한 입체감에 있기 때문에 동일한 가중치를 갖는 정점 그룹입니다.
결국 가중치가 정확하게 동일한 가중치를 가지지 않더라도 아직 완전히 맞지 않은 가중치를 미세 조정하기 전에 일반적인 근사치를 갖는 것이 여전히 매우 유용합니다.
이 원리는 패럴럭스 스크롤링과 유사합니다. 여기서 이미지 그룹은 서로 다른 속도로 움직여 입체감을 시뮬레이션합니다.
부모에서 시작
메쉬가 두 개 이상의 뼈에 바인딩된 경우 트리 계층구조의 가장 높은 뼈에서 메쉬의 가중치를 부여한 다음 한 번에 한 뼈씩 내려오는 것이 좋습니다. 뼈가 독립된 경우는 하나의 뼈가 다른 뼈의 부모가 되어 있지 않다는 의미입니다. 그러면 메쉬의 한쪽에서 시작하여 다른 쪽으로 진행하도록 선택할 수 있습니다.
부모 뼈에서 시작하면 먼저 일반적인 모션을 정의할 수 있습니다. 그때 자식 뼈로 이동하여 부모 뼈의 가중치에 따라 달라지는 메쉬 섹션에 세부 내용을 추가할 수 있습니다.
예를 들어 젤리 큐브를 다시 만들려면, 먼저 잘 구부러질 수 있도록 가중치를 설정합니다. 다음으로 큐브의 상단을 제어하는 세 번째 자식 뼈의 가중치를 추가합니다.
Spine은 계산을 할 수 있습니다
정점이 뼈의 영향을 점진적으로 더 많이 받도록 수동으로 가중치를 설정하는 것은 지겨울 수 있습니다. 부드러운 벤딩 메쉬를 만드는 가장 빠른 방법은 정점 가중치의 100%
중 절반을 한 뼈에, 나머지 절반을 다른 뼈에 가중치를 부여한 다음 중앙에 있는 가중치를 선택하고 결과에 만족할 때까지 Smooth 버튼을 누릅니다.
정점 수가 더 적은 메쉬에 가중치를 부여한 다음 나중에 메쉬에 더 많은 정점을 더 추가하면 비슷한 결과를 얻을 수 있습니다. Spine은 주변 정점을 기준으로 가중치를 자동으로 계산합니다.
겹치는 삼각형
메쉬가 서로 겹칠 때, 때로는 뒤에 있어야 할 이미지의 일부가 맨 위에 그려지는 경우가 있습니다. 그런 경우 삼각형 순서를 변경하여 문제를 해결할 수 있습니다.
메쉬가 바인딩된 뼈를 정렬하는 것이 유용할 수 있으므로 가장 멀리 떨어져 있는 뼈가 목록의 가장 아랫부분에 있고 가장 가까운 뼈가 목록의 시작 부분에 있도록 합니다. 겹치는 문제를 해결하려면 드로잉 순서를 더 잘 나타내는 뼈의 가중치를 정점에 더 많이 할당합니다.
가중치와 마찬가지로 메쉬의 가중치 뷰에서 뼈의 순서는 애니메이션에서 키로 설정할 수 없습니다. 이는 또한 삼각형 순서에 대한 조정 내용이 모든 애니메이션에 반영된다는 것을 의미합니다.
메쉬 청결
가중치를 자동으로 계산하거나, 부드럽게 하거나, 메쉬에 가중치를 페인팅한 후 메쉬에 불필요한 가중치가 남아 있을 수 있습니다. 이러한 가중치를 잘라내면 성능을 향상시키고 파일 크기를 줄이며, 또한 가중치를 보다 다루기 쉽게 만듭니다.
완벽한 가중치를 설정한 후 여러 정점이 모두 정확히 동일한 가중치를 갖는 경우가 발생할 수도 있습니다. 메쉬를 수정하여 이러한 추가 정점을 제거하고 가중치를 삭제하는 것은 성능을 향상시키고 가중치를 보다 쉽게 조정할 수 있는 또 다른 좋은 방법입니다.
변형 키는 악마입니다
이 전체 게시물은 가중치에 관한 것이지만 변형 키는 어떨까요? 많은 새로운 Spine 사용자는 변형 키를 사용하여 메쉬를 변형시키려고 합니다. 변형 키는 강력하고 제 기능을 하지만 대부분의 경우 가중치를 사용하는 것이 여러 가지 이유로 더 우수합니다.
먼저, 메쉬의 변형을 키잉하면 모든 정점에 키가 동시에 설정됩니다. 예를 들어, 메쉬가 머리이고 변형 키를 사용하여 귀 플래핑에 애니메이션을 적용하는 경우, 귀에 애니메이션을 적용하는 모든 키가 코 정점에도 키가 설정되었기 때문에 나중에 다시 돌아와 코를 움직여 애니메이션을 적용할 수 없습니다. 동시에 귀와 코에 애니메이션을 적용하려면 스트레이트 어헤드 워크플로를 사용해야 합니다. 첫 번째 패스에서 이를 바로잡기가 어렵고, 나중에 돌아가서 기존 키를 조정하는 것도 어렵습니다. 눈이나 입과 같은 동일한 메쉬에서 애니메이션을 적용하려는 요소가 많을수록 문제는 더 심각해집니다.
가중치를 사용할 때 여러분은 귀와 코의 정점을 다른 뼈에 할당할 것입니다. 그때 전체 메쉬에 대해 키잉하지 않고 뼈에 별도로 키를 설정합니다.
변형 키를 피하는 다른 이유는 정점이 가중치를 두고 있는 모든 뼈의 정점 위치가 각 변형 키에 저장되기 때문입니다. 40개의 변형 키와 100개의 정점이 있고 각 정점이 4개의 뼈에 가중치를 두게 되면 해당 키에 40 * 100 * 4
= 16,000
개의 정점 위치가 저장됩니다! 더 많은 메쉬와 변형 키를 추가할수록 이 문제는 점점 더 심각해지고 스켈레톤 데이터가 필요 이상으로 훨씬 더 많아질 수 있습니다.
가중치를 사용할 때는 뼈에만 키를 설정하고 해당 키에는 약간의 정보만 저장하면 됩니다.
변형 키 간에 보간할 때의 움직임은 항상 직선인 반면 가중치는 뼈 회전을 사용하거나 정점이 여러 뼈에 바인딩되어 정점이 보다 다이내믹하게 움직일 수 있도록 합니다.
마지막으로 런타임에 변형 키를 적용하는 것보다 뼈에 애니메이션을 적용하는 것이 약간 더 효율적입니다. 두 경우 모두 정점은 여전히 뼈에 의해 변형되지만 변형 키 간에 보간하려면 추가 정점이 필요합니다.
그러면 언제 변형 키를 사용하시나요? 거의 사용하지 않아요! 변형 키는 실제로 각 정점을 별도로 옮겨야 하는 경우에는 의미가 있으며 가중치를 사용하여 이렇게 하려면 많은 뼈가 필요합니다. 변형 키는 메쉬 가중치와 결합될 수 있습니다. 때때로 가중치는 필요에 따라 완전히 변형되지 않는 특정 포즈를 제외하고 원하는 모든 변형을 제공합니다. 이 경우 변형 키를 한두 개 사용하여 필요에 따라 메쉬가 정확하게 움직이도록 하는 것이 타당할 수 있습니다.
결론
이러한 팁이 가중치와 메쉬를 전반적으로 그리고 더 자신 있게 다루는 데 도움이 되시기를 바랍니다. 아직 이해가 되지 않으셨다면 메쉬 생성 팁 및 메쉬 분류에 대해 살펴볼 수 있는 두 개의 이전 블로그 게시물을 확인해보세요. 다음에는 무엇에 관해 알아보고 싶으신가요? Spine 포럼에서 여러분의 의견을 듣고 싶습니다.