Azure Kinect SDK(v1.1.0) 사용 시도(가져오기~Unity에서 사용)
입문
TMCN 주최Azure Kinect DK 터치회.에 참가하여 Azure Kinect DK의 실기를 만질 수 있습니다.
회의의 목표는 실제로 SDK를 사용하여 자신이 만든 코드를 이동하는 것이지만 무엇을 이동할 수 있기 때문에 잊지 않았을 때 기사로 정리되었다.아직 접할 기회가 없는 것 같아요.
구현 환경
다음 환경에서 해봤어요.
준비
Azure Kinect SDK 바이너리 파일을 다운로드하여 설치합니다.
SDK 구축
Unity에서 갑자기 하면 이 항목은 건너뛸 수 있지만 Windows Forms/WPF 버전의 샘플을 시도하고 싶으므로 우선 SDK 구축을 추천합니다.
C SDK 구축
C# 프로젝트(src\csharp\K4a.sln)를 구축할 때 C 로컬에서 구축한 바이너리 파일을 요청합니다.설치 프로그램의 바이너리 파일을 적절하게 설정해도 제거될 것 같지만, 적당한 설정을 잘 모르기 때문에 원본부터 구축합니다.
C SDK는 CMake의 구축입니다.그러나 Windows의 경우 Visual Studio의 CMake 지원 기능을 사용하여 CMake를 별도로 설치하지 않아도 Visual Studio에서만 구축할 수 있습니다.
(Visual Studio Installer의 단일 구성 요소 - 컴파일러, 빌드 도구 및 실행 시)
"Win-x64-Rlease-Ninja"는 C#Wrapper에서 참조하는 설정이므로 이를 구축 대상으로 하지만 다른 설정은 필요에 따라 적절하게 구축하십시오.
C#Wrapper 구축
"C++SDK 구축"이 완료되면 "src\csharp\K4a.sln"을 열어 구축할 수 있습니다.실수는 없을 겁니다.
C# 프로젝트는 컴파일할 때 로컬 DLL을 참조하지 않는 것이 원칙이기 때문에 C++ 구축이 없어도 어느 정도 구축을 통과할 수 있습니다.그러나 추가 작업을 포함하여 C++를 사용하여 구성해야 합니다.
Unity에서 사용
Unity에서 SDK에 포함된 C#Wrapper는 Unity에서 직접 사용할 수 있습니다.
이번에는 다음과 같은 설정을 해 보았다.
코드를 쓰다.
using UnityEngine;
using KinectSensor = Microsoft.Azure.Kinect.Sensor;
public class KinectCapture : MonoBehaviour
{
private KinectSensor.Device _device = null;
private void Awake()
{
_device = KinectSensor.Device.Open();
_device.StartCameras(new KinectSensor.DeviceConfiguration
{
ColorFormat = KinectSensor.ImageFormat.ColorBGRA32,
ColorResolution = KinectSensor.ColorResolution.r720p,
DepthMode = KinectSensor.DepthMode.NFOV_2x2Binned,
SynchronizedImagesOnly = true,
});
}
}
실행을 시도하면 Device를 얻을 수 있지만 Device.StartCameras가 실패했습니다."depthengine_1_0.dll을 로드할 수 없습니다."때문입니다.depthengine_1_0.dll은 k4a입니다.dll에서 불러온 것이기 때문에 Unity의 본 플러그인의 DLL 경로의 규칙이 아니라 Windows의 규칙에 따릅니다.그러니까 유니티 규칙을 따르는 k4a.dll과 같은 위치에 놓아도 로드되지 않습니다. 따라서 depthengine_1_0.dll의 의미가 없습니다.
번거롭기 때문에 설치된 SDK 바이너리 폴더 ("C:\Program Files\Azure Kinect SDK v1.1.0\sdk\windows-desktop\amd64\release\bin") 를 통해 문제를 해결했습니다.
(2019/8/10 추적)
수중에 실기가 없어서 확인할 수는 없지만 depthengine의 경로 문제는 GitHub에 대책이 있는 것 같습니다.
노력했지만 Depth 처리가 원활하지 않아...#TMCN#AzureKinect-TANY(@TANY_FMPMD)pic.twitter.com/P2LEhYqGCS
구현에서 카메라의 색과 깊이를 RenderTexture의 ARGB32와 R16, Shader 측으로 내보냅니다.
Depth는 Vertex Shader에서 값을 보고 Z 방향으로 이동하지만 Kinect에서 얻을 때의 처리가 맞지 않아 잘 반영되지 않습니다.나는 이 부근에서 조금만 더 시간이 있으면 처리할 수 있을 것이라고 생각한다.
끝내다
회의에서 접촉하는 시간은 제한되어 있지만 사전에 준비를 했기 때문에 아무것도 하지 않고 끝났다.
Unity에서 시도한 소감으로 C#Wrapper를 사용하면 기본적으로 Azure Kinect의 기능을 문제없이 사용할 수 있지만, C#Wrapper는 기능적으로 매우 낮은 수준의'CAPI를 거의 그대로 유지한다'는 정의에도 불구하고설치 자체가 잘 모르는 지루한 설치처럼 보여 기분이 좋지 않다.
호로라보 씨는 혼자서 C#Wrapper를 개발한 것 같지만, 여기는 간단하고 낭비되지 않는 설치용 C#가 된 것 같습니다. 개발된 상황은 이쪽을 기초로 하는 것이 좋습니다.
어쨌든 실기가 없으면 아무것도 할 수 없으니 일본에서 일찍 정상적으로 샀으면 좋겠어요.
Reference
이 문제에 관하여(Azure Kinect SDK(v1.1.0) 사용 시도(가져오기~Unity에서 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tan-y/items/a8717bb2161e1fcb9bbb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)