리거가 뼈를 만들어 주지 않은 꼬리 애니메이션
글: Oleg Sidorkin, Cinevva CTO 겸 공동 창업자
2026년 9월 11일 업데이트: 마우스 캐릭터에게서 배운 점에 탄성 굽힘, 바닥 접촉, 그리고 꼬리 때문에 몸이 들리는 두 번째 유형의 문제를 추가했습니다.
한 사용자가 Cinevva 리거로 의인화된 여우를 리깅한 뒤 Walk 클립을 재생했습니다. 몸은 괜찮았습니다. 하지만 꼬리는 젖은 수건처럼 왼쪽 다리에 감겨 접혔고, 왼쪽 다리와 오른쪽 다리의 웨이트가 만나는 곳에서 찢어졌습니다. 아래에서는 이 여우를 계속 예시로 사용하며, 해결책은 이제 리거와 클립을 재생하는 런타임 라이브러리에 모두 적용되어 있습니다.
이 글에 등장하는 여우와 마우스 캐릭터는 모두 Cinevva 3D 모델 생성기로 생성한 뒤 Cinevva에서 리깅하고 애니메이션을 적용했습니다.

왼쪽부터 같은 프레임의 보행 중간 자세입니다. 리거에서 나온 그대로의 리그, 꼬리 전체를 하나의 덩어리로 골반에 연결한 리그, 그리고 자체 본 체인에 연결되어 런타임이 흔들어 주는 꼬리입니다. 아래에서 세 모델을 모두 둘러볼 수 있습니다.
휴머노이드 리거에서 이런 일이 생기는 이유
Fast 엔진은 Make-It-Animatable을 기반으로 하며, 고정된 Mixamo 스타일 스켈레톤을 예측합니다. 기본은 신체 본 22개이고, 손가락까지 포함하면 65개입니다. 메시의 모든 버텍스는 이 본들 중 하나에 할당되어야 합니다. 꼬리는 목록에 없으므로 모델은 자신이 아는 차선책을 택해, 학습된 특징 공간에서 가장 가까운 신체 부위에 꼬리 버텍스를 할당합니다. 이 여우의 경우 왼쪽 정강이에 할당되었고, 나머지는 양쪽 허벅지에 나뉘었습니다.
이는 웨이트의 버그가 아닙니다. 템플릿 자체의 한계입니다. 모델이 출력할 수 있는 꼬리 본 자체가 없으므로 어떤 프롬프트나 설정을 사용해도 꼬리 본을 생성하지 않습니다. 날개, 망토, 긴 머리카락을 비롯해 몸통에서 늘어지는 다른 모든 요소에서도 같은 일이 발생합니다.
수정하기 전에 여우 꼬리의 버텍스 1,582개에서 그 대가를 측정했습니다. 각 버텍스에서 실제로 해당 버텍스를 움직이는 본까지의 거리를 웨이트로 가중 평균한 결과, 키 191cm인 모델에서 평균 47cm였습니다. 꼬리는 거의 0.5m나 떨어진 곳에서 구동되고 있었습니다.
꼬리 찾기
이 시점에 우리가 가진 것은 리깅된 GLB뿐이며, 그것이면 충분합니다. 이 처리 단계는 Cinevva뿐 아니라 어떤 리거의 출력에도 적용할 수 있습니다.
스켈레톤 위의 거리장. 바인드 공간에서 모든 버텍스
버텍스의 스켈레톤 거리는 모든 세그먼트에 대한 거리의 최솟값입니다. 말단 관절에는 관절 너머로 짧은 스텁을 추가하여 주둥이나 손이 자체 본에서 멀리 떨어진 것으로 계산되지 않게 합니다. 이 거리가 모델 키의 7%를 넘으면 버텍스를 멀리 있다고 판단합니다. 이 여우에서는 13cm입니다.
멀리 떨어진 스킨의 연결 조각. 멀리 떨어진 버텍스는 메시 자체의 면을 따라 연결 요소로 묶습니다. 한 가지 세부 사항 때문에 한 시간을 허비했습니다. 익스포터는 UV와 하드 노멀 심에서 버텍스를 분할합니다. 그래서 이 메시는 버텍스가 23,129개지만 삼각형은 29,081개뿐이며, 면 그래프만 사용하면 꼬리 하나가 수십 개의 섬으로 나뉩니다. 먼저 위치를 기준으로 버텍스를 용접하고, 용접된 그래프에서 연결성을 계산한 뒤, 원본 버텍스별로 웨이트를 다시 기록합니다.
어디에 붙어 있는가? 조각의 칼라는 그 조각에 인접한, 멀리 떨어지지 않은 버텍스의 링입니다. 칼라의 중심을 통해 가장 가까운 관절을 찾아 조각이 어디에 매달려 있는지 판단하되 한 가지 편향을 적용합니다. 몸통이나 허벅지 관절이 최근접 거리의 1.5배 이내에 있으면 그 관절을 선택합니다. 골반 주변에서는 허벅지 머리가 엉덩이와 정확히 비슷한 거리에 있고, 그 사이에 있는 꼬리 뿌리는 몸통에 속하기 때문입니다. 이를 판단할 때 칼라의 웨이트는 의도적으로 신뢰하지 않습니다. 꼬리가 별도 셸로 모델링된 경우에는 대부분의 게임 모델이 그렇듯 칼라가 꼬리 자체의 루트 링이며, 우리가 수정하려는 바로 그 잘못된 웨이트를 가지고 있기 때문입니다.
부속지인가, 몸통인가? 두 가지 테스트를 사용합니다. 두꺼운 몸통에서 본과 멀리 떨어진 스킨은 본을 둘러싸므로 질량 중심이 다시 본 위에 놓입니다. 반면 꼬리는 한쪽으로 돌출되어 질량 중심이 모든 본에서 멀리 떨어집니다. 따라서 중심점의 스켈레톤 거리가 조각 도달 거리의 40% 이상이어야 합니다. 다음은 형태 테스트입니다. 조각 공분산의 두 최대 고윳값을
여우의 꼬리는 서로 겹치는 두 개의 셸로 구성되어 있었습니다. 피부 위에 털이 있었고 둘은 용접되어 있지 않았습니다. 따라서 같은 부착점에 있고 바운딩 박스가 절반 넘게 겹치는 조각은 병합합니다. 꼬리 하나에는 체인 하나를 만듭니다.
1단계: 단단하게 만들기
가장 솔직한 첫 번째 해결책은 오후 한나절이면 구현할 수 있습니다. 조각의 모든 버텍스에 Hips 웨이트 1.0을 부여합니다. 그러면 꼬리는 더 이상 찢어지지 않고 골반과 함께 하나의 덩어리로 움직입니다. 널빤지처럼 보이며, 위 그림의 가운데 여우가 바로 그 결과입니다. 이 방식을 중간 단계로 출시한 이유는 구조적으로 늘어남이 정확히 0이어서 아래 측정의 유용한 기준이 되기 때문입니다.
2단계: 꼬리를 따라 체인 생성하기
꼬리를 따르는 좌표. 메시 에지 길이를 가중치로 사용하여 칼라에서 조각 안쪽으로 다익스트라 알고리즘을 실행합니다. 모든 꼬리 버텍스는 루트로부터의 측지 거리
관절. 세그먼트 수는 Tail_1부터 Tail_K까지 만들고 웨이트가 없는 Tail_End를 추가합니다. 이들은 Hips 아래에 부모화되며 Hips의 바인드 회전을 공유하므로, 각 본은 부모 프레임에서 순수한 이동만 가집니다. 역바인드 행렬은 여기서 바로 구할 수 있고, 기존 클립은 이 본들을 전혀 참조하지 않으므로 이후 처리 과정도 깨지지 않습니다.
웨이트.
관절에서는 두 본이 50/50으로 만나고, 세그먼트 중앙에서는 하나의 본이 스킨을 완전히 담당합니다. 루트 세그먼트에서 "prev"는 Hips이므로 꼬리가 칼라에서 꺾이지 않고 몸통에 자연스럽게 블렌딩됩니다.
처리 후 꼬리에서 웨이트가 적용된 본까지의 거리는 47cm에서 17cm로 줄었습니다. 이는 꼬리 자체의 반지름과 비슷합니다. 스킨과 스킨을 구동하는 본 사이의 거리로는 사실상 가능한 만큼 가까워진 것입니다.

