2021. 6. 29. 18:04ㆍDevelopment

Unity와 Azure Kinect DK를 동시에 사용해야 하는 상황이라면 많은 분들이 Unity 스크립트 언어에 맞춰 C#으로 개발을 진행할 것입니다. 일반적인 C# 프로젝트에서는 위와 같이 Azure Kinect Body Tracking SDK와 관련된 NuGet 패키지들을 설치함으로써 Azure Kinect DK를 손쉽게 활용할 수 있습니다. 그렇다면 이 방법으로 Unity에서 Azure Kinect DK를 바로 쓸 수 있을까요?

하지만 평소에 하던 대로 패키지를 설치하더라도 위와 같이 해당 패키지의 네임스페이스를 인식하지 못해 Unity에서 컴파일 에러가 발생하는 모습을 확인할 수 있습니다. 다행스럽게도, Microsoft에서 직접 만든 Azure Kinect의 여러 sample이 담긴 GitHub 레포지토리에서 이에 대한 가이드를 찾을 수 있었습니다. 이번 글에서는 이 가이드에서 제시하는 방법을 따라가 보고, 그 과정에서 겪을 수 있는 여러 가지 시행착오에 대해 소개해드리겠습니다.

우선 C# 프로젝트를 Visual Studio로 열어준 뒤 NuGet 패키지 관리자를 통해 필요한 4개의 패키지를 설치합니다. 제가 설치한 버전은 Microsoft.Azure.Kinect.Sensor가 1.4.1, Microsoft.Azure.Kinect.BodyTracking이 1.0.1이었습니다. 설치가 완료되면 위와 같이 Unity 프로젝트 폴더의 Packages라는 폴더 안에 4개의 패키지가 위치하게 되는 것을 확인할 수 있습니다.

이제 공식 사이트에 접속하여 NuGet 패키지가 아닌 Windows 패키지 버전의 Body Tracking SDK를 설치해줍니다. 버전은 현재 최신 버전인 1.1.0으로 설치하라고 하니 MSI 파일을 다운로드 받아 설치를 진행해줍니다. 설치 경로는 다음 단계를 위해서 기본 설정 그대로 놔두고 설치를 진행하시면 됩니다.
여기서 헷갈렸던 게 Body Tracking SDK의 NuGet 패키지가 1.0.1 버전이었기 때문에 Windows 패키지도 1.0.1로 설치해야 하는 게 아닌가 하는 거였는데, 결과만 이야기하자면 시키는 대로 1.1.0 버전을 설치하면 됩니다. 그렇지 않으면 시키는 대로 다 하더라도 컴파일 에러를 해결할 수 없게 됩니다.

다음은 Unity에서 Body Tracking SDK를 사용하기 위해 필요한 파일들을 NuGet 패키지와 스탠드 얼론 패키지에서 가져올 차례입니다. 이 때 옮겨야 할 파일이 많다 보니 해당 레포지토리에서는 필요한 파일들을 손쉽게 복사할 수 있는 batch 파일을 제공해줍니다. Body Tracking SDK를 설치할 때 설치 경로를 바꾸지 않았다면 이 파일을 다운로드 받으시던지, 내용물을 메모장으로 복사하여 .bat 확장자로 저장하던지 한 뒤 다루고 있는 Unity 프로젝트 폴더에서 실행시킵니다. 만약 바꾸셨다면 2번째 줄을 바꾼 경로에 맞춰 수정하시면 됩니다.
using UnityEngine;
using Microsoft.Azure.Kinect.Sensor;
public class Kinect : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
Debug.Log($"Number of devices: {Device.GetInstalledCount()}");
}
// Update is called once per frame
void Update()
{
}
}
이제 모든 준비가 완료되었으니 Unity에서 Azure Kinect DK가 제대로 인식되는지 확인할 차례입니다. 저는 한 대의 Azure Kinect DK를 연결한 뒤 위와 같은 코드로 장치의 개수가 하나로 제대로 인식이 되는지 확인해봤습니다.

Play 버튼을 눌러 스크립트를 실행시켜 본 결과, 컴파일 에러가 더 이상 일어나지 않았고 콘솔에 우리가 원하던 결과도 제대로 나온다는 것을 확인할 수 있었습니다. 이는 Unity에서 Azure Kinect를 제대로 인식하게 되었다는 것이므로 이 다음부터는 원래 C# 프로젝트에서 하던 것처럼 개발을 진행하면 됩니다.