본문 바로가기
유니티

유니티) kinect v2 gesture builder 사용해서 제스쳐 인식하기

by zephyrus 2022. 11. 13.

목록

  1. 제스쳐 녹화하기
  2. 제스쳐 빌드하기
  3. 유니티에 넣어서 확인하기

1. 제스쳐 녹화하기
https://www.microsoft.com/en-us/download/details.aspx?id=44561

 

Download Kinect for Windows SDK 2.0 from Official Microsoft Download Center

Important! Selecting a language below will dynamically change the complete page content to that language. Download The Kinect for Windows Software Development Kit (SDK) 2.0 enables developers to create applications that support gesture and voice recognitio

www.microsoft.com

위 링크에서 sdk를 다운받습니다.
다운이 다 되면 kinect studio를 실행시킵니다.

pc에 키넥트를 연결한 상태에서 상단 카테고리에서 record를 클릭하여 녹화를 진행합니다.
한 동작을 여러번 반복해서 동작의 버전을 다양하게 해주는게 좋습니다.



2. 제스쳐 빌드하기

이제 녹화된 동작을 처리하여 제스쳐파일로 바꿔줄 것입니다.

visual gesture builder를 켜줍니다.
file > new solution 새 솔루션을 생성합니다.

생성된 솔루션 우클릭하여 creat new project을 클릭해 새 프로젝트를 생성합니다.

프로젝트 생성시 해당 프로젝트를 설정해줄 수 있습니다.

Gesture Name : 제스쳐명
Gesture Type : discrete = 단일동작, continuous = 연속동작
Body Side : 몸통 좌우 설정
Training Settings : 등록할 제스쳐 몸통 설정

training settings를 고르면 이렇게 인식될 몸통만 표시됩니다.

설정을 다하면 프로젝트를 생성하게됩니다.

생성된 프로젝트를 우클릭하여 add clip을 선택합니다.
키넥트 스튜디오를 통해 녹화된 xef 파일을 가져옵니다.

불러온 클립을 클릭하면 우측 화면에서 동작 영상을 확인할 수 있습니다.

해당 영상을 보면서 내가 등록하고자 하는 제스쳐 부분에서
shift를 클릭한 후 드래그 하여 영역설정을 해줍니다.
그 후 우측에 변수의 상태를 true로 입력하여 해당 제스쳐상태를 입력하여 동작을 구분해줍니다.

동작인식의 원활함을 위해 여러 버전으로 진행한 동작을 전부 구분해줍니다.
다 되었다면 동영상 클립명(프로젝트 아래 불러온 clip)을 우클릭 > save 하여 저장합니다.

그후 프로젝트를 우클릭하고 build 를 눌러 해당 파일을 gba로 빌드합니다.

저장해주면 gba파일로 저장이됩니다.

저장중에 빌드 진행상황이 나오고
success가 뜨면 성공적으로 빌드된 것입니다.



3. 유니티에서 사용하기
https://assetstore.unity.com/packages/3d/characters/kinect-v2-examples-with-ms-sdk-18708
위 링크에서 키넥트 에셋을 다운받습니다.

제스쳐 데모씬을 통해 gba파일을 어떻게 사용하는지 확인할 수 있습니다.
visualGestureDemo를 켜줍니다.

씬을 열면 kinectController를 클릭하면 키넥트 관련 스크립트를 볼 수 있습니다.
kinect manager는 전반적인 키넥트 세팅을 할 수 있고 모든 데모에서 공동으로 사용합니다.
visual gesture manager를 보면 비주얼 제스쳐 관련 내용을 볼 수 있습니다.

이 함수에서 제스쳐 등록을 확인할 수 있습니다.

초기화시 등록된 제스처 파일를 읽어서 제스처데이터로 저장하고 있습니다.

업데이트 함수에서 불러지는 함수를 확인해보면 실시간으로 동작 인식을 찾는걸 확인할수 있습니다.

현재 인식된 사람의 동작과 제스쳐 데이터를 비교하여

인식상태를 ui로 표시하는 함수로 전달하는것을 확인할 수 있습니다.