네 발 달린 동물에 HumanIK 사용

다음과 같은 경우 HumanIK를 사용하여 네 발 달린 동물의 이동을 Biped를 제어하는 것과 정확히 동일한 방식으로 제어할 수 있습니다.

캐릭터에 대한 네 발 달린 동물 해석을 명시적으로 활성화할 필요는 없습니다. 캐릭터화의 차이점과는 별도로 정확히 동일한 프로세스를 사용하여 IK 해석을 수행하거나 Biped 캐릭터에 대해 애니메이션 대상 변경을 수행하는 것처럼 네 발 달린 동물 캐릭터에 대해 애니메이션 대상을 변경합니다.

생체 역학 관점에서 HumanIK IK 솔버의 결과는 일반적으로 네 발 달린 동물의 경우가 Biped의 경우만큼 정확하지 않습니다. 그러나 솔버에서 FK 애니메이션(최소 단일 보행 애니메이션 및 단일 유휴 애니메이션)의 최소 라이브러리에 따라 여러 가지 사실적인 네 발 달린 동물로 게임 환경을 채울 수 있을 만큼 충분히 사실적인 결과를 생성할 수 있습니다. 바닥 접점 시스템을 사용하여 로컬 형상에 적용, 도달을 사용하여 앞다리를 사용한 공격 구현, LookAt 컨트롤러를 사용하여 동물의 머리와 상체 회전 등, HumanIK API에서 제공하는 모든 동적 ID 컨트롤을 사용하여 이러한 기본 애니메이션에 대해 추가 동적 이동을 배치할 수 있습니다.

사실적 네 발 달린 동물 설정은 어려울 수 있습니다. Autodesk 지원부는 항상 네 발 달린 동물 및 해당 캐릭터화 요구 사항과 관련된 질문에 답변을 드리기 위해 대기하고 있습니다. 네 발 달린 특정 동물을 제대로 캐릭터화하는 데 문제가 있는 경우 세부 정보와 모델이나 골격이 포함된 FBX 파일을 준비하여 Autodesk 지원부에 문의하십시오. 엔지니어가 언제든지 지원할 것입니다. 지원을(를) 참조하십시오.

네 발 달린 동물 예제

이 릴리스에는 HumanIK에서 사용하도록 여러 가지 다양한 유형의 네 발 달린 동물을 설정하는 방법을 보여 주는 작업 코드 예제가 포함되어 있으며, 골격 구조의 차이로 인해 각 예제의 캐릭터화 요구 사항이 약간 다릅니다.

HumanIK 샘플 빌드 및 사용에 대한 자세한 내용은 HumanIK 샘플을(를) 참조하십시오.

네 발 달린 캐릭터를 직접 설정하려면 먼저 이 샘플의 코드를 전체적으로 검토하여 다양한 동물을 설정하고 애니메이션하는 방법을 이해하고 네 발 달린 동물 예제를 사용하여 캐릭터화의 차이가 서로 다른 IK 솔루션을 생성하는 방법을 확인하는 것이 좋습니다.

네 발 달린 동물 캐릭터화

캐릭터화 워크플로우는 Biped와 네 발 달린 동물의 경우가 동일합니다. 네 발 달린 동물의 캐릭터화는 초기화에 설명된 대로 프로그래밍 방식이나 시각적으로 설정할 수 있습니다.

실제 네 발 달린 동물의 골격은 일반적으로 사람의 골격과 매우 다르며 다른 종류의 네 발 달린 동물과도 다릅니다. 다음 하위 섹션에 요약된 대로 캐릭터화를 설정하는 경우 이러한 차이를 고려해야 합니다. 특히 캐릭터의 골격에서 관절과 HumanIK 솔버에서 파악한 노드 간 매핑을 선택하는 경우에는 더욱 그렇습니다.

또한 , 기린, 개와 늑대 같은 개과 동물, 임팔라 같은 영양 등 특정 종류의 캐릭터화에 대한 자세한 권장 사항은 이 섹션의 다른 항목을 참조하십시오.

일반적으로 HumanIK 라이브러리의 Verbose 빌드는 캐릭터화의 유효성을 검사하고 캐릭터화가 잘못된 경우(예: 네 발 달린 동물의 다리가 특정 축에 제대로 정렬되지 않은 경우 또는 척추가 수직 축에 충분히 가깝지 않은 경우) 유용한 힌트 및 진단 정보를 제공하므로 이 빌드를 사용하여 캐릭터화를 확인하는 것이 좋습니다. Verbose 빌드에 캐릭터화가 허용되는 것으로 표시될 때까지 IK 솔버를 사용하지 마십시오. 자세한 내용은 디버그 메시지 로깅 을(를) 참조하십시오.

중립 자세 요구 사항

네 발 달린 동물 캐릭터를 사용하려면 먼저 Biped 캐릭터에 사용하는 것과 동일한 중립 자세에서 각 노드의 위치 및 회전을 제공하여 형상을 캐릭터화해야 합니다. 개요을(를) 참조하십시오. 이 자세는 분명히 어색하고 네 발 달린 동물에 적합하지 않지만 HumanIK에 캐릭터의 골격 구조 및 몸체 부분의 치수를 제공하려면 이 방식으로 캐릭터를 설정해야 합니다.

다음 이미지는 동일한 캐릭터화를 MotionBuilder(왼쪽)에서 만든 경우(왼쪽)와 C++에서 프로그래밍 방식으로 만든 경우(오른쪽)를 보여 줍니다.

네 발 달린 동물의 중립 자세에 대한 다음 요구 사항은 종류 및 캐릭터화를 만든 방법에 관계없이 동일합니다.

  • 캐릭터는 Z축의 양의 방향을 향해 있어야 합니다.
  • 척추를 구성하는 골격은 항상 수직 Y축에 정렬됩니다.
  • 머리는 엉덩이 바로 위 수직 5도 내에 있어야 합니다. 목의 골격은 필요한 경우 수직에서 오프셋할 수 있습니다.
  • 뒷다리는 항상 수직 Y축에 정렬되며 엉덩이부터 발바닥까지 전체 확장되어야 합니다. 뒷발굽 또는 발의 발가락은 전면(Z축의 양의 방향)을 가리켜야 합니다. 최상의 바닥 접점 결과를 생성하려면 뒷발굽 또는 발의 바닥이 완전히 수평이어야 합니다.

앞다리의 축 방향에 대한 요구 사항은 캐릭터화를 만든 방법에 따라 다릅니다.

  • MotionBuilder: 캐릭터의 앞다리는 Y축을 따라 수직으로 정렬되고 발굽이나 발은 지면을 향해야 합니다.

    관절의 롤 회전에 주의해야 합니다. 앞다리의 상부가 X축을 기준으로 접히므로 캐릭터의 등을 향해야 합니다. 앞다리의 상부 관절을 구부리면 앞다리가 (Y, Z) 평면에서 벗어나지 않아야 합니다. 이런 방식으로 앞다리를 설정하지 않으면 IK 솔버에서 동물의 다리가 측면으로 접히도록 할 수 있습니다.

    발굽 또는 발의 발가락은 전면(Z축의 양의 방향)을 가리켜야 합니다. 발굽 또는 발의 바닥은 완전히 수평이어야 합니다.

  • C++, Maya 또는 Characterization Tool: 정확히 Biped를 T 자세로 설정한 경우처럼 캐릭터의 앞다리는 X축을 따라 수평으로 정렬되어야 합니다.

    관절의 롤 회전에 주의해야 합니다. 앞다리의 상부가 Y축을 기준으로 접히므로 캐릭터의 등을 향해야 합니다. 앞다리의 상부 관절을 구부리면 앞다리가 (X, Z) 평면에서 벗어나지 않아야 합니다. 이런 방식으로 앞다리를 설정하지 않으면 IK 솔버에서 동물의 다리가 측면으로 접히도록 할 수 있습니다.

    발굽 또는 발의 발가락은 전면(Z축의 양의 방향)이나 직선으로 위쪽(Y축의 양의 방향)을 가리켜야 합니다. 최상의 바닥 접점 결과를 생성하려면 발굽 또는 발의 바닥이 완전히 수직이어야 합니다.

