我在开发 Tango 应用程序时遇到以下问题,不确定我是否走在正确的轨道上。
我想要达到的目标:
- 用户拍照。在后台,应用程序保存以持久化当前的点云和姿势。
- 服务器正在获取该图像并在幕后进行一些魔术处理并将(x,y)坐标发送回应用程序(异步且与当前 Tango 会话无关)。
- 重新启动应用程序,开始一个新的探戈会话,并使用点云和姿势的持久副本在 (x,y) 处显示一个 3d 对象。
我希望我能够在以下算法中使用这些参数 - (x,y)、点云和 Pose,并获得一个 Pose,它是 RajawaliRenderer 知道如何渲染的 Rajawali 对象。
探戈初始化是根据以下坐标系:
TANGO_WORLD_BASE_COORDINATE_FRAME = new TangoCoordinateFramePair(
TangoPoseData.COORDINATE_FRAME_AREA_DESCRIPTION,
TangoPoseData.COORDINATE_FRAME_DEVICE
);
使用交点计划拟合 -
private void convertByIntersectionPoint(float x, float y, TangoPointCloudData tangoPointCloudData, TangoPoseData devicePose, TangoPoseData colorTdepthPose) { if (tangoPointCloudData != null) { TangoSupport.IntersectionPointPlaneModelPair intersectionPointPlaneModelPair = TangoSupport.fitPlaneModelNearPoint(tangoPointCloudData, colorTdepthPose, x, y); if (devicePose.statusCode == TangoPoseData.POSE_VALID) { mRenderer.updateObjectPose( intersectionPointPlaneModelPair.intersectionPoint, intersectionPointPlaneModelPair.planeModel, devicePose); } } }
它在 TangoSupport.fitPlaneModelNearPoint 上引发 TangoErrorException。
据我了解,fitPlaneModelNearPoint 方法应该执行不依赖于当前 Tango 会话的纯算法,但我无法确定,因为我没有它的实现。
任何帮助将不胜感激。