2016-07-31 1 views
0

포인트 클라우드 포인트에서 깊이 맵을 생성하고 누락 된 데이터를 채우기 위해 가장 가까운 색상 프레임을보고 싶습니다. OnDepthAvailable이 호출 될 때 생성하는 깊이 이미지를 생성 할 수 있으며 OnExperimentalTangoImageAvailable이 호출 될 때 TangoAR 통합 예제가 색상 프레임을 가져 오는 것을 볼 수 있습니다. 동기화 깊이 및 색상

은 TangoAR 화합 예에서입니다 :
/// <summary> 
/// This will be called when a new frame is available from the camera. 
/// 
/// The first scan-line of the color image is reserved for metadata instead of image pixels. 
/// </summary> 
/// <param name="cameraId">Camera identifier.</param> 
public void OnExperimentalTangoImageAvailable(TangoEnums.TangoCameraId cameraId) 
{ 
    if (cameraId == TangoEnums.TangoCameraId.TANGO_CAMERA_COLOR) 
    { 
     m_screenUpdateTime = VideoOverlayProvider.RenderLatestFrame(TangoEnums.TangoCameraId.TANGO_CAMERA_COLOR); 

     // Rendering the latest frame changes a bunch of OpenGL state. Ensure Unity knows the current OpenGL state. 
     GL.InvalidateState(); 
    } 
} 

그러나 나는 최신 프레임을 사용할 수없는, 바로 깊이 프레임 후 프레임을합니다.

가능한 한 가까이에 동기화 할 수 있습니까? C RBG 깊이 동기화 예제를 보면 나에게 도움이되지 못했습니다. 깊이와 색상이 동일한 카메라를 사용하며 동시에 (둘 다 4 컬러 프레임 당 1 깊이) 수행 할 수 없다는 것을 이해합니다.

+1

지도에 이미지를 저장할 수 있습니다. 그리고 타임 스탬프를 키와 컬러 이미지로 사용하십시오. 그러면 포인트 클라우드 타임 스탬프까지의 거리가 가장 짧은 이미지를 검색 할 수 있습니다. 그리고 너무 오래 된 이미지를 제거하고 메모리를 절약하기 위해 맵 크기를 20 이미지로 설정해야합니다. – bashbug

+0

Unity3D에서 SDK를 어떻게 작동 시켰습니까? 나를 위해 (그리고 내가 물어 본 다른 약 10 명) 데모는 약 30 초 후에 항상 충돌합니다. –

답변

2

이 문제에 대한 해결책은 여러 가지가 있습니다. 그 중 하나는 bashbug 제안이며 프레임을 버퍼링하고 가장 가까운 타임 스탬프를 기반으로 텍스처를 찾습니다.

내가 버퍼링을 필요로하지 않는 제안하고, 특정 유니티입니다 : 메쉬에

  1. 켭니다 PointCloud 렌더링, 특정 layerPointCloud 객체를 설정합니다.

  2. PointCloud는 쉐이더가 this doc에서 제안 사용 렌더링하지만, 포인트 클라우드는 컬러 버퍼에 렌더링하지 않도록 당신이 떨어져 color mask을 설정해야합니다.

  3. RenderTexture을 만들고합니다 (previous doc 제안 같이) depth format

  4. 으로 TangoARCamera 같은 극한 (투영 매트릭스)를 가진 카메라를 만들기 만 PointCloud의 층 렌더링. 이 카메라는 깊이 카메라입니다 (카메라는 PointCloud 만 렌더링합니다).

  5. 오프셋 카메라를 TangoARCamera 개체의 자식 개체로 설정합니다. 이렇게하면 카메라가 ARCamera와 동일한 동작 (위치 및 방향)을 갖게됩니다.

  6. RGBA 형식으로 다른 렌더링 텍스처를 만들고이 텍스처를 TangoARCamera에 할당하여 컬러 이미지를 얻습니다.

  7. 이제 깊이와 색상의 두 가지 질감이 있습니다. UnitySDK에서는 PointCloud 프리뷰가 실제로 월드 공간에서 프로젝트 포인트를 생성하고 TangoARCamera의 변환이 컬러 카메라 타임 스탬프를 기반으로 업데이트되기 때문에 Sync'ed가 보장됩니다.

관련 문제