Вопросы и ответы
Эта статья призвана помочь с вопросами, возникающими при использовании инструмента генерации ландшафта Sandworm.
Есть ряд общих советов , которые могут быть полезны для общего понимания:
-
Откройте консоль редактора (Windows -> Console). Если что-то идет не так, консольное сообщение может быть полезно для объяснения ситуации.
Пример ошибок в консоли - Если вы предполагаете, что в данных высот есть некоторые проблемы, вы можете включить режим отладки для проверки: Rendering Debug -> Opacity World Normal.
- Не беспокойтесь по поводу количества треугольников в ObjectLandscapeTerrain. Этот объект был спроектирован так, чтобы миллионы полигонов не сильно влияли на частоту кадров.
- Очистите кэш прежде чем вы начнете генерацию ландшафта: нажмите кнопку рядом с адресной строкой кеша в нижнем левом углу окна Sandworm.
В чем разница между ObjectTerrainGlobal и ObjectLandscapeTerrain?
В настоящее время в UNIGINE есть два объекта, которые используются для ландшафта: ObjectTerrainGlobal, который давно используется, и сравнительно недавно представленный ObjectLandscapeTerrain, который имеет множество улучшений.
Эти два объекта ландшафта можно создать с помощью инструмента Sandworm.
Инструмент Sandworm, как и ObjectLandscapeTerrain, был разработан для решения накопившихся за годы проблем и расширения функционала.
Где взять геоданные?
Как правило, доступ к частным серверам TMS платный, однако существуют бесплатные источники данных, поддерживаемые за счет пожертвований. Если вы не хотите искать сами, можете проверить список здесь . Имейте в виду, что каждый сервер имеет свои особенности, и проверяйте информацию в описании.
Высоты
Например, пожно попробовать сервис mapbox. Зарегистрируйтесь, чтобы получить токен и доступ, более подробная информация на этой странице.
Бесплатный доступ ограничивает количество запросов в минуту, но это не влияет на рабочий процесс в целом и достаточно, чтобы получить общее представление.
Как только вы зарегистрируетесь, вы получите токен, представляющий собой строку различных символов. Добавьте этот токен к следующему URL-адресу после знака равенства (=): https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=YOUR_ACCESS_TOKEN и используйте этот URL-адрес в Sandworm для получения данных для соответствующего уровня.
Снимки
Вот пример сервера снимков TMS, который вы можете использовать для общего обзора:
- http://a.tile.openstreetmap.org/{z}/{x}/{y}.png — топографические данные OSM с легендой
Векторы
В качестве бесплатного источника векторных данных для общего понимания можно рассмотреть https://www.openstreetmap.org и использовать https://extract.bbbike.org/ как аггрегатор для них.
Упомянутые ссылки и источники предоставляются для получения общего представления. Вы можете использовать их и документацию Sandworm, если у вас нет под рукой данных с географической привязкой. Экспорт данных из сторонних инструментов сам по себе является огромной темой для исследований и займет гораздо больше времени, чем работа с нашим инструментом.
Какую проекцию выбрать, чтобы искажение поверхности было минимальным?
К сожалению, подходящей универсальной проекции не существует, потому что каждая проекция представляет собой плоское представление криволинейной области, и чем дальше точка находится от центра (начала) проекции, тем больше искажение данных. Вы можете найти больше на Википедии или поискать другие объяснения по проекциям. Конечную проекцию следует выбирать на основе имеющихся исходных данных или требований проекта.
Вы можете использовать https://epsg.org/, чтобы найти наиболее подходящую проекцию с минимальными искажениями для выбранной области.
Как использовать https://epsg.org/:
-
Перейдите к EPSG Dataset -> Map Search:
Если на сайте не отображается карта, возможно следует отключить блокировку рекламы или использовать VPN. -
Установите границы области и нажмите Search. Полученную таблицу отсортируйте по типу (нажмите на заголовок TYPE) и выберите один из источников данных, помеченный как Projected.
Опять же, для начала можно использовать EPSG:3857 — это проекция, широко используемая такими сервисами, как Google, OpenStreetMap, Navitel и т.п.
Чем детальнее тайлы, тем больше времени требуется для их загрузки. Всплывающее окно Generating Preview даст вам подсказку — оно отображается в правом нижнем углу Sandworm во время загрузки данных. Кроме того, в консоли редактора появится сообщение типа "ImportCacheTile 465.162000 ms" при загрузке тайла.
Мы рекомендуем сначала попробовать с низкими значениями Zoom. Это даст вам общее представление о данных, которые вы добавляете, затем вы можете увеличить значение Zoom и нажать Reimport. Чем выше значение Zoom, тем детальнее данные (и тем больше времени требуется для загрузки с сервера). Если данных слишком много, вы увидите уведомление.
Иногда соседние тайлы бывают разного цвета. Есть ли обходной путь для этого?
Это может произойти, когда вы берете данные с серверов TMS. Более качественные данные обычно стоят денег.
Вы можете попробовать изменить Zoom для определенной области. Еще одно решение — делать вставки из других источников TMS: например, вы генерируете всю область с Zoom = 10, а для проблемной области — создаете еще один слой, используете для него другой источник и устанавливаете Zoom = 14 (данные значения масштабирования — это просто например, попробуйте свои собственные значения).
Неверный результат генерации. / Сгенерирована только часть области.
Убедитесь, что конечная проекция установлена правильно.
Если данные находятся за пределами выбранной конечной проекции, они не будут использоваться для генерации ландшафта — будет сгенерирована только та часть, которая находится внутри. Соответствующее сообщение также будет показано в консоли редактора.
Быстрая проверка: повторно сгенерируйте проект, не определяя Export Area (выберите опцию Export Area и нажмите кнопку Press to Clear на вкладке «Параметры»). Sandworm будет генерировать только те области, для которых доступны данные.
Генерация предварительного просмотра также помогает определить, есть ли у вас данные для отсутствующей области. Если вы отменили создание предварительного просмотра, перезапустите его, щелкнув слой правой кнопкой мыши и выбрав Generate Preview.
В окне просмотра видна только часть сгенерированного ландшафта.
Измените расстояние видимости камеры: в окне редактора щелкните значок шестеренки для выбранной камеры и увеличьте значение Far. Вы можете установить максимальное значение, равное 900000.
Отрегулируйте расстояние видимости для ObjectLandscapeTerrain. Задается в настройках редактора: Windows -> Settings -> Landscape -> Visibility Distance. Вы можете установить его на inf.
Когда я нажимаю Run, я вижу черный экран после загрузки мира, хотя в сцене есть камеры.
Сцена по умолчанию содержит камеру, для которой включен параметр Main Player. Этот параметр определяет изображение, с которого отображается камера при запуске мира. Включите этот параметр для камеры, которой хотите управлять во время выполнения, например камера Sandworm — она спавнится прямо над террейном, и отключите все остальные камеры.
Как позиционировать объект по его геокоординатам?
Для ObjectTerrainGlobal вы можете использовать Geodetic Pivot в редакторе — каждый объект, добавленный в качестве его дочернего элемента, может быть расположен на местности с использованием географических координат, установленных в широте/долготе.
Что касается ObjectLandscapeTerrain, инструмент позиционирования все еще находится в разработке, пока вы можете преобразовывать координаты, используя сторонние источники, такие как https://products.aspose.app/gis/transformation.
Вот описание рабочего процесса:
-
Преобразуйте объект и исходные координаты в мировые координаты (помните об исходных и конечных проекциях).
Исходные координаты объекта (скриншот с Google Maps)Исходные координаты начала координат (параметр Export Area в Sandworm)Преобразование координат с помощью aspose.app -
Возьмите исходную позицию из позиции объекта: Object.X — Origin.X; Object.Y — Origin.Y.
Вычисление координат в мире (сцене) -
Используйте результат как координаты X и Y объекта в мире.
Объект расположен в мире
Разработчики также могут использовать Geodetics Plugin и позиционировать объекты с помощью кода.
Плагин IG имеет метод worldToGeodetic() и класс GeodeticsTransformer для позиционирования объектов.
Ландшафт не генерируется. / Редактор внезапно закрывается.
Генерация ландшафта — очень ресурсоемкая операция. Для обширных и детализированных ландшафтов вам может понадобиться много оперативной памяти.
Мы рекомендуем иметь 64 Гб оперативной памяти (не менее 32 Гб).
Отключение инструмента Microprofile также может сэкономить до 6 Гб оперативной памяти. Это можно сделать либо запустив редактор с внешним аргументом "-microprofile_enabled 0" или отключив его в консоли редактора.
Если у вас возникают сбои при создании ландшафта, постепенное добавление слоев один за другим и генерация могут помочь найти проблему с данными. Или, по крайней мере, удалите слой векторных данных, потому что он может быть очень трудоемким.