【发布时间】: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