[英]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.