AzureKinect를 Unity Humanoid에 연결하는 방법

Unity에서 아바타를 움직일 필요가 있었기 때문에 AzureKinect의 골격 검출을 이용한 연결을 시도했다.

AzureKinect 자체의 환경 구축은 별도 기사.

Azure-Kinect-Samples에 Unity 외, BodyTracking계의 다양한 샘플 프로그램이 저장되어 있기 때문에 클론

Azure-Kinect-Samples/body-tracking-samples/sample_unity_bodytracking에서 README.md를 읽는 동안 Unity 프로젝트의 환경 구축. 사전에 AzureKinect 자체의 환경 구축이 필요.

3) MoveLibraryFiles.bat를 실행하는 동안 두 개의 파일을 찾을 수없는 오류가 발생하지만 문제가 없었다.
자신의 경우, 몇개의 파일이 리스트대로 배치되지 않는 것도 있었으므로 리스트와 눈 grep하면서 문제가 없는지 확인한다.

Unity를 시작하고 프로젝트 폴더를 열고 Kinect4AzureSampleScene을 실행하면 rtx30계에 기인하는 에러가 토출되었다. SkeletalTrackingProvider.cs의 46행,

SkeletalTrackingProviders.cs(46)
using (Tracker tracker = Tracker.Create(deviceCalibration, new TrackerConfiguration() { ProcessingMode = TrackerProcessingMode.Gpu, SensorOrientation = SensorOrientation.Default }))

TrackerProcessingMode.Cuda로 변경하여 해결했습니다.

도움이 된 이슈

이제 움직였다.


골격이 제대로 표시되면 OK

그런 다음 AzureKinect의 BoneId를 Unity의 Humanoid의 Id에 연결하여 위치를 연결합니다. 각 Id는 아래 참조.
htps : // / cs. 미 c 로소 ft. 코 m / 쟈 jp / 아즈레 / 키네 ctdk / 보 dy - 조 웬 ts
htps : // / cs. 글쎄, ty3d. 이 m/Sc 리 pt 레후렌센/후만보 dy 흐림 s. HTML

HumanBodyBones enum의 내용은 이하(기술이 중복인 것은 애교...)
#region アセンブリ UnityEngine.AnimationModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null
// C:\Program Files\Unity\Hub\Editor\2021.1.15f1\Editor\Data\Managed\UnityEngine\UnityEngine.AnimationModule.dll
#endregion

