【发布时间】:2016-03-27 15:42:11
【问题描述】:
我只得到了房间的部分点云。房间的其他部分根本不会被渲染。它只看到左边的一部分。我在 Unity 中使用点云预制件。当我使用其中一个应用程序(例如 Room Scanner 或 Explorer)时,我会得到房间的其余部分。我打算为我的应用程序修改预制件,但到目前为止,我的看法有限。我在 64 上的 Windows 10 上使用 Unity 5.3.3。
【问题讨论】:
我只得到了房间的部分点云。房间的其他部分根本不会被渲染。它只看到左边的一部分。我在 Unity 中使用点云预制件。当我使用其中一个应用程序(例如 Room Scanner 或 Explorer)时,我会得到房间的其余部分。我打算为我的应用程序修改预制件,但到目前为止,我的看法有限。我在 64 上的 Windows 10 上使用 Unity 5.3.3。
【问题讨论】:
将统一相机设置为与深度相机框架对齐 所以对于矩阵 dTuc dTuc = imuTd.inverse * imuTdepth * depthTuc
double timestamp = 0.0;
TangoCoordinateFramePair pair;
TangoPoseData poseData = new TangoPoseData();
// Get the transformation of device frame with respect to IMU frame.
pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_IMU;
pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_DEVICE;
PoseProvider.GetPoseAtTime(poseData, timestamp, pair);
Matrix4x4 imuTd = poseData.ToMatrix4x4();
// Get the transformation of IMU frame with respect to depth camera frame.
pair.baseFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_IMU;
pair.targetFrame = TangoEnums.TangoCoordinateFrameType.TANGO_COORDINATE_FRAME_CAMERA_DEPTH;
PoseProvider.GetPoseAtTime(poseData, timestamp, pair);
Matrix4x4 imuTdepth = poseData.ToMatrix4x4();
// Get the transform of the Unity Camera frame with respect to the depth Camera frame.
Matrix4x4 depthTuc = new Matrix4x4();
depthTuc.SetColumn(0, new Vector4(1.0f, 0.0f, 0.0f, 0.0f));
depthTuc.SetColumn(1, new Vector4(0.0f, -1.0f, 0.0f, 0.0f));
depthTuc.SetColumn(2, new Vector4(0.0f, 0.0f, 1.0f, 0.0f));
depthTuc.SetColumn(3, new Vector4(0.0f, 0.0f, 0.0f, 1.0f));
m_dTuc = Matrix4x4.Inverse(imuTd) * imuTdepth * depthTuc;
【讨论】: