인버스 키네매틱스(IK : Inverse Kinematics) 휴머노이드 리그(Rig)

From Neos Wiki
Revision as of 16:24, 28 February 2023 by FuzzyBot (talk | contribs) (Updating to match new version of source page)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
Other languages:
English • ‎čeština • ‎日本語 • ‎한국어

Neos에서휴머노이드 리깅된 3D 모델을 가져오거나 아바타로 생성할 수 있습니다. 이때 최고의 결과물을 위해 필요한 것과 하지 말아야할 것들 사이의 혼동이 발생합니다. 이 문서를 통해 이 것을 이해하는데 도움이 되기를 바랍니다.

지원하는 형식

만약 당신이 리깅된 모델을 가지고 있고, 이것이 VRChat이나 기타 VR플랫폼에서 사용할 수 있었다면, 문제없이 사용할 수 있습니다. 일단, 아바타를 가져오기를 수행 해 보세요.

먼저 말해둘 것은, 현재 .unitypackage 파일을 직접적으로 가져올 수는 없습니다.

지원하는 휴머노이드 아바타 형식:

  • FBX
  • GLTF

리그/모델에 대한 개괄적인 요구사항

  • 모델은 A 포즈거나 T포즈 상태여야 합니다.
  • 모델의 안면부는 양의 Z축 방향을 향해야 합니다. 반대(음의 Z축) 방향도 자동으로 탐지는 할 수 있으나, 버그가 존재합니다.
    • 빠르게 체크하는 방법 : 모델을 가져올때 고급설정에서 "강제로 T포즈 설정"을 선택하고 가져오세요. 불려온 모델의 손이 교차한 상태고, Z축 방향으로 180도 돌아가 있을것입니다. 또다른 경우인데, 만약 한손은 앞이고 다른 한손은 뒤로 배치되어 불려온다면, Z축이 90도 틀어져 있는 것입니다.
  • 본 명칭 앞 또는 뒤에 <NoIK> 가 포함되어 있다면, 해당본은 IK 처리 대상에서 제외됩니다.
    • 이 형식은 팔의 비틀림 같은 오인식 가능한 본에 지정하여 사용하세요. 하지만, 해당본의 자식 본에게 까지 영향을 미치지 않으므로, 필요하다면 자식본에도 <NoIK>를 포함하셔야 합니다.

General Guidance

  • Your model should be in an A-pose or T-Pose.
  • The Orientation (forward facing direction) of your model should be along the positive Z axis.
    • A flipped Z axis can be detected but might contain bugs.
    • As a quick validation for this:
      • Check the "Force T-pose" option in the advanced import settings. If hands are crossed, rotate 180 degrees along the Z (up-down) axis. If one hand is in front and the other hand is in back, rotate 90 degrees along the Z (up-down) axis.

Ignoring Bones

Sometimes, you might want to ignore a bone in the IK process within Neos. Luckily you can do this. Simple add <NoIK>(case insensitive) to the Bone's name anywhere within the bone's name. This bone will then not be considered for IK purposes. It's children will though. This is often useful for twist bones or clothing/hair bones that are being detected as skeletal/IK bones.

Bone Name Used in IK? Notes
Right Hand Flagged as a Right Hand
<No_IK> Right Hand Flagged as a Right Hand
<NoIK> Right Hand Ignored by IK
Right Hand <NoIK> Ignored by IK
Right Hand <noik> Ignored by IK
Right Hand <NOIK> Ignored by IK
bo<nOiK>ne Ignored by IK
One day I went to the park, the park had <noik> Ignored by IK

본 요구사항

모델을 가져올때 네오스는 특정 패턴비교 및 휴리스틱 분석을 통해 모델의 본을 식별합니다. 이 말은 본의 명칭이 대/소문자거나 추가로 다른 명칭이 붙어도 어느정도는 인식한다는 것입니다. 예를 들면, "hips"나 "Hips", "HIPS" 또는 "cheese_hips"는 네오스에서 모두 hips 본으로 식별하죠. 휴리스틱 분석은 본 이름에 공백이 포함(upper arm)되거나 없는(upperarm) 경우인 경우라도 "Upper Arm"으로 올바르게 인식합니다.

이것은 다양한 본 명칭에 대한 적응성을 높여주지만, 명칭을 어떻게 부여해야 하는지에 대한 도움도 제공합니다.

아바타 신체의 각 부위별 핵심이 되는 정보가 아래의 안내사항에 기술되어 있습니다.

만약, 이 설명이 너무 상세하다고 생각되면 개요또는 예제 리그 내려받기를 이용하여 넘어가셔도 됩니다.

척추와 엉덩이(Spine/Hips)

모델뼈대의 루트는 엉덩이여야 합니다. 하나의 본이며, 위를 향하도록 합니다. 이 본의 이름은 hips, pelvis, root 라고 지을 수 있습니다.

hip/central spine 구성도

본은 일련의 고정적인 순서를 가지는데, hips의 경우 Hips -> Spine -> Chest -> Neck -> Head의 순으로 이어지도록 명칭을 지정하시면 됩니다.

그래서 이는...:

순서 정확한 본 명칭 사용 가능한 다른 이름
1 Hips hips, pelvis, root
2 Spine spine, chest
3 Chest chest, upper chest, ribcage
4 Neck neck
5 Head head

Upper Chests

Many Avatars have an extra bone segments in the central spine, that's usually called "Upper Chest" or "Spine2".

  1. Hips
  2. Spine
  3. Chest (Sometimes called Spine1)
  4. Upper Chest (Sometimes called Spine2)
  5. Neck
  6. Head

These are NOT required, but we still support these. In these cases the "middle" "Spine" bone will be ignored for the purposes of IK.

어깨와 팔(Shoulders, Arms)

두개의 팔은 모델의 "Chest" 본 위 좌/우에 위치합니다. "L"과 "R" 문자를 사용하여 모델의 좌/우를 지정할 수 있습니다. 마찬가지로 소문자 "l"과 "r"도 인식합니다.

팔쪽 본의 순서는 Shoulder -> Upper Arm -> Lower Arm -> Hand 이며, 반대쪽도 마찬가지 입니다.

팔쪽 리그 구성도
순서 정확한 본 명칭 사용 가능한 다른 이름
1 Shoulder shoulder, clavicle, collar, collarbone
2 Upper Arm upperarm, upper arm, arm, bicep
3 Lower Arm fore arm, forearm, lower arm, lowerarm, elbow
4 Hand hand, wrist, palm

손가락 구성도

손은 상당히 복잡해 보이지만, 꼭 그렇지만도 않습니다. 본격적인 내용으로 넘어가기 전에, 알아두면 좋은것들을 나열해 보겠습니다.

  • 손가락
    • 손가락 본은 각각 최소 2개의 본으로 이루어 져야 합니다.
    • 네오스는 손가락당 최대 4개의 본을 지원합니다.
    • 적당한 명칭이 부여된 손가락이 최소 3개가 필요합니다.
  • 엄지
    • 인지 가능한 엄지손가락이 하나 필요합니다.

여기에 부연하자면, 만약 5개의 손가락을 가진 모델을 이용한다면, 본의 구성 정보를 인식하며, 본의 이름과 무관하게 자동으로 구성합니다. 이 처리과정은 본의 구성 형태를 파악하여, 어떤 손가락이 어디에 해당하는지 자동으로 판단합니다.

하지만, 손가락을 수동으로 설정해야 하는 경우가 있습니다. 상기된 다른 내용과 마찬가지로 본 명칭에 대한 설명은 하기된 내용에서 확인해 보세요.

각각의 손가락에 사용되는 본 명칭은 <손가락명>1 -> <손가락명>2 -> <손가락명>3 -> <손가락명>4 입니다.

각각의 손가락 명칭은 하기와 같습니다.:

  • Thumb
  • Index
  • Middle
  • Ring
  • Pinky

한국어로는 순서대로 '엄지', '검지', '중지', '약지', '소지' 입니다

또는 다음의 설명 테이블을 참조하세요.

손가락 번호 손가락 명 사용 가능한 다른 이름 구성 예시
1 Thumb thumb1.L -> thumb2.L -> thumb3.L -> thumb4.L
2 Index point, pointer index1.L -> index2.L -> index3.L -> index4.L
3 Middle middle1.L -> middle2.L -> middle3.L -> middle4.L
4 Ring ring1.L -> ring2.L -> ring3.L -> ring4.L
5 Pinky little pinky1.L -> pinky2.L -> pinky3.L -> pinky4.L

Finger Identification

Neos uses the following code to try and find what your fingers are:

public static FingerType? NameToFingerType(List<string> names)
{
    if (names.Contains("thumb") || names.Contains("th") || names.Contains("thm") || names.Contains("thmb"))
        return FingerType.Thumb;
    else if (names.Contains("index") || names.Contains("point") || names.Contains("in") || names.Contains("ind"))
        return FingerType.Index;
    else if (names.Contains("middle") || names.Contains("mid") || names.Contains("mi"))
        return FingerType.Middle;
    else if (names.Contains("ring") || names.Contains("ri") || names.Contains("rin"))
        return FingerType.Ring;
    else if (names.Contains("pinky") || names.Contains("little") || names.Contains("pi") || names.Contains("pin") || names.Contains("pnk"))
        return FingerType.Pinky;

    return null;
}

As you can see its quite flexible and forgiving.

다리

다리는 다른 것들에 비해 단순합니다. 각각의 다리는 Hip 본에 연결되어 있습니다. 여기에 "L"과 "R" 문자를 추가하여, 좌/우를 구분시킬 수 있습니다. 마찬가지로 소문자인 "l"과 "r"을 사용 하실수도 있습니다.

다리 리그 구성도
순서 정확한 본 명칭 사용 가능한 다른 이름
1 Upper Leg upper leg, upleg, thigh, upperleg, hipL, hipR
2 Lower Leg leg, calf, knee, shin
3 Foot foot, ankle
4 Toes toe, toes, ball, toebase, toes

Digitigrade Legs

Neos does not support Digitigrade legs natively. Many community members have created systems to support them. An example of this can be found in Shrike's Video

머리

머리도 단순합니다. 하지만 사용가능한 부가 정보는 아래와 같습니다.

  • 시선 추적(아이 트래킹)기능을 위해 2개의 눈 본이 필요합니다.
    • 명칭 : "EyeL"과 "EyeR".
  • 말하기와 관련한 애니메이션을 위한 Jaw 본이 필요합니다.
    • 명칭 : "Jaw"

Eyes

Neos sets up avatars with automatic eye movements and if you have a compatible headset Eye Tracking is supported. For this to work you'll need eye bones named like so:

Part Compatible Names(Case Insensitive)
Left Eye LeftEye, Left Eye, Eye.L,Eye_L
Right Eye RightEye, Right Eye, Eye.R,Eye_R

Jaws

Jaw bone based animations are possible in Neos, but are less common due to Blendshape/Viseme support, If you'd still like to use a Jaw bone name it "Jaw"(Case Insensitive).

Visemes은 리깅과 상관 없는 항목이므로 여기서는 다루지 않습니다.

헤드 구성도

개괄적인 개요

여기 리그에 대한 개괄적인 예제가 있습니다. 자세한 설명은 상기된 내용을 읽어주세요.

개괄적인 리그 예제 블렌더에서 보여지는 전체 리그 구성도

리그 예제

블랜더에서 확인 가능한 리그 예제는 하기의 링크를 클릭하여 받아보실 수 있습니다. 구글 드라이브에서 내려받기.

보조도구

  • 믹사모(Mixamo)로 만들어진 리그도 잘 동작합니다.