namespace UnityEngine
{
    //
    // 概要:
    //     Human Body Bones.
    public enum HumanBodyBones
    {
        //
        // 概要:
        //     This is the Hips bone.
        Hips = 0,
        //
        // 概要:
        //     This is the Left Upper Leg bone.
        LeftUpperLeg = 1,
        //
        // 概要:
        //     This is the Right Upper Leg bone.
        RightUpperLeg = 2,
        //
        // 概要:
        //     This is the Left Knee bone.
        LeftLowerLeg = 3,
        //
        // 概要:
        //     This is the Right Knee bone.
        RightLowerLeg = 4,
        //
        // 概要:
        //     This is the Left Ankle bone.
        LeftFoot = 5,
        //
        // 概要:
        //     This is the Right Ankle bone.
        RightFoot = 6,
        //
        // 概要:
        //     This is the first Spine bone.
        Spine = 7,
        //
        // 概要:
        //     This is the Chest bone.
        Chest = 8,
        //
        // 概要:
        //     This is the Neck bone.
        Neck = 9,
        //
        // 概要:
        //     This is the Head bone.
        Head = 10,
        //
        // 概要:
        //     This is the Left Shoulder bone.
        LeftShoulder = 11,
        //
        // 概要:
        //     This is the Right Shoulder bone.
        RightShoulder = 12,
        //
        // 概要:
        //     This is the Left Upper Arm bone.
        LeftUpperArm = 13,
        //
        // 概要:
        //     This is the Right Upper Arm bone.
        RightUpperArm = 14,
        //
        // 概要:
        //     This is the Left Elbow bone.
        LeftLowerArm = 15,
        //
        // 概要:
        //     This is the Right Elbow bone.
        RightLowerArm = 16,
        //
        // 概要:
        //     This is the Left Wrist bone.
        LeftHand = 17,
        //
        // 概要:
        //     This is the Right Wrist bone.
        RightHand = 18,
        //
        // 概要:
        //     This is the Left Toes bone.
        LeftToes = 19,
        //
        // 概要:
        //     This is the Right Toes bone.
        RightToes = 20,
        //
        // 概要:
        //     This is the Left Eye bone.
        LeftEye = 21,
        //
        // 概要:
        //     This is the Right Eye bone.
        RightEye = 22,
        //
        // 概要:
        //     This is the Jaw bone.
        Jaw = 23,
        //
        // 概要:
        //     This is the left thumb 1st phalange.
        LeftThumbProximal = 24,
        //
        // 概要:
        //     This is the left thumb 2nd phalange.
        LeftThumbIntermediate = 25,
        //
        // 概要:
        //     This is the left thumb 3rd phalange.
        LeftThumbDistal = 26,
        //
        // 概要:
        //     This is the left index 1st phalange.
        LeftIndexProximal = 27,
        //
        // 概要:
        //     This is the left index 2nd phalange.
        LeftIndexIntermediate = 28,
        //
        // 概要:
        //     This is the left index 3rd phalange.
        LeftIndexDistal = 29,
        //
        // 概要:
        //     This is the left middle 1st phalange.
        LeftMiddleProximal = 30,
        //
        // 概要:
        //     This is the left middle 2nd phalange.
        LeftMiddleIntermediate = 31,
        //
        // 概要:
        //     This is the left middle 3rd phalange.
        LeftMiddleDistal = 32,
        //
        // 概要:
        //     This is the left ring 1st phalange.
        LeftRingProximal = 33,
        //
        // 概要:
        //     This is the left ring 2nd phalange.
        LeftRingIntermediate = 34,
        //
        // 概要:
        //     This is the left ring 3rd phalange.
        LeftRingDistal = 35,
        //
        // 概要:
        //     This is the left little 1st phalange.
        LeftLittleProximal = 36,
        //
        // 概要:
        //     This is the left little 2nd phalange.
        LeftLittleIntermediate = 37,
        //
        // 概要:
        //     This is the left little 3rd phalange.
        LeftLittleDistal = 38,
        //
        // 概要:
        //     This is the right thumb 1st phalange.
        RightThumbProximal = 39,
        //
        // 概要:
        //     This is the right thumb 2nd phalange.
        RightThumbIntermediate = 40,
        //
        // 概要:
        //     This is the right thumb 3rd phalange.
        RightThumbDistal = 41,
        //
        // 概要:
        //     This is the right index 1st phalange.
        RightIndexProximal = 42,
        //
        // 概要:
        //     This is the right index 2nd phalange.
        RightIndexIntermediate = 43,
        //
        // 概要:
        //     This is the right index 3rd phalange.
        RightIndexDistal = 44,
        //
        // 概要:
        //     This is the right middle 1st phalange.
        RightMiddleProximal = 45,
        //
        // 概要:
        //     This is the right middle 2nd phalange.
        RightMiddleIntermediate = 46,
        //
        // 概要:
        //     This is the right middle 3rd phalange.
        RightMiddleDistal = 47,
        //
        // 概要:
        //     This is the right ring 1st phalange.
        RightRingProximal = 48,
        //
        // 概要:
        //     This is the right ring 2nd phalange.
        RightRingIntermediate = 49,
        //
        // 概要:
        //     This is the right ring 3rd phalange.
        RightRingDistal = 50,
        //
        // 概要:
        //     This is the right little 1st phalange.
        RightLittleProximal = 51,
        //
        // 概要:
        //     This is the right little 2nd phalange.
        RightLittleIntermediate = 52,
        //
        // 概要:
        //     This is the right little 3rd phalange.
        RightLittleDistal = 53,
        //
        // 概要:
        //     This is the Upper Chest bone.
        UpperChest = 54,
        //
        // 概要:
        //     This is the Last bone index delimiter.
        LastBone = 55
    }
}

이상을 바탕으로 각각을 부착할 필요가 있다는 것을 알 수 있다.
구체적으로는, 이하의 기사를 참고로 해, 실장했다.



일단 여기까지 실행할 수 있다.

좋은 웹페이지 즐겨찾기