簡體   English   中英

如何使用Tango和Unity從屏幕空間獲取深度點

[英]How to get a depth point from screen space using Tango and Unity

我想使用Unity Tango集成中的點雲在視口中心找到世界空間中的一個點。 然后,我將在其中放置“標線”類型的GameObject。

我的代碼基於C API示例中的point_to_point 示例

TangoSupport_getDepthAtPointNearestNeighbor是可以執行我所需功能的函數,但它需要一個pose參數。

C API表示這是:

The pose of the point cloud relative to the color camera used to obtain uv_coordinates.

Unity API表示這是:

Transformation matrix of the color camera with respect to the Unity World frame.

point_to_point示例調用:

TangoSupport_calculateRelativePose(
  color_image_timestamp, TANGO_COORDINATE_FRAME_CAMERA_COLOR,
  point_cloud->timestamp, TANGO_COORDINATE_FRAME_CAMERA_DEPTH,
  &pose_color_camera_T_depth_camera);

找到姿勢。

但這在Unity集成中不存在。 我試過像這樣手動添加它:

internal const string TANGO_SUPPORT_UNITY_DLL = "tango_support_api";
[DllImport(TANGO_SUPPORT_UNITY_DLL)]
private static extern int TangoSupport_calculateRelativePose(
    double base_timestamp, TangoEnums.TangoCoordinateFrameType base_frame,
    double target_timestamp, TangoEnums.TangoCoordinateFrameType target_frame,
    out TangoPoseData base_frame_T_target_frame);

並這樣稱呼它:

TangoPoseData poseData = new TangoPosedata();

TangoSupport_calculateRelativePose(
    pointCloudData.m_timestamp,
    TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_CAMERA_COLOR,
    pointCloudData.m_timestamp,
    TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_CAMERA_DEPTH,
    out poseData
);

但這在我調用時給了我一個空引用。 我是否采取正確的方法? 是否TangoSupport_calculateRelativePose在tango_support_api庫中存在附帶的統一整合?

Unity包中有一個point_to_point示例。 但是使用C#函數FindClosestPoint ,它只是遍歷點雲中的每個點,這不是可用的解決方案。

當前, FindClosestPoint無法通過Unity使用。 最接近的替代是PointCloud預制中的FindPlane函數。 這里查看功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM