시각적으로 HIKCharacter 캐릭터화

런타임 코드에서 HumanIK API에서 제공된 함수를 호출하여 독점적으로 HumanIK 캐릭터화를 만들 수 있지만 일반적으로 조직의 아티스트, 애니메이터 또는 기술 디자이너가 시각적 디자인 도구에서 캐릭터화를 만드는 것이 더 간단합니다. 이렇게 하면 아티스트에게 즉각적인 피드백을 제공하고 아티스트가 IK를 적용하거나 애니메이션 대상을 캐릭터로 변경하여 캐릭터화를 테스트하고 해당 테스트의 결과에 따라 쉽게 캐릭터화를 조정할 수 있습니다. 캐릭터화가 만족스러우면 아티스트는 런타임 시 게임에 로드되는 파일로 내보낼 수 있습니다.

시각적 캐릭터화에 대한 옵션

아티스트는 다음과 같은 시각적 도구를 사용하여 HumanIK 캐릭터화 파일을 만들 수 있습니다.

MotionBuilder

MotionBuilder와 HumanIK는 동일한 핵심 기술로 개발되었으며 골격을 기본 제공 생체 역할 모델에 매핑하는 여러 가지 동일한 요구 사항을 계속 공유합니다. MotionBuilder에서 만들어 작동하는 모든 Biped 또는 네 발 달린 동물 캐릭터화는 HumanIK API에서 사용하는 경우에도 작동해야 합니다. 그러나 MotionBuilder 캐릭터화를 HumanIK API를 사용하여 로드할 수 있는 파일로 내보내려면 먼저 MotionBuilder 버전에 적합한 HumanIK 플러그인을 빌드하고 설치해야 합니다.

MotionBuilder HumanIK 솔버 플러그인을(를) 참조하십시오.

Maya 2012 이상

2012 릴리스부터 Maya에는 캐릭터 골격에 대해 HumanIK 캐릭터화를 만들고, HumanIK 컨트롤 리그를 사용하여 캐릭터를 애니메이션하며, HumanIK SDK에서 사용할 수 있는 바이너리 파일로 캐릭터화를 내보내는 데 사용할 수 있는 도구가 포함됩니다.

HumanIK Characterization Tool

조직에서 지원되는 버전의 MotionBuilder나 Maya를 사용하지 않는 경우 HumanIK SDK와 함께 제공된 Characterization Tool을 사용하여 시각적으로 HumanIK 캐릭터화를 만들 수 있습니다.

다음과 같은 Characterization Tool도 사용할 수 있습니다.

  • Maya 2011용 플러그인
  • Softimage 2011용 플러그인
  • FBX 파일 내용에서 캐릭터화를 만드는 독립 실행형 버전

이러한 버전의 Characterization Tool은 Windows 플랫폼용 HumanIK 패키지의 tools 디렉토리 내 하위 디렉토리에 포함되어 있습니다. 각 버전에는 설치 및 사용을 설명하는 설명서가 함께 제공됩니다. 이 설명서는 Characterization Tool 인터페이스 자체 내에서도 열 수 있습니다.

아티스트는 파이프라인에 가장 자연스럽게 맞는 버전을 사용하면 됩니다.

단계 1: 시각적 도구에서 캐릭터화 만들기 및 저장

간단히 말해 아티스트는 다음을 수행해야 합니다.

  1. 기본 T 자세에 표시된 대로 캐릭터의 골격을 기본 T 자세로 설정합니다.

    네 발 달린 동물 캐릭터에는 특별한 요구 사항이 있습니다. 네 발 달린 동물 캐릭터에 HumanIK를 사용하려는 경우 네 발 달린 동물에 HumanIK 사용에서 중요한 정보를 읽어 보십시오.

  2. 캐릭터의 골격과 HumanIK에서 파악한 노드 간 매핑을 만듭니다.

    사용하고 있는 도구 및 설치한 해당 도구의 릴리스에 따라 이 단계는 약간 다른 방식으로 수행할 수 있습니다. 도구에 대한 설명서를 참조하십시오. 모든 도구에서는 다음과 유사한 시각적 인터페이스를 사용합니다.

    캐릭터의 골격에서 뼈를 이 그림에 표시된 다양한 노드에 매핑해야 합니다. 각 노드가 골격에 성공적으로 매핑되면 해당 노드의 표현이 녹색으로 바뀝니다.

    Characterization Tool은 캐릭터 중립 자세의 형상을 자동으로 확인하고 감지되는 오류나 경고를 보고합니다.

  3. 캐릭터화를 테스트합니다.

    • MotionBuilder 또는 Maya 2012 이상: 캐릭터에 대해 새 컨트롤 리그를 만들고 캐릭터의 이펙터를 다른 위치로 이동하고 도달 및 당기기 값을 변경한 결과를 테스트할 수 있습니다. 새 캐릭터를 다른 캐릭터에 대해 기록된 애니메이션의 대상으로 설정할 수도 있습니다.
    • Characterization Tool: Characterization Tool 창의 Test 탭에서 모델링이나 스키닝을 사용하지 않고 새로 캐릭터화된 골격으로 다양한 애니메이션 대상을 변경한 결과를 확인할 수 있습니다. 몇 가지 기본 샘플 클립이 도구와 함께 제공되며 애니메이션 클립을 직접 추가할 수도 있습니다.

  4. 새 캐릭터화를 파일에 저장하거나 내보냅니다. HumanIK 초기화 코드에서 완전히 캐릭터화된 새 HIKCharacter 오브젝트를 만들려면 이 파일의 데이터를 사용합니다. 이 작업은 사용하고 있는 도구에 따라 다르지만 유사한 방법으로 수행됩니다.

    • MotionBuilder: Properties 창에서 캐릭터에 대한 HumanIK 플러그인을 열고 Save HIK Character 버튼을 클릭합니다. 그러면 캐릭터화가 바이너리 .hik 파일에 저장됩니다.
    • Maya 또는 Characterization Tool: 캐릭터화를 만든 창이나 주요 드롭다운 메뉴에서 캐릭터 정의를 바이너리 .hikc 파일에 저장하거나 내보낼 수 있는 컨트롤을 제공합니다. 아티스트는 런타임 시 사용되는 대상 플랫폼에 맞게 리틀 엔디안 또는 빅 엔디안 바이트 순서로 이 파일을 저장하도록 선택할 수 있습니다. 이 파일의 엔디안(Endianness)이 런타임 시 사용된 플랫폼의 엔디안(Endianness)과 일치하지 않으면 HumanIK에서 데이터의 바이트 순서를 자동으로 바꿉니다.

      이 파일은 아티스트나 리거가 각 HumanIK 노드에 매핑한 캐릭터의 골격에서 뼈의 이름을 나타내는 XML 파일과 함께 제공될 수 있습니다. 런타임 시 FK 애니메이션 시스템과 HIKCharacterStates 간에 애니메이션 데이터를 변환하는 코드를 작성할 때 이 파일의 정보를 사용할 수 있습니다. 역운동학 해석대상 변경 해석을(를) 참조하십시오.

단계 2: 내보낸 파일에서 HIKCharacter 로드 또는 만들기

아티스트가 만든 바이너리 파일의 데이터를 사용하여 런타임 시 게임에서 HumanIK 캐릭터를 만드는 프로세스는 만든 파일 유형에 따라 약간 다릅니다.

아래에 설명된 대로 캐릭터화를 로드하면 HIKCharacter를 사용할 수 있습니다. 초기화에 나열된 단계를 계속 진행하여 캐릭터에 필요한 다른 HumanIK 오브젝트를 설정합니다.

.hik 파일(MotionBuilder)

HIKLoadCharacter() 함수를 호출하여 .hik 파일에 포함된 데이터에서 새 HIKCharacter를 만듭니다. 이 함수에는 다음 인수가 필요합니다.

  • 캐릭터가 포함된 .hik 파일의 경로 및 파일 이름
  • HumanIK 평가판을 사용하는 경우 Autodesk, Inc.에서 발급한 라이센스 키. HumanIK 라이센스 키 설정에서 제안한 대로 소스 코드 파일에 autodeskmwkey.h 파일을 포함한 경우 사전 정의된 AutodeskCustomerString 값을 사용할 수 있습니다. 정식 버전의 HumanIK를 사용하는 경우 Null 값을 전달할 수 있습니다.

  • HIKCharacter에 사용할 메모리를 할당하기 위해 호출할 콜백 함수에 대한 포인터. 표준 malloc 함수를 지정하거나 malloc과 유형 정의가 동일한 사용자 정의 메모리 할당 방법을 지정할 수 있습니다. HumanIK 오브젝트 및 메모리 관리을(를) 참조하십시오.

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

HIKCharacter * MyChar = HIKLoadCharacter(
                                   "C:\data\hero.hik",
                                   AutodeskCustomerString,
                                   &malloc);

또는 다음 섹션에 간략하게 설명된 프로세스를 대신 사용하여 바이너리 파일 내용에서 캐릭터 데이터를 읽을 수 있습니다.

.hikc 파일(Maya 또는 Characterization Tool) 또는 .hik 파일(MotionBuilder)

  1. 프로젝트에서 사용하는 파일 관리 인터페이스를 사용하여 캐릭터에 대해 만든 .hikc 파일을 메모리에 로드합니다.
  2. HIKCharacterDefinition 클래스의 새 오브젝트를 만듭니다. 예를 들면 다음과 같습니다.

  3. HIKReadFromStream() 함수를 호출하여 .hikc 파일에 포함된 데이터에서 새 HIKCharacter를 만듭니다. 이 함수에는 다음 인수가 필요합니다.

    • 위에서 만든 HIKCharacterDefinition 오브젝트에 대한 포인터. 이 오브젝트가 업데이트되어 새 캐릭터에서 사용하는 노드 및 자유 각도와 부모 오프셋이 있음을 나타냅니다.
    • 내보낸 파일에서 읽어 온 내용의 메모리 위치에 대한 포인터

    • 파일 스트림의 크기(바이트)

    • HIKCharacter에 사용할 메모리를 할당하기 위해 호출할 콜백 함수에 대한 포인터. 표준 malloc 함수를 지정하거나 malloc과 유형 정의가 동일한 사용자 정의 메모리 할당 방법을 지정할 수 있습니다. HumanIK 오브젝트 및 메모리 관리을(를) 참조하십시오.

    • 메모리를 할당 해제하기 위해 호출할 콜백 함수에 대한 포인터. 표준 free 함수를 지정하거나 free와 유형 정의가 동일한 사용자 정의 메모리 할당 해제 방법을 지정할 수 있습니다. HumanIK 오브젝트 및 메모리 관리을(를) 참조하십시오.

    • HumanIK 평가판을 사용하는 경우 Autodesk, Inc.에서 발급한 라이센스 키. HumanIK 라이센스 키 설정에서 제안한 대로 소스 코드 파일에 autodeskmwkey.h 파일을 포함한 경우 사전 정의된 AutodeskCustomerString 값을 사용할 수 있습니다. 정식 버전의 HumanIK를 사용하는 경우 Null 값을 전달할 수 있습니다.

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

    HIKCharacter * MyChar = HIKReadFromStream(
                                       def,
                                       stream, 
                                       streamSize,
                                       &malloc,
                                       &free,
                                       AutodeskCustomerString, 
                                       );
  4. 1단계에서 연 파일 스트림을 닫습니다.