【问题标题】:How to get a depth point from screen space using Tango and Unity如何使用 Tango 和 Unity 从屏幕空间获取深度点
【发布时间】:2017-01-10 08:40:52
【问题描述】:

我想使用 Unity Tango 集成中的点云在视口中心找到世界空间中的一个点。然后我会在那里放置一个“标线”类型的游戏对象。

我的代码基于 C API examples 中的 point_to_point 示例。

TangoSupport_getDepthAtPointNearestNeighbor 是我需要的函数,但它需要一个姿势参数。

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
);

但是当我调用它时,这给了我一个空 ref。我是否采取了正确的方法? TangoSupport_calculateRelativePose 是否存在于 Unity 集成附带的 tango_support_api 库中?

Unity 包中有一个 point_to_point 示例。但是使用了一个 C# 函数FindClosestPoint,它只是遍历点云中的每个点,这不是一个可用的解决方案。

【问题讨论】:

    标签: c# unity3d google-project-tango


    【解决方案1】:

    目前,FindClosestPoint 无法通过 Unity 使用。最接近的替换是 PointCloud 预制件中的 FindPlane 函数。见函数here

    【讨论】:

    • 来源中的评论是否准确? “这个功能很慢,因为它会查看点云中的每一个点”。它与FitPlaneModelNearClick 上的文档不同。 FindClosestPoint 显式循环遍历每个点。
    • 正确。 Unity 中的FindClosestPoint 函数确实会遍历所有点。但是,Unity 中的 FindPlane 函数在后台调用了 C 支持库的 FitPlaneModelNearClick
    • 我的意思是FitPlaneModelNearClick 函数也有相同的注释。我想知道它调用FitPlaneModelNearClick 是否真的很慢,或者该评论是否是复制/粘贴错误?
    • FitPlaneModelNearClick 不会遍历所有点。但它可能比FindCloestPoint 慢。它在引擎盖下安装了一个 RANSAC 飞机。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 2014-12-21
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多