【发布时间】:2020-05-16 00:57:47
【问题描述】:
这与my previous question 有关。我发布了一个新问题,试图更好地解释这种情况。
我正在使用从无人机调查中获取的数据将标记对象放置在模型上。我可以访问高精度 GPS 数据以及 omega/phi/kappa 旋转数据。
我正在尝试使用 Autodesk.Geolocation 扩展名将 lon/lat/alt 数据转换为查看器空间。
所有模型最初都是在 Revit 中创建的。
当我使用 Geolocation 扩展时,似乎没有正确考虑 refPointLMV 和 GlobalOffset。
这是一个例子:
如您所见,模型上的选定点 [0] 与真正的 GPS 坐标相去甚远。此外,refPointLMV 具有巨大的价值。
当我从无人机照片中获取一些 lon/lat/alt 数据时,也会发生类似的情况。无人机 GPS 数据将接近模型positionLL84,例如(4.586577106、51.626037158、49.095)。但是,当我执行Geolocation.lonLatToLMV(4.586577106, 51.626037158, 49.095) 时,我得到的结果远离屏幕。
两个多月以来,我们已经向 Autodesk 提出了与此开放相关的支持查询,但没有取得太大的成功。他们说工程团队太忙了,无法解决这个问题,并建议尝试修复我们这边的错误。支持参考 LMV-5261。
我已经能够使用以下代码将Geolocation.lonLatToLMV 的结果带入查看器空间:
const gpsPosition = new THREE.Vector3(
longitude,
latitude,
altitude,
);
const position = viewer
.getExtension('Autodesk.Geolocation')
.lonLatToLmv(gpsPosition);
const data = viewer.model.getData();
const globalOffset = data.globalOffset;
const refPointTransform = data.refPointTransform;
// applying the transform
position.add(globalOffset)
position.applyMatrix4(refPointTransform);
// HACK: after applying the above transforms, a final
// rotation of -45 degrees is required to move the points into position
// once this has been done, the locations match up exactly to photos.
// Seems like a weird hack, but I've tested with over 20 drone photos, they all match up.
const quaterion = new THREE.Quaternion().setFromEuler(
new THREE.Euler(0, 0, -Math.PI / 4),
);
position.applyQuaternion(quaterion);
这里的问题是我们正在使用单个模型进行测试,这显然不是一个可靠的解决方案,我们可以期望它可以处理我们提供给它的所有未来模型和无人机数据。
工程团队可能需要多长时间才能解决此问题?还是他们可能会解决这个问题?
【问题讨论】:
-
嗨,Lewy,我也对使用 Forge 和 Revit 模型处理 GPS 坐标感兴趣。我不清楚下面的回复建议做什么。由于它被接受为有效答案,我认为它正在解决 pb.是否假设修改原始 Revit 模型并重新运行 Forge 翻译以获得正确的结果?
标签: autodesk-forge autodesk-viewer