툴/유니티

Unity + Azure Kinect Body Tracking 애저키넥트 바디트래킹

스튜디오 오버그래픽스 2023. 8. 2. 00:45

윈도우 애저키넥트 SDK

https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/usage.md

 

윈도우 애저키넥트 바디트랙킹 SDK

https://docs.microsoft.com/ko-kr/azure/kinect-dk/body-sdk-download

 

Visual C++ Redistributable for Visual Studio 2015

https://www.microsoft.com/en-us/download/details.aspx?id=48145 

 

공식 마이크로소프트 애저키넥트 샘플

https://github.com/microsoft/Azure-Kinect-Samples

 

공식 유니티 애저키넥트 바디트래킹 샘플 사용방법

https://github.com/microsoft/Azure-Kinect-Samples/tree/master/body-tracking-samples/sample_unity_bodytracking

 

Visual C++ Redistributable for Visual Studio 2015

https://www.microsoft.com/en-us/download/details.aspx?id=48145 

 

*Windows Azure Kinect SDK 1.4.1 버전 설치

*Windows Azure Kinect Body Tracking 1.1.2 버전 설치

*Visual C++ Redistributable for Visual Studio 2015 설치

*Microsoft Github Sample 다운받기

*Unity 2022.3.4(URP)로 확인.


설치 방법

 

https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/docs/usage.md

위 링크로 가서 Azure Kinect SDK 1.4.1버전 설치

 

 

 

 

 

 

https://docs.microsoft.com/ko-kr/azure/kinect-dk/body-sdk-download

위 링크로 가서 Azure Kinect BodyTracking SDK 1.1.2 버전 설치

 

 

 

 

 

 

https://www.microsoft.com/en-us/download/details.aspx?id=48145 

위 링크로 가서 Visual C++ Redistributable for Visual Studio 2015 설치(이미 있으면 설치 X)

 

 

 

 

 

 

https://github.com/microsoft/Azure-Kinect-Samples

위 링크로 가서 샘플 다운로드

 

 

 

 

 

 

유니티 새 프로젝트 생성(2022.3.4 URP)하고 위에서 다운 받았던 샘플

Azure-Kinect-Samples-master\Azure-Kinect-Samples-master\body-tracking-samples\sample_unity_bodytracking

위 경로에서 ProjectSettings만 빼고 전체 다 복사해서 새로 만든 유니티 프로젝트에 붙여넣기

 

 

 

 

 

유니티 에디터로 가서 아무 C# 스크립트 클릭해서 비주얼 스튜디오 열어주고

도구 - Nuget 패키지 관리자 - 패키지 관리자 콘솔 창 열고(복원 해야할 경우 복원 버튼 클릭)

Update-Package -reinstall 입력하고 엔터

그러면 자동 설치 시작

 

 

 

 

 

 

생성한 유니티 프로젝트 경로로 가서 "MoveLibraryFiles.bat"파일 실행

애저키넥트 SDK가 설치된 경로로 가서 자동으로 파일 가져와서 유니티 프로젝트에 옮겨옴.

(Assets폴더가 있는 경로와 Assets/Plugins 하위 경로에 필요한 dll파일들이 자동으로 옮겨짐)

 

 

 

 

 

생성한 유니티 프로젝트 경로에 생긴 directml.dll 파일을 복사 해서 사용 중인 유니티 에디터 버전이 설치된 경로에 붙여넣기

ex) C:\Program Files\Unity\Hub\Editor\2022.3.4f1\Editor 이 경로에 directml.dll파일 복사 붙여넣기

 

 

 

 

 

 

유니티 에디터로 돌아가서 SkeletalTrackingProvider.cs 스크립트 열고 46번째줄

TrackerProcessingMode.Gpu로 되어 있는지 체크

 

 

 

 

 

Assets/Scene폴더에 있는 "Kinect4AzureSampleScene" 씬 열기

머테리얼이 핑크색으로 나오는 경우(URP나 HDRP로 진행하는 경우 해당)

