Панорамирование относительно текущего вида с фиксированным FlyToSpeed ​​с GoogleEarth

Я пытаюсь панорамировать Google Планета Земля относительно текущего представления с помощью подключаемого модуля GE в C# (Interop.GEPlugin.dll), как описано в документации ( https://developers.google.com/earth/documentation/camera_control), с фиксированной FlyToSpeed.

При установке параметра FlyToSpeed ​​на SPEED_TELEPORT все работает нормально, как и ожидалось:

ge.getOptions().setFlyToSpeed(ge.SPEED_TELEPORT);
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE)
lookAt.setLongitude(lookAt.getLongitude() + 1);
ge.getView().setAbstractView(lookAt); // Works as expected

При установке FlyToSpeed ​​на определенное число, панорамирование нарушается при увеличении масштаба:

ge.getOptions().setFlyToSpeed(3);
var lookAt = ge.getView().copyAsLookAt(ge.ALTITUDE_ABSOLUTE)
lookAt.setLongitude(lookAt.getLongitude() + 1);
ge.getView().setAbstractView(lookAt); // why the view zooms out while panning?

Если бы у кого-то была идея или подход, я был бы очень счастлив. Спасибо заранее за вашу помощь.

1 ответ

Решение
why does the view zoom out while panning?

Это не ошибка, это поведение по умолчанию.

Если скорость полета настроена на что-то другое, чем SPEED_TELEPORT плагин уменьшит масштаб до середины движения, затем увеличит масштаб до конца в циклическом движении.

AFAIK нет никакого способа контролировать это, кроме скорости, это происходит.

Если вы хотите реализовать "полет на фиксированную высоту / расстояние", вы можете сделать это довольно легко. Обычный способ - оставить скорость на SPEED_TELEPORT (чтобы удалить анимированное зацикливание), затем перемещать камеру вручную пошаговыми шагами через событие frameEnd.

Посмотрите на этот пример плавной анимации камеры с помощью frameEnd - я уверен, что вы можете легко адаптировать ее к вашим потребностям (сверху вниз, фиксированная высота и т. Д.).

Другие вопросы по тегам