Это связано с моим предыдущим вопросом . Я отправляю новый вопрос, чтобы попытаться объяснить ситуацию лучше.
Я размещаю маркерные объекты на модели, используя данные, полученные из исследований дронов. У меня есть доступ к высокоточным данным GPS, а также к данным о вращении Омега / Фи / Каппа.
Я пытаюсь использовать расширение Autodesk.Geolocation
для преобразования данных lon / lat / alt в пространство просмотра.
Все модели изначально были созданы в Revit.
Когда я использую расширение Geolocation
, создается впечатление, что refPointLMV
и GlobalOffset
не учитываются правильно.
Вот пример:
![enter image description here](https://i.stack.imgur.com/teyEq.png)
Как вы можете видеть, выбранная точка [0] на модели находится далеко от реальной GPS координаты. Кроме того, refPointLMV
имеет огромные значения.
Нечто подобное происходит, когда я беру некоторые данные lon / lat / alt с фотографии дрона. Данные GPS беспилотника будут близки к модели positionLL84
, например (4.586577106, 51.626037158, 49.095). Однако, когда я делаю Geolocation.lonLatToLMV(4.586577106, 51.626037158, 49.095)
, я получаю результат за кадром.
У нас уже был открыт запрос в службу поддержки Autodesk, связанный с этим открытием более двух месяцев, но он не имел большого успеха там. Они сказали, что команда инженеров слишком занята, чтобы поработать над этим, и рекомендовали попытаться исправить ошибку на нашей стороне. Поддержка ref 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);
Проблема в том, что мы тестируем одну модель, и это явно не надежное решение, которое мы можем ожидать, чтобы работать со всеми будущими моделями и данными беспилотников, которые мы бросаем в него.
Сколько времени понадобится инженерной команде, чтобы это исправить? Или они могут это исправить?