3단계: 본을 움직일 무언가 만들기
라이브러리의 어떤 클립에도 꼬리 트랙이 없으므로, 추가 작업이 없으면 체인은 바인드 포즈를 유지하고 여우는 널빤지를 달고 걸어 다니게 됩니다. 게임에서는 이 문제를 절차적 보조 모션으로 해결하며, 우리도 모든 리깅 모델이 이미 로드하는 런타임 라이브러리에서 같은 방식을 사용합니다.
각 관절 끝은 위치
여기서
파티클은 월드 공간에 존재하므로 엉덩이가 회전하거나 가속하면 꼬리가 뒤처지며 스스로 흔들립니다. 어떤 동작도 스크립트로 미리 정해져 있지 않습니다.
여기서 저지른 세 가지 실수는 솔직히 밝힐 만합니다. 각각 측정하기 전까지는 멀쩡해 보였기 때문입니다.
첫 번째 버전에서는 매 프레임 파티클을 목표점까지 남은 거리의 고정 비율만큼, 60fps에서 12%씩 이동시켰습니다. 이를 스프링으로 표현하면
두 번째 버전에서는 로프 보정량을
세 번째 실수는 아래의 캐리 각도였습니다. 각 관절의 자체 프레임에서 적용했기 때문에 본이 네 개인 꼬리는 네 번 들어 올려졌고, 여우 등 위에서 공처럼 말렸으며, 굽힘 지점마다 자체 스킨을 찢었습니다. 이 문제를 찾아낸 것도 아래의 측정이었습니다. 꼬리 에지의 늘어남은 신체 기준값 1.3에 비해 p99 2.3까지 올라가, 처음 연결되어 있던 정강이보다 더 나빠졌습니다. 이제 carry는 꼬리 전체의 들어 올림을 나타내며 모든 관절에 나누어 적용됩니다.
클리핑. 꼬리는 두 다리 사이로 곧게 늘어진 상태로 모델링되어 있었고, 걷기 사이클에서는 발이 꼬리를 관통했습니다. 따라서 스프링이 향하는 정지 포즈는 메시의 원래 포즈와 다릅니다. 50°의 carry가 엉덩이의 측면 축을 중심으로 정지 목표점을 뒤쪽 위로 들어 올립니다. 여우가 움직일 때 꼬리를 드는 방식과 같습니다. 이 50°는 꼬리 전체의 들어 올림이며 모든 관절에 나누어 적용되므로, 체인이 본 4개로 구성되든 8개로 구성되든 완만한 호를 그립니다. 또한 어떤 파티클도 꼬리 루트를 지나며 앞쪽을 향하는 평면을 넘을 수 없으므로 꼬리가 다리 사이로 흔들려 들어가는 일도 없습니다.
측정
다음은 아래의 마우스 캐릭터 변경 사항이 적용되기 전인 9월 6일에 측정한 원본 여우의 수치입니다. 이는 수정된 기본값의 최신 벤치마크가 아니라 첫 번째 체인 솔버의 기록입니다.
정지 이미지만으로는 찢어짐을 입증할 수 없으므로 클립에서 에지 늘어남을 측정합니다. 양쪽 버텍스가 모두 꼬리에 있는 모든 메시 에지에 대해 Walk 클립 전체에서 균등하게 나눈 24개 시점의 스키닝된 길이와 바인드 길이의 비율을 계산합니다. 비율 1은 스킨이 변형되지 않았다는 뜻입니다. 에지가 1.5를 넘어 늘어나거나 0.67 미만으로 압축되면 찢어진 것으로 간주합니다. 신체 에지도 같은 방식으로 측정해 일반적인 스키닝 변형의 기준값으로 사용합니다.
| Walk 클립, 꼬리 에지 샘플 96,864개 | p95 | p99 | 최댓값 | 찢어짐 |
|---|---|---|---|---|
| 원본 리그 | 1.60 | 2.42 | 4.03 | 11.4% |
| Hips에 고정 | 1.00 | 1.00 | 1.00 | 0% |
| 꼬리 체인 | 1.09 | 1.18 | 1.30 | 0% |
| 신체 참고값 | 1.13 | 1.29 | 1.78 | — |
원본 리그에서는 꼬리 에지 9개 중 1개가 찢어짐 기준을 넘었고, 최악의 에지는 바인드 길이의 네 배까지 늘어났습니다. 체인의 최악 에지는 30% 늘어난 1.30으로, 신체 자체의 기준값인 1.78 안에 들어오며 찢어지는 곳은 없습니다. 단단한 꼬리는 하나의 덩어리로 움직이므로 정확히 1.00을 유지합니다. 이 수치를 통해 체인 결과를 신뢰하기 전에 측정 하네스 자체가 올바르게 작동하는지 확인할 수 있었습니다.
실제로 흔들리는 꼬리는 자체 스킨이 조금 변형되어야 하므로 체인의 목표는 1.00에 도달하는 것이 아니라 신체에서 이미 발생하는 변형 이하로 유지하는 것입니다. 이 표의 이전 버전에서는 체인의 p99가 1.03으로 표시되었습니다. 더 좋아 보이지만 실제로는 더 나쁜 결과였습니다. 위에서 설명한 속도 버그 때문에 과도하게 감쇠되어 단단한 버전과 비슷할 정도로 꼬리가 거의 움직이지 않았기 때문입니다.
라이브 비교
같은 클립, 같은 프레임의 여우 세 마리입니다. 드래그하여 둘러보고 휠로 확대하거나 축소할 수 있습니다. 클립을 전환하고, 꼬리 물리를 꺼서 체인이 들어 올려진 정지 포즈를 확인하고, 본 표시를 켜서 체인의 위치를 확인해 보세요.
옆에서 본 동일한 체인을 단독으로 표시하고 스켈레톤을 그린 모습입니다. 스프링 효과가 가장 잘 드러나는 클립은 Sprint입니다.생쥐에게서 배운 것
여우를 통해 체인이 찢어짐을 막을 수 있다는 사실을 확인했습니다. 길고 가느다란 꼬리를 가진 생쥐 덕분에 남아 있던 모션 오류를 훨씬 쉽게 파악할 수 있었습니다. 여우의 털 속에서는 보이지 않던 급격한 꺾임이 생쥐에서는 부러진 관절처럼 보입니다. 생쥐의 꼬리는 바닥에도 닿고, 모델링된 형태가 한쪽으로 휘어 있습니다. 이 세 가지는 서로 다른 문제이며, 스프링 강성을 높인다고 모두 해결되지는 않습니다.
아래 애니메이션 라이브러리에서 생쥐에게 다양한 애니메이션을 적용해 보세요. 캐릭터를 드래그해 회전하고, 썸네일 목록을 좌우로 스크롤하거나, 검색 및 카테고리 필터로 모션을 찾을 수 있습니다. 타일을 클릭하면 큰 미리 보기에서 재생됩니다. 꼬리를 살펴보려면 Walk, Crouch Backward, Crawl Idle, Back Flip부터 확인해 보세요. 이 목록은 애니메이션 히어로 섹션과 동일한 실시간 애니메이션 미리 보기를 사용하며, 탐색하는 동안 모션을 불러와 전체 카탈로그를 이용할 수 있게 합니다.
전체 애니메이션 라이브러리 열기 →에서 이러한 모션을 직접 리깅한 캐릭터에 적용하고 원하는 클립을 내보낼 수 있습니다.
스프링 체인에도 굽힘 저항은 필요하다
파티클에는 각 본의 길이를 유지하는 제약을 적용했지만, 각 관절은 여전히 거의 독립적으로 회전할 수 있었습니다. 길이 제약은 늘어남을 막을 뿐, 힌지처럼 접히는 현상은 막지 못합니다. 생쥐는 바로 이 차이를 명확히 드러냈습니다.