Project창 검색에 t:material을 검색해서 이 프로젝트에 있는 모든 머테리얼을 선택하고

Edit - Rendering - Materials - Convert Selected Built in Material to URP 클릭해서 깨진 머테리얼 다 복구

(HDRP의 경우 위 옵션이 약간 다름)

 

 

 

 

에디터에서 플레이 해서 바디 트래킹 잘 작동되는거 확인

 

 

 

 

 

 

출처 - https://www.mdpi.com/1424-8220/20/21/6149

위 사진과 같이 joint 트래킹 됌

 

 

 

 

 

 

 

빌드 해서 사용할 경우 그냥 빌드된 .exe를 실행하면 애저키넥트 연결을 못함.

위에서 유니티 프로젝트 경로에서 "MoveLibraryFile.bat" 를 실행하고 생긴 "ONNX"파일들과 "DirectML.dll"파일을

유니티 빌드한 .exe가 있는 경로에 복사 해서 같이 넣어줘야됌.

 

 

 

 

 

 

빌드한 응용 프로그램을 종료할때는 별도로 애저키넥트와의 연결을 끊는 명령어를 실행하고 종료해야함.(에디터는 플레이 종료 될때 자동으로 애저키넥트와 연결 끊음)

그렇지 않으면 응용 프로그램 종료도 잘 안되고, 응용 프로그램이 종료되도 애저키넥트는 계속 연결중인 상태로 불이 들어와 있음.

Main.cs 스크립트에 있는 OnApplicationQuit함수에 있는 내용인 "m_skeletalTrackingProvider.Dispose();"가 실행되면 됌.

 

 

 

 

 

 

별도 추가 내용

Azure Kinect Body Tracking은 연산하는 모드가 여러개가 있음.

SkeletalTrackingProvider.cs 에서 46번째줄에 TrackerProcessingMode에서 바꿀 수 있으며 위에서 사용한 방식은 기본 값인 GPU옵션.

나머지 CPU,CUDA, DirectML,TensorRT를 사용하려면 설치 방법이 다 다름

https://github.com/microsoft/Azure-Kinect-Samples/tree/master/body-tracking-samples/sample_unity_bodytracking

위 링크에 자세히 나옴.

 

 

 

한글 경로 이슈

유니티 프로젝트나 실행 파일의 경로에 한글이 있으면 실행이 안됌.

ExecutionEngineException: String conversion error: Illegal byte sequence encounted in the input.
(wrapper native-to-managed) Microsoft.Azure.Kinect.Sensor.Logger.OnDebugMessage(intptr,Microsoft.Azure.Kinect.Sensor.LogLevel,intptr,int,intptr)
System.Object:__icall_wrapper_ves_icall_string_new_wrapper(IntPtr)

위와 같이 오류 나옴.

윈도우 운영체제 설정에 따라 바탕화면 경로가 'Desktop'이 아니라 '바탕화면'이라고 한글로 뜨는 경우도 오류 남.

 

 

 

스튜디오 오버그래픽스
정준희 Technical Artist
ovgrps@gmail.com

 

 


에셋 스토어 Azure Kinect 관련 샘플

 

https://assetstore.unity.com/packages/tools/integration/azure-kinect-examples-for-unity-149700?aid=1101lvqJ5

 

Azure Kinect Examples for Unity | 기능 통합 | Unity Asset Store

Use the Azure Kinect Examples for Unity from RF Solutions on your next project. Find this integration tool & more on the Unity Asset Store.

assetstore.unity.com

 

https://assetstore.unity.com/packages/tools/integration/azure-kinect-for-unity3d-camera-api-body-tracking-api-157915?aid=1101lvqJ5

 

Azure Kinect for Unity3D (Camera API + Body Tracking API) | 기능 통합 | Unity Asset Store

Use the Azure Kinect for Unity3D (Camera API + Body Tracking API) from LightBuzz on your next project. Find this integration tool & more on the Unity Asset Store.

assetstore.unity.com