골격 매핑

캐릭터의 골격에서 대부분의 뼈 매핑은 상대적으로 간단하며 Biped의 일반적인 골격 매핑과 유사합니다.

그러나 뒷다리와 앞다리의 경우 두 가지 주요 매핑 옵션이 있습니다. 이러한 옵션은 다리 체인의 관절에 서로 다른 정도의 유연성을 제공하므로 캐릭터의 애니메이션 및 스키닝 동작에 영향을 줄 수 있습니다. 선택해야 하는 옵션은 애니메이션할 종류의 특성 및 얻을 수 있는 결과의 품질에 따라 달라집니다. 두 가지 방법을 테스트하고 최상의 결과를 생성하는 방법을 선택할 수 있습니다.

뒷다리의 경우:

앞다리의 경우:

바닥 접점 설정

HumanIK에 기본 제공되는 기본 바닥 접점 엔진을 사용하여 네 발 달린 동물이 지세에 맞게 발굽이나 발의 위치 및 회전을 조정하도록 할 수 있습니다. 기본 제공 바닥 접점 시스템에 대한 자세한 내용은 손과 발 접점을(를) 참조하십시오.

대부분의 경우 네 발 달린 동물의 손과 발에 "발굽" 접점 유형을 사용합니다. 예를 들면 다음과 같습니다.

HIKSetPropertyValue(props, HIKHandContactTypeId, 3);    // Hoof contact type
HIKSetPropertyValue(props, HIKFootContactTypeId, 3);    // Hoof contact type

기본 제공 바닥 접점 시스템은 비교적 빠르게 설정할 수 있으며 상대적으로 적은 CPU를 사용하고 대부분의 용도에 충분히 적합한 결과를 생성합니다. 그러나 캐릭터의 팔 다리를 구성하는 노드의 배치 상태만 변경할 수 있습니다. 최종 포즈의 사실성은 지표면의 배치에 따라 캐릭터의 가슴이나 엉덩이도 조정하는 경우에 향상됩니다. 예를 들어 HumanIK와 함께 제공된 네 발 달린 동물 샘플에서는 전체 몸체가 바닥의 위치 변경에 응답하도록 하기 위해 일부 도달 T와 도달 R을 발과 가슴에 적용합니다. 이렇게 하면 CPU 리소스가 추가로 사용되지만 보다 보기 좋은 결과를 얻을 수 있습니다.

네 발 달린 동물 오프셋 사용

Biped 캐릭터를 사용하여 HIKGetDefaultState() 함수를 호출함으로써 캐릭터에 대한 중립 시작 지점이 필요할 때마다 기본 자세를 검색하고 사용할 수 있습니다. 그러나 일반적으로 T 자세는 네 발 달린 동물에게 매우 유용한 중립 포즈가 아니므로 HumanIK는 T 자세를 네 발 달린 동물에 더 적합한 중립 포즈로 변환하기 위해 여러 노드의 회전을 자동으로 오프셋하는 HIKAddQuadripedOffset() 함수를 제공합니다.

예를 들면 다음과 같습니다.

HIKCharacterState * MyQuadrupedState = HIKCharacterStateCreate(MyQuadrupedChar, &malloc);
HIKGetDefaultState(MyQuadrupedChar, MyQuadrupedState);
HIKAddQuadripedOffset(MyQuadrupedChar, MyQuadrupedState);

각 축에서 이 함수가 적용된 정확한 오프셋을 보려면 해당 함수 설명을 참조하십시오.

HIKCharacterState에 이러한 오프셋을 추가한 경우 유사한 HIKSubQuadripedOffset() 함수를 호출하여 실행 취소할 수 있습니다.