수정 전: 세그먼트 길이를 그대로 유지하는 것만으로는 곡선을 매끄럽게 유지하기에 충분하지 않았습니다.
이제 휴식 곡선을 기준으로 측정한 인접 관절의 추가 굽힘을 서로 결합합니다. 본 축이 서로 다르더라도 왼쪽으로 굽힌 동작이 다음 관절에서 무관한 비틀림으로 바뀌지 않도록, 공통 기준 프레임에서 굽힘을 비교합니다. 각 스텝에서는 일부만 갱신된 값이 아니라 이웃 관절의 스냅샷을 읽습니다. 결합 블렌드는 렌더링 프레임마다 고정된 비율을 사용하는 대신
관절의 탄성 굽힘은 휴식 방향에서 추가로 30°까지만 허용됩니다. 또한 감쇠를 0.65로 높이고 굽힘 한계를 계속 밀어붙이는 속도를 제거해, 속도가 축적되었다가 갑자기 튀어나오지 않게 했습니다. 베이스는 엉덩이의 지지를 유지하고 끝부분은 더 부드럽게 유지합니다. 꼬리가 바닥에 놓여야 할 때는 접촉이 굽힘 한계보다 우선할 수 있습니다.
파티클 위치가 아닌 회전을 결합합니다. 엉덩이에 있는
이 켤레 연산은 굽힘의 좌표 프레임을 바꿀 뿐, 캐릭터에 또 다른 회전을 추가하지 않습니다. 이전 스텝의 스냅샷
베이스에서는 이웃 목표가 다음 관절의 굽힘과 항등 쿼터니언
스칼라 성분이
접촉 투영 전에 이 굽힘을 다시 부모 프레임으로 변환하고
불러온 포즈가 반드시 바인드 포즈인 것은 아니다
생쥐의 저장된 파일에는 마지막 꼬리 관절에 이미 약 28°의 회전이 적용되어 있었습니다. 이 불러온 회전을 중립 상태로 읽은 뒤 그 위에 스프링 모션을 더하고 있었습니다. 이전에 애니메이션되었거나 내보낸 포즈가 스프링 목표에 영구적으로 포함된 것입니다.
이제 솔버는 가능한 경우 스켈레톤의 역바인드 행렬에서 중립 로컬 트랜스폼을 복원합니다. 리그에 Tail_End 헬퍼가 없으면 마지막 세그먼트는 마지막 본 자체의 로컬 프레임으로 표현된 진입 접선을 이어갑니다. 터미널 본의 방향이 다르다면 부모 프레임에서 벡터를 복사하는 방식은 즉시 잘못된 결과를 냅니다.
한쪽으로 치우친 휘어짐에는 또 다른 원인이 있었습니다. 실제 바인드 지오메트리에 이미 존재했던 것입니다. 따라서 바인드 포즈를 올바르게 복원해도 이 편향은 그대로 보존되었습니다. 이제 시뮬레이션은 기본적으로 엉덩이 공간에서 생성해 수정된 각 부모 프레임으로 변환한 중앙 정렬 휴식 호를 사용합니다. restCurve를 사용하면 모델링된 휘어짐을 다시 블렌딩할 수 있습니다. 0은 중앙 정렬 호이고, 1은 제작된 곡선을 유지합니다. 이는 스프링이 목표로 삼는 형태를 바꿀 뿐, 메시나 스킨 웨이트를 다시 작성하지는 않습니다.
기준 트랜스폼 복원하기.
중앙 정렬 호 구성하기. restCurve,
여기서
꼬리는 바닥에 닿아도 되지만 생쥐를 들어 올려서는 안 된다
바닥 접촉은 세그먼트를 길이 구와 바닥의 교차선 위로 회전시킵니다. 파티클 높이만 제한하면 본이 짧아지고, 높이를 제한한 뒤 길이를 복원하면 다시 지면 아래로 들어갈 수 있습니다. 두께를 고려해 중심선 아래에 0.025 월드 단위의 여유를 두고, 아래쪽 접촉 속도를 제거하며 미끄러짐을 감쇠합니다. 평평한 바닥은 기본적으로 월드 Y = 0이며 이동하거나 비활성화할 수 있습니다. 이는 평면 제약이지, 지형이나 전체 메시 충돌은 아닙니다.
구와 바닥의 교차.
예측된 끝점이 바닥 아래에 있다면
다른 속도 투영을 적용한 뒤, 접촉 중인 파티클은 남아 있는 하향 속도를 제거하고 속도를 감쇠합니다.
이는 쿨롱 마찰 모델이 아니라 단순 감쇠를 사용하는 비탄성 접촉입니다. 꼬리가 바닥에 놓여 있는 동안 중력으로 인해 하향 속도가 축적되는 것을 방지합니다.
이로써 꼬리가 바닥을 뚫는 문제는 해결했지만, 꼬리 때문에 발이 공중에 뜰 수 있는 지점이 두 군데 더 있었습니다.
첫째, 뷰어는 불러온 전체 메시의 가장 낮은 지점을 바닥에 맞췄습니다. 저장된 꼬리가 발바닥보다 아래로 늘어져 있으면 꼬리에 맞추기 위해 캐릭터 전체를 들어 올렸습니다. 이제 뷰어는 몸의 바닥을 찾을 때 꼬리 본의 영향을 주로 받는 스킨을 무시하지만, 카메라 프레이밍에는 여전히 전체 캐릭터가 포함됩니다.
둘째, 리타기터의 몸체 지면 정렬 단계에서도 꼬리를 포함했습니다. Back Flip 중에는 해당 스킨이 바닥에 닿지 않도록 골반을 들어 올렸지만, 이후 독립적인 꼬리 솔버가 꼬리를 따로 움직이게 됩니다.
어떤 스킨이 골반을 들어 올릴 수 있는가?
여기서
아래 비교에서 보고된 추가 상승량은 단순한 원시 보정값이 아니라 최종 골반 궤적 간의 차이입니다.
Back Flip 후반부에서 측정한 골반 상승량
꼬리를 몸체 지면 정렬에 포함할지 여부만 바꾸고, 동일한 애니메이션 시점의 동일한 생쥐를 샘플링했습니다. 두 열 모두 동일한 모델 월드 좌표를 사용하며, 그 차이는 꼬리를 포함함으로써 추가된 높이만 보여 줍니다.
| 1.93초 클립의 시점 | 골반 높이: 꼬리 포함 | 골반 높이: 꼬리 제외 | 꼬리 포함으로 인한 추가 상승량 |
|---|---|---|---|
| 1.16초 | 50.5cm | 35.0cm | 15.4cm |
| 1.55초 | 81.3cm | 70.3cm | 11.0cm |
| 1.84초 | 92.2cm | 77.2cm | 15.0cm |
| 1.93초 | 90.6cm | 77.2cm | 13.4cm |
캐릭터는 착지 후 일어서면서 올라가야 합니다. 오류는 의도된 회복 동작이 아니라 마지막 열의 추가 상승량입니다. 값은 샘플링한 월드 위치에서 각각 독립적으로 반올림했습니다.
이 생쥐에서는 꼬리를 제외하자 Back Flip 후반부의 추가 골반 상승량이 약 15cm 줄었습니다. 애니메이션이 끝날 무렵 몸체 프로브는 기준 바닥보다 수 센티미터 위에 뜨는 대신 약 1밀리미터 이내를 유지했습니다. 이제 꼬리 스킨은 몸체의 바닥도, 골반을 들어 올리는 보정값도 결정하지 않습니다. 꼬리 솔버 자체는 꼬리 본만 회전하며 모델, 엉덩이 또는 발을 이동시키지 않습니다.
애니메이션은 재생하기도 전에 포즈를 물려받을 수 있다
들려 올라간 웅크리기 포즈는 별개의 문제를 드러냈습니다. 모든 클립이 준비되기 전에 뷰어가 재생을 시작할 수 있도록 라이브러리 클립을 점진적으로 생성합니다. 리타기팅은 재생과 동일한 스켈레톤을 사용하고 있었습니다. 솔브 사이에 미리 보기가 골반을 움직일 수 있었고, 다음 클립은 애니메이션된 해당 포즈를 캘리브레이션 기준으로 읽었습니다. 클립을 전환할 때 초기화해도 생성된 트랙에 이미 구워진 잘못된 기준은 복구할 수 없었습니다.
이제 리타기팅은 재생이 시작되기 전에 캡처한 안정적인 캘리브레이션으로 만든 전용 스켈레톤 복사본에서 작동합니다. 이후의 클립 요청은 이 기준을 재사용하며, 동시 요청은 서로 별도의 본을 사용합니다. 회귀 테스트에서는 전달된 클립 사이에 실시간 엉덩이를 의도적으로 이동하고 회전합니다. 생성된 트랙은 깨끗한 실행 결과와 동일해야 하며, 솔브 후에도 실시간 포즈가 변경되지 않아야 합니다. 눈에 보이는 모든 움직임이 버그였던 것은 아닙니다. Climb Idle의 원본 루프에는 루트가 고정된 상태에서 골반이 작게 위아래로 움직이는 동작이 포함되어 있습니다. 또한 Crawl Idle을 새로 솔브한 결과, 루프 내내 마우스의 손이 머리 아래에 있었습니다. 손이 올라간 스크린샷은 원본 애니메이션이 그 포즈를 의도했다는 증거라기보다 이전에 오염된 클립과 일치했습니다. 원본, 새 솔브 결과, 실제 재생 결과를 비교한 덕분에 캘리브레이션 오류를 감추려고 의도된 움직임까지 평탄화하는 일을 피할 수 있었습니다.
현재 확인하는 항목
검사 항목에는 길이가 서로 다른 체인에서의 빠른 엉덩이 움직임, 인접 본 사이의 부드러운 굽힘, 좌우의 동일한 반응, 바인드 포즈 복원, 헬퍼 없이 회전된 말단 본, 워밍업 후의 루프 연결이 포함됩니다. 바닥 테스트에서는 웅크리기, 높아진 바닥 평면, 엉덩이가 올라갈 때의 안착과 해제를 다룹니다. 별도의 회귀 테스트를 통해 꼬리의 접촉이 몸을 절대 움직이지 않으며, 꼬리 스킨이 골반을 들어 올리도록 요청할 수 없다는 점도 확인합니다.
이 검사들은 구체적인 불변 조건을 확립합니다. 하지만 마우스의 동작을 직접 관찰하는 일을 대신하지는 않으며, 여우의 새로운 스트레치 수치를 정하는 것도 아닙니다. 라이브 예제에는 수정된 솔버가 사용되지만, 이전 여우 표는 최초 측정 기록으로 그대로 남아 있습니다.
여러분에게 달라지는 점
cinevva.com/tools/rigger에서 꼬리가 있는 캐릭터를 리깅하면 꼬리가 자체 본 체인으로 생성되고, 작업 상태에는 감지된 항목을 설명하는 appendages 항목이 포함되며, 미리보기에서 꼬리가 흔들립니다. 플랫폼 API를 통해 리깅한 모델에도 동일한 파일이 제공됩니다. rt/1.1.12의 최초 통합부터 createAnimator는 추가 코드 없이 Tail_* 본을 찾아 움직일 수 있었습니다. 더 묵직하거나 느긋하게 움직이는 꼬리를 원한다면 스프링의 주파수, 감쇠, 중력, 유지 각도를 옵션으로 조정할 수 있습니다. 꼬리 체인이 없는 기존 파일도 다시 리깅해 이 패스를 적용할 수 있습니다. 위에서 설명한 9월 11일 변경 사항은 이제 Cinevva의 웹 미리보기에 적용되어 있습니다. 이전 런타임 버전으로 고정된 게임과 이미 내보낸 클립은 자동으로 업데이트되지 않습니다. 기존에 베이크된 클립에 수정 사항을 반영하려면 다시 생성해야 합니다.
Blender에서. 애드온은 아마추어를 만들기 전 리그 테이블에서 동일한 패스를 실행하므로, 자신의 컴퓨터에서 리깅한 꼬리도 동일한 이름의 동일한 체인으로 생성됩니다. Fingers 옆에는 Tail 체크박스가 있으며, 결과 카드에는 감지된 항목이 표시됩니다.
Cinevva 런타임 외부에서. 게임의 스프링은 Blender, Unity 또는 Unreal에서 파일을 여는 사람에게는 도움이 되지 않습니다. 그런 환경에서는 꼬리가 가만히 있기 때문입니다. 그래서 이제 내보낼 때 꼬리 움직임을 베이크합니다. 선택한 각 클립을 시뮬레이션하고 꼬리의 회전을 실제 키프레임으로 샘플링합니다. 콜드 스타트 상태에서 베이크한 사이클은 시작과 끝이 이어지지 않아 루프할 때 꼬리가 튀므로, 내보내기 도구는 꼬리가 패스 시작 위치로 돌아올 때까지 클립을 보이지 않게 실행한 다음 기록합니다. 꼬리 끝은 의도적으로 가장 부드러운 링크이므로 과도 상태가 가장 늦게 안정되며, 한 번의 워밍업 패스로 충분하지 않을 때도 있습니다.
이 패스는 의도적으로 보수적으로 작동합니다. 골반에서 길게 늘어진 부분에만 체인을 생성합니다. 귀, 머리카락, 소매는 건드리지 않으며 몸통의 넓은 부분도 마찬가지입니다. 이전 버전에서는 망토나 치마를 몸통 본 하나에 완전히 할당했지만, 실제 업로드 모델에서 움직이는 모습을 보고 판단을 바꿨습니다. 그중 하나는 허리 부위에 있는 6,540개 버텍스의 의상이었으며, 리거가 엉덩이와 양쪽 허벅지에 걸쳐 웨이트를 적절히 분산해 둔 상태였습니다. 이를 본 하나에 할당했다면 다리의 움직임을 전혀 따라가지 못했을 것입니다. 의상을 단일 본에 할당하는 것은 해당 부분이 무엇인지 추측해 사용자의 캐릭터를 크게 변경하는 일이므로, 이제는 자동으로 적용되지 않고 명시적으로 요청해야 합니다. 전방 평면을 제외하면 다리와의 충돌은 없으며, 캐릭터가 가만히 서 있을 때의 유휴 흔들림도 없습니다. 따라서 서 있는 여우의 꼬리는 유지 포즈에서 조용히 늘어져 있습니다. 이 두 가지가 다음 작업 목록에 올라 있으며, 서로 다른 레스트 포즈와 스프링이 필요한 날개에도 같은 처리를 적용할 예정입니다.