Вы находитесь на странице: 1из 18

Инструкция по использованию Ortho4XP

version 1.11 released


January 19th 2016

Содержание

1. Введение 2
2. Установка 2
3. Первичный анализ тайлов в Бретани 3
4. Кастомная DEM и масштабирование в Гранд Каньоне 7
5. Кривые ВПП в Альпах 10
6. Рекомендации / технические заметки 14
6.1. Water options . . . . . . . . . . . . . . . . . 14
6.2. Sea_equiv . . . . . . . . . . . . . . . . . . 14
6.3. Пользовательское и базовое масштабирование . . . . . . . . 14
6.4. Min_area . . . . . . . . . . . . . . . . . . . 15
6.5. Curv_tol / Min_angle . . . . . . . . . . . . . . . . 15
6.6. Custom DEM (матрица высот) . . . . . . . . . . . . . 15
6.7. Skip downloads / converts - Пропустить скачивание / конвертирование . . 15
6.8. Пользовательские или автоматические настройки масок . . . . . 16
6.9. Чтение / запись настроек . . . . . . . . . . . . . . . 16
6.10. Остановка процесса (очистка) . . . . . . . . . . . . . 16
6.11. Ortho4XP.cfg . . . . . . . . . . . . . . . . . . 16
6.12. Carnet_d_adresses.py . . . . . . . . . . . . . . . . 16

7. Предостережения и F.A.Q. 17
7.1. Ухабы на ВПП . . . . . . . . . . . . . . . . . 17
7.2. Часть тайла содержит воду . . . . . . . . . . . . . . 17
7.3. Шаг 2 не останавливается или заканчивается с ошибкой  . . . . . 17
7.4. Шаг 3 жалуется на отсутствие свободного места в бассейне . . . . 17
7.5. Помогите! Мне нужно удалить тайл и начать сначала? . . . . . . 18
7.6. Некоторые ортофотопланы испорчены белыми квадратам . . . . . 18

8. Заключение 18

1
1. Введение содержание
Ortho4XP – это кроссплатформенный инструмент с открытым исходным кодом, основной целью
которого является создание ортофотопланов, основанных на сценариях для симулятора полета X-Plane при
нажатии нескольких щелчков мыши. Процесс строительства основан не на существующих сценах или
мэшах, или Laminar`s Meshtool, а исключительно на:
 Openstreetmap для информации относительно аэропортов, береговой линии, рек, озер, доков и так
далее.
 Elevation files чьи данные используются для построения высот, и для адаптации мэша к локальной
местности.
 Tile Map Services (TMS) которые служат поставщиками для ортофотопланов.

Файлы DSF, созданные Ortho4XP, содержат только нижний слой X-Plane в иерархии декораций
сцены: базовый мэш, представляющий собой набор текстурированных трехмерных треугольников,
охватывающих весь тайл. Строго говоря, прозрачность водных эффектов получается путем комбинации
базовых треугольников типа воды X-Plane с наложенными текстурами маскированных треугольников с
ортофотопланами. В частности, такая информация, как дороги, лесные полигоны, здания и в общем все,
что является наложением на мэш, не является частью Ortho4XP. Есть очень хорошие сторонние ресурсы
для этого, которые дополняют идеально и без конфликтов с Ortho4XP, в частности World2XPlane и/или
местные пейзажи. И хоть X-Plane довольно хорошо справляется с обилием повторяющейся информации
через процессы исключения, но это безусловно влияет на время его загрузки.

Помимо основных функций, связанных с загрузкой и атрибуцией текстур, можно перечислить


следующие относительно процесса строительства и / или его результатов:
1. Графический интерфейс позволяющий выбирать разные зоны с разными уровнями
масштабирования и/или работать прямо непосредственно внутри программного обеспечения.
2. Контроль в создании сложного мэша с диапазоном настройки от базового уровня до
уровня сверхвысокой плотности
3. Эффекты прозрачности / смешивания для внутренних и морских вод. Первый через
настраиваемый коэффициент альфа-канала, а второй через автоматическую генерацию размытия
альфа-маски вдоль береговой линии.
4. Каждый аэропорт, границы которого определены в Openstreetmap, автоматически
выравнивается вдоль своей границы.
5. Возможность исправления мэша на самой ранней стадии его построения (особенно легко
на хорошо закругленных ВПП), или выравнивания определенных участков на фиксированной
высоте.

2. Установка содержание
Установка программы сама по себе проста. Нужно просто распаковать архив. Учтите, что создание
ортофотопланов требует много свободного дискового пространства. Также на Linux и OS X нужно
проверить, что файлы Ortho4XP.py и Utils/Triangle4XP (Linux), или Utils/Triangle4XP.app (OS X) имеют
соответствующие права. В противном случае выдать права можно выполнив команду chmod a + x
Ortho4XP.py для первого, и chmod a + x Utils/Triangle4XP для второго.
Зло здесь, прежде чем вы начнете создавать мэш, скрыто в том факте, что Ortho4XP не является
автономным программным обеспечением. Это требует ряда (с открытым исходным кодом) пакетов
программного обеспечения. Обратите внимание, что вам не надо будет их использовать напрямую, а
Ortho4XP будет. Это:
 Python 3 вместе с дополнительными модулями Python: запросы, numpy, overpy, tk и (необязательно)
gdal и piproj
 Imagemagick (для инструментов конвертации и монтажа командной строки), версия >= 6.8
предпочтительна
 nvtools nvcompress – the NVidia Tools Extension (представляет собой кроссплатформенную
библиотеку dds).
2
Чтобы использовать Ortho4XP в полном объеме, необходимо также установить следующее программное
обеспечение:
 Gimp и/или Netpbm (укорачивают время обработки)

Каким бы способом вы ни последовали, чтобы выполнить эти предварительные условия (в


частности те, что изложены в README.install), вам настоятельно рекомендуется выполнить следующие
тесты после установки, чтобы проверить, все ли в порядке:
1. Запустите ваш Python 3 интерпретатор, например, через окно командного терминала. Убедитесь, что
вы действительно запустили Python 3, а не версию 2.7, которая также может сосуществовать
наряду со многими системами.
2. В командной строке Python выполните import requests, overpy, numpy, tk. Вы должны получить
только новую командную строку и никаких ошибок.
3. Сделайте то же самое с командой PIL import ImageTK. Тут вы тоже должны получить только новую
командную строку.
4. Выйдите из интерпретатора Python (например, выполнив команду exit)
5. В окне командной строки вашей операционной системы введите convert –list или convert.exe –list,
если на windows. Вы должны получить список команд для Imagemagick, и DDS*DDS rw +
Microsoft DirectDraw Surface должен быть одним из списка.
6. Netpbm есть на вашем компьютере, и выполнен в виде файла pamundice, а если у вас нет Netpbm, то
нужно запустить pamundice.
7. Gimp на вашем компьютере выполняется командой gimp –I –c –b ’(blurX "test.png" 16 "result.png")’ -b
’(gimp-quit 0)’ из окна терминала, и в каталоге /Utils должен создать файл .png с названием
result.png, который можно открыть с помощью средств просмотра изображений. Скорее всего, вам
нужно будет скопировать файл blurX.scm, находящийся в каталоге Utils, в каталог script-fu вашей
установки Gimp (например, $HOME/ .gimp-2.8/scripts/ на Linux и Mac OS X)
Если вам удалось выполнить все условия, примите поздравления, вы можете начать использовать
Ortho4XP!

3. Первичный анализ тайлов в Бретани содержание

В этом разделе мы будем шаг за шагом следить за созданием первого тайла, используя только
основные функции. Тайл соответствует острову Ouessant на крайнем западе Бретани во Франции.
Поскольку земной покров этого тайла небольшой, то весь процесс не должен занимать времени больше,
чем пару минут (в дополнение к тем, которые вы будете использовать, читая эти заметки).
Мы начинаем с запуска приложения Ortho4XP.py. В зависимости от вашей системы и ассоциации
файлов, которые вы настроили, возможно, вам просто придется дважды щелкнуть файл Ortho4XP.py
(предпочтительный способ), или еще, чтобы выполнить команду python3 ./Ortho4XP.py (Linux, OS X) или
py.exe -3 Ortho4XP.py (Windows), возможно, заменив имя интерпретатора Python в зависимости от вашей
настройки.

Итак, перед нами открылось главное окно (рисунок 1). В верхней части этого окна мы можем
прочитать координаты широты и долготы тайла, который будет построен (они следуют тем же правилам,
что и X-Plane, то есть они соответствуют координатам точки на юго-западном углу тайла). Для этого
первого тайла мы оставим значения по умолчанию +48 -6, которые действительно соответствуют острову
Ouessant. Также мы оставим флажок «Custom build_dir» снятым, и тайл мы будем создавать в каталог с
именем zOrtho4XP +48 -006 (по умолчанию).
Мы переходим к разделу «Zoomlevel and Water options». Базовый источник и базовый уровень
масштабирования для тайла указаны в первых двух списках. Поскольку Ouessant составляет всего 6 миль в
квадрате, мы можем безопасно увеличить уровень масштабирования, скажем, до 18, тогда как для
источника мы выберем местный источник «FR», но «BI» по умолчанию также будет очень хорошим
выбором. Мы не будем определять «Choose custom zoomlevel» (дополнительные настраиваемые уровни
масштабирования) для этого тайла, и будем придерживаться опции «Mixed with transparency»
(смешанный с прозрачностью), которая, безусловно, является самой хорошей (две другие оставлены либо
для очень низких конфигураций, либо для конкретных задач, не описанных здесь).
3
Параметр «ratio_water» (коэффициент соотношения воды) связывает пропорционально воду X-
Plane с водой из ортофотопланов в процессе их смешивания, но только для внутренних вод. Для данного
тайла это будет применяться только к двум маленьким кусочкам воды прямо в центре острова, и поэтому
не имеет первостепенного значения. Значение по умолчанию можно считать хорошим значением для
любого тайла, но это может зависеть и от вкуса пользователя.

Рисунок 1: Главное окно (обрезано)

Теперь подходим к первому настоящему шагу, раздел «Build vector data (OSM / Patches)»
(построение векторных данных), где мы будем загружать из Openstreetmap все векторные данные,
связанные с границами грунта, воды и аэропортов. Параметр Min-area представляет собой поверхность,
измеряемую в км2. Каждый замкнутый контур воды, поверхность которого меньше этого значения, будет
отброшен в процессе строительства. В принципе, можно просто установить его на 0, чтобы получить
полные данные Openstreetmap. Но на практике это не всегда лучший вариант, так как это может означать
более высокую сложность мэша, в то время как эффекты прозрачности становятся едва заметными при
уменьшении площади поверхности. Для первого примера мы можем смело установить значение 0.
4
Убедитесь, что ваше интернет-соединение работает, и нажмите (один раз!) На кнопку «Step 1: Build
vector data» (Шаг 1: Создание векторных данных). Правая оконная панель окна должна начать
анимироваться, и вы получите информацию о процессе до завершения, указывающую время процесса. Для
Ouessant, это не должно занять больше, чем несколько секунд.
Прежде чем перейти к шагу 2, давайте взглянем на рисунок 2, показывающий векторные данные,
которые мы только что обработали (содержатся в Data +48-006.poly в папке zOrtho4XP + 48-006 ниже
основного каталога Ortho4XP).
Помимо береговой линии можно увидеть границы аэропорта LFEC (восток), два участка внутренней
воды (в центре) и, конечно, сетку, которая соответствует отрезку потенциального ортофотоснимка ZL19.
Хоть мы здесь и не будем использовать такое высокое масштабирование, но сетка будет готова их
поддерживать).

Рисунок 2: Векторные данные (обрезанные вокруг острова)

На шаге 2 мы должны определить значение параметра Curv_tol. Очень важно понимать значение и
важность этого параметра, который связан со сложностью создаваемой сетки. Его аббревиатура
расшифровывается как «tolerance to curvature» (допуск к искривлению), и, следовательно, чем оно выше,
тем выше допуск и ниже будет сложность сетки. Когда местность неровная, требуется более высокая
плотность точек сетки для аппроксимации ее в пределах определенного допуска относительно плоской
местности. Параметр Curv_tol управляет тем, насколько далеко зашит алгоритм сетки, чтобы приблизить
сетку к реальности. В регионах, которые не являются сильно неровными, как в Ouessant, низкое значение,
такое как, скажем, 0,2, может быть использовано для получения точного приближения. В горах как,
например, тайл + 45 + 006, более высокое значение 3 уже даст очень сложную сетку, а значение 0,2 ,
безусловно, приведет к слишком тяжелому мешу, который на самом деле не сможет быть преобразован в
DSF. Здесь нет черной магии, и вы наверняка быстро ознакомитесь с этим параметром. Кроме того, мы
получим информацию, касающуюся сложности нашей сетки, и возможность возвращаться к различным
значениям параметра столько раз, сколько пожелаем, после того, как мы прямо сейчас нажмем «Step 2:
Build base mesh» (Шаг 2: Создание базового мэша).

Как мы видим на рисунке 3, наша сетка имеет 58032 треугольника. Это не так много в абсолютном
выражении, по сравнению с глобальными сценами X-Plane, которые имеют что-то вроде 500.000
треугольников. Или, конечно, это должно быть связано с размером острова. На следующем рисунке мы
можем ближе рассмотреть треугольники сетки (файл Data + 48-006.1.ele). Чтобы получить представление
об их размере, имейте в виду, что любой прямоугольник сетки имеет примерно 800 м бокового размера.
Это на самом деле зависит от широты, поэтому треугольники здесь располагаются где-то между 20 м для
самых маленьких, и 200 м для самых больших, и даже 800м для тех, кто полностью оффшорный. Мы также
можем наблюдать, что векторные данные шага 1 представлены в виде так называемых «required-edges», что
означает, что они являются частью ребер треугольников, и поэтому у последних нет поперечного
пересечения с векторными данными (главное условие: сетка учитывает границы местности).

5
Рисунок 3: Результат шага 2 в этом примере

Также мы видим, что небольшая часть треугольников имеет довольно маленький наименьший угол.
Как правило, это то, чего люди, работающие с мэшами, стараются избегать, в частности, когда с этими
мэшами необходимо выполнять вычисления. В X-Plane не совсем такое правило, но в определенных
случаях это может помочь, и это является целью флажка Min_angle, который мы здесь не использовали
(его полезность в основном для работы с более продвинутыми особенностями патчей или кастомных
мэшей). Кроме того, вы можете спросить себя, откуда взялись данные высот, которые использовал
алгоритм мэша. В этом конкретном случае оказывается, что файл высот для тайла + 48-006 включен (и это
единственный файл) в архив 7z, идущий с Ortho4XP. Этот файл находится в каталоге Elevation_data,
который является местоположением по умолчанию, где их и ищет программное обеспечение, если только
мы не укажем что-то другое в «Custom DEM_file».

Итак, мы готовы перейти к последнему шагу, и, поскольку мы хотим избежать резкого перехода
между землей острова и морем, мы будем создавать маски прозрачности. По сути, это файлы b & w png,
которые в конечном итоге будут использоваться как BORDER TEX в файлах ландшафта X-Plane, и
которые получаются следующим образом: сначала создается двоичное черно-белое изображение из
информации мэша с белыми пикселями для земли и черными для воды. Затем они стираются в
соответствии с радиусом размытия, указанным в Masks_width (ширина масок), а затем выравниваются в
художественных целях. Грубо говоря, один пиксель радиуса размытия соответствует 10 м морских данных.
Чем больше Masks_width, тем плавнее переход, но мы ограничены местоположением около моря, где
ортофотопланы начинают выглядеть плохо (обычно полностью белые или просто насыщенные синие).
В Ouessant для источника «FR» мы можем спокойно установить ширину маски 32.
Теперь мы нажимаем кнопку «Step 2.5: Build Masks» (создание масок), и ждем завершения. Если вы
полагаетесь на Gimp, процесс будет быстрым (менее одной минуты), тогда как для комбинации
Imagemagick / Netpbm потребуется времени на порядок больше, ведь мы имеем дело с изображениями
размером примерно 600 Мпикс. В любом случае, имейте в виду, что длительность процесса прямо
пропорциональна значению Masks_width.

6
Рисунок 4: Плотность сетки

Наконец, мы нажимаем кнопку «Step 3: Build Tile» (создать тайл) и ждем завершения. По
завершении каталог zOrtho + 48-006 можно использовать непосредственно в папке Custom Scenery на
X-Plane. Один из удобных способов обработки, который в будущем избавит ваш диск от ненужных циклов
чтения / записи, - это создать сим-линк внутри Custom Scenery на ваш каталог с тайлами. В Linux или
OS X это – cd [Custom Scenery location] && ln -s [Ortho4XP location]/zOrtho4XP +48 -006 ./zOrtho4XP +48 -
006. Сим-линки также могут быть созданы под Windows, но обратите внимание, что это не то же самое,
что «Shortcuts». Следуя по этому пути, последующие изменения, которые вы могли бы внести в свои
тайлы, были бы непосредственно эффективны в X-Plane.
Теперь мы можем сделать перерыв и насладиться нашим любимым симулятором полета над нашим
недавно созданным тайлом. Направляйтесь в сторону LFEC!

4. Кастомная DEM и масштабирование в Гранд Каньоне содержание

В этом разделе мы пересечем Атлантический океан, чтобы приземлиться в аэропорту


Национального парка Гранд-Каньон (KGCN).
Пришло время обсудить файлы высот. Это квадратные или прямоугольные таблицы, которые
описывают высоту земли (AMSL) по регулярной сетке (одна запись для каждой точки сетки). Эти сетки
иногда можно найти в разных форматах географических координат, для X-Plane нам понадобится WGS84.
Они также могут быть найдены в разных форматах файлов, и Ortho4XP требует либо форматы Geotiff, либо
HGT. Наконец, для Ortho4XP важно, чтобы граница данных матрицы высот точно соответствовала границе
элемента мозаичного изображения, и чтоб сетка имела квадратное отношение. По крайней мере, есть два
места, где мы можем получить данные такого типа в соответствующем формате:
 Сайт viewfinderpanorama, поддерживаемый Джонатаном де Ферранти, который делает
потрясающую работу по сбору наилучших доступных данных из всех возможных общедоступных
источников. Вы найдете там матрицу высот в формате HGT с разрешением дуги 3 дюйма
(примерно 90 м) или в некоторых местах с разрешением дуги 1 дюйм (примерно 30 м).
 Веб-сайт gdex.cr.usgs.gov, поддерживаемый USGS, где вы найдете заполненные пустотами данные
SRTM с разрешением дуги 1 дюйм. Правильный формат для выбора - «Geotiff 1x1 tile». Для
доступа к данным необходима бесплатная регистрация.

7
В обоих случаях вам просто нужно удалить файл .hgt или .tiff в каталоге Elevation_data. Их имена
должны выглядеть точно так же, как N36W113.hgt и SRTMv3 1 N36W113.tiff, а затем следовать тому же
правилу везде на земле (кроме полюсов). Если оба файла присутствуют для одного и того же тайла,
Ortho4XP отдает приоритет версии де Ферранти (более высокое разрешение не всегда приводит к более
высокому качеству). Ну, аэропорт на самом деле находится за границей, а мы действительно хотим
Каньон, а не аэропорт.

Как и следовало ожидать, для Гранд-Каньона можно найти общедоступные данные высот с еще
более высоким разрешением. Для этого примера мы загрузим файл дуги 1/3 дюйма из USGS
viewer.nationalmap.gov/basic/ (продукты 3DEP → 1/3 arc-second DEM), который в этом случае содержится в
архиве n37w113.zip в связи с другой системой наименований (север..запад..). Но тут есть два препятствия:
во-первых, формат .img, содержащийся в архиве, не тот, который нам подходит (хотя они все отличаются
незначительно), и что более важно, он покрывает на несколько десятков метров больше, чем тайл, так что
нам нужно обрезать несколько строк и столбцов. С помощью библиотеки Gdal нет ничего сложного в том,
чтобы вернуть его к требуемому формату и экстенту, но, поскольку у нас это может быть не доступно, и,
поскольку это не руководство пользователя для Gdal, мы просто скачаем его с
https://www.dropbox.com/s/gd902e1m4xhr5k0/N36W113.tiff?dl=0 , и сохраним его где-нибудь на нашем диске.
Если вместо этого вы предпочитаете сделать это самостоятельно, то, следовательно, сэкономите мою квоту
на загрузку Dropbox!, или если хотите просмотреть его для другого тайла, есть команда gdal_translate -
srcwin 6 6 10801 10801 –of Gtiff imgn37w113_13.img N36W113_bis.tif

Теперь мы можем запустить Ortho4XP и выбрать тайл +36 -113. В качестве базового источника мы
выберем «GO2» с базовым уровнем масштабирования ZL16. Но теперь нам нужны детали в каньоне, и мы
переходим к кнопке «Выбрать пользовательский масштаб» («Choose custom zoomlevel»), которая открывает
новое окно.
Мы выбираем источник и уровень масштабирования для предварительного просмотра, например,
'BI' с ZL 12. Эти два параметра полностью независимы от последующего выбора для ортофотоснимков
тайла, и поэтому мы можем выбирать их свободно. В Европе или там, где данных OSM много, обычно
рекомендуется придерживаться источника OSM по умолчанию. Вот и получается, что о ширине каньона
трудно догадаться по OSM, поэтому мы выбрали «BI».

Мы нажимаем кнопку «Preview», и после завершения загрузки на экране появляется изображение


всего тайла. Для простоты выбора на самом деле показана область, больше, чем на 1 градус тайла, а сама
граница отображается в виде черной сплошной линии. Оттуда мы сделаем следующее:
1. Выбираем «GO2» ресурс в «Zone params»
2. Выбираем ZL19 красный
3. Рисуем один многоугольник ZL19, который будет ограничен через «Shift + click» каждой
добавляемой точкой, в этом примере это соответствует нижней части части Каньона.
4. Нажимаем «Save zone button» (сохраняем)
5. Выбираем ZL18 оранж
6. Рисуем многоугольник больший, чем ZL19, который охватит всю ширину каньона
7. Нажимаем «Save zone button»
8. Нажимаем «Save and exit button» (сохранить и выйти)

Обратите внимание, что последние два сохранения (п.п. 7 и 8) играют различные роли, и важно не
пропускать предпоследнюю (п.7), иначе последняя зона не будет сохранена во время сборки !!!
Вы также можете заметить, что каждый раз, когда зона сохраняется, в поле ввода появляется грубое
указание размера диска, который будут занимать соответствующие текстуры DDS (всего). Это также может
служить хорошим индикатором того, какую зону вы редактируете в настоящий момент, если вы начинаете
воспроизводить редактирование, удалять и т.д. Вы действительно можете свободно экспериментировать с
зонами, они могут перекрываться, иметь разные источники и т.д. Клавиша «Назад» будет стирать
последнюю точку зоны, находящейся в данный момент в редакции, а клавиша «p» для того же эффекта, что
и для «shift + click». Во время сборки различные зоны будут сначала отсортированы по убыванию ZL, так
что, в случае перекрытия, будет выбран вариант с наибольшим ZL, в частности, в примере, изображенном
ниже, текстуры ZL18, соответствующие нижней части Каньона, не будут загружены даже если
соответствующая зона покрывает это.
8
Кроме того, если вы хотите изменить источник предварительного просмотра и/или уровень
масштабирования для предварительного просмотра, не теряя уже закодированные полигоны, нажмите
«Save and exit», и заново нажмите «Choose custom zoomlevel». Затем выберите свою новую сборку, и после
этого вам надо расставить ваши полигоны в правильном положении.

Рисунок 5: Пример выбора ZL в Гранд-Каньоне

Итак, мы переходим к шагу 1, и, как уже знаем, поскольку за рекой Колорадо не так уж много
данных OSM, мы можем также выбрать Min_area = 0, но по той же причине он не сильно изменится, чтобы
придерживаться значения по умолчанию 0,01.

Важный выбор наступает на шаге 2, где нам нужно определиться со значением, выделенным для
Curv_tol. Конечно, Каньон неровный, и мы должны быть достаточно терпимыми. Общее правило, когда
предполагается неровная местность, должно начинаться со значения 3, которое затем будет адаптировано
при необходимости. Затем мы ставим флажок «Custom DEM file», и используем средство выбора файлов,
чтобы выбрать наш скачанный N36W113.tiff. Затем кнопка «Шаг 2» выполняет свою работу и
предоставляет нам сетку с 1.848.556. Фактическое число может немного измениться, если вы попробуете
это самостоятельно, поскольку алгоритм сетки содержит некоторую случайность, плотность которого
изображена в небольшой части ниже на рисунке 6.

9
UHD-мэш от Alpilotx содержит что-то вроде 3,5 миллионов треугольников на тайл, и здесь мы хотим
немного расширить границы, чтобы увидеть, сколько же мы можем получить их от нашей детальной
матрицы высот. Последняя имеет 3*3600 к квадратным точкам ввода, которых примерно 100 миллионов!
Но только небольшая часть из них действительно имеет значение – те, которые находятся в Каньоне, а не
те, что на плато. Таким образом, мы уменьшаем значение Curv_tol, скажем до 1,5 и еще раз нажимаем
кнопку Шаг 2. Все еще в соответствии с нашей нынешней смелостью ... И только когда мы наконец
достигнем Curv_tol = 0,5, значение 5 миллионов треугольников начинает вызывать у нас сомнения, и мы на
этом остановимся.

Рисунок 6: Плотность мэша для Curv tol = 3

Наконец, мы нажимаем кнопку «Шаг 3» (для этого тайла не требуются маски, которые не содержат
береговой линии). После завершения, возможно, мы встретимся, валяя дурака внутри Каньона ;-)
http://www.youtube.com/watch?v=PFIcVbeHX7w

5. Кривые ВПП в Альпах содержание

Цель этого раздела - представить еще одну функциональность, которую мы до сих пор не
использовали – файлы исправлений. Вероятно, эта функция будет (вслепую) использоваться большинством
пользователей при полете в горных районах, и лишь немногие из них, вероятно, станут создавать свои
собственные патчи (хотя, как покажет видео ниже, JOSM значительно упрощает этот процесс). Таким
образом, разработчики 3D-сцен будут основными пользователями данного раздела.

Не у всех аэропортов есть плоская взлетно-посадочная полоса в реальной жизни, и некоторые из них
действительно далеки от этого. Типичными примерами являются Куршевель (LFLJ) и L’Alpe d’Huez
(LFHU) во Франции, чьи взлетно-посадочные полосы имеют наклонную и округлую форму.
10
Рисунок 7: Плотность мэша для Curv tol = 0,5

При воспроизведении этих двух аэропортов, либо в «Global Scenery», либо в большинстве его
расширенных версиях с более высокой плотностью, отсутствуют некоторые особенности, которые их
характеризуют. Аналогично, без патча мэш, полученный с использованием Ortho4XP для наклонных ВПП,
был бы либо полностью плоский (например, LFLJ или LFHU, так как их граница четко определена в OSM),
либо абсурдно неровный, поскольку большинство файлов DEM страдают из-за шума обнаружения (хотя
даже без него невозможно было бы воспроизвести в достаточно малом масштабе округлость).

Патч-файлы включаются в работу на уровне шага 1, и поэтому они играют ту же роль, что и
OSM в определении некоторых замкнутых многоугольников, которым должны быть назначены теги.
Принимая во внимание, что замкнутому многоугольнику воды назначается метка, указывающая, является
ли это внутренняя или морская вода, и патч, определяемый с помощью файла патча для наклонной ВПП,
будет помечен (в JOSM) как altitude_high, altitude_low (и, возможно, его профилем, крутизной («steepness»)
и размером ячейки («cell_size»)). Еще проще: патч, целью которого является выравнивание участка земли,
будет просто помечен его целевой высотой. Он может быть особенно полезен в наклонной местности, для
того, чтоб здания не летали над землей, касаясь ее только одним углом.

Патч-файлы автоматически обрабатываются Ortho4XP, когда они присутствуют в подкаталоге


Patches в соответствии с их широтой / долготой, если их имя файла имеет суффикс .patch или .osm.
Небольшое их количество, в частности для LFHU и LFLJ, уже присутствует в архиве 7z. Они могут
свободно использоваться, и разработчики трехмерных сценариев, которые этого хотят, очень рады
предоставить сообществу патч-файлы, подходящие для их создания. Обратите внимание, что патчи не
должны быть связаны каким-либо образом с аэропортом, и могут использоваться для выравнивания любой
многоугольной области (при условии, что один участок не пересекает поперечно другой, в частности
участок воды!), например, аэропорта не закодированного в OSM (локальный патч ваш, и поэтому он
может быть довольно приблизительным, тогда как при загрузке данных в OSM вы должны быть очень
осторожны).

Видео-пример по процессу создания для LFHU – https://www.youtube.com/watch?v=4Q3q5Lq4Kis , и


снимки для сравнения до / после приведены на двух рисунках ниже.

11
Рисунок 8: LFHU без патча неправильно сплющен
Обратите внимание, что на первом изображении, кроме ВПП,
и парковка, и часть теннисных кортов под уклоном!

Рисунок 9: LFHU с патчем


Этот второй выглядит более естественным, и 3D-объекты позволяют оживить этот замечательный,
но в то же время скучный пейзаж!
(ВПП тут в неправильном положении, но это может быть исправлено независимо)

Более сложный пример - пример La Montagne Noire (LFMG) - не в Альпах, а на юго-западе Франции,
недалеко от Тулузы, - из-за провала ВПП около ангара для планеров, и так как взлетно-посадочные полосы
пересекают друг друга. Видео, показывающее результат, можно найти здесь
http://www.youtube.com/watch?v=vNawoSZEnyo

где 3D-пейзаж LFMG - это творение Жана, доступное на xpfr.org.

12
Следующее изображение патча для LFMG, нарисованное в JOSM :

Рисунок 10: патч LFMG из JOSM

Зоны, в которых добавлен ноль, сглаживаются, а зоны со стрелкой кодируются как наклонная ВПП,
причем стрелка обозначает направление набора высоты.

И последняя картинка с патчем, к сожалению без снега на ортофотоснимке…

Рисунок 11: Обзор LFLJ после патча


13
Крошечные частички снега в аэропорту, а также эти здания являются объектами сценария от
Sky One, доступного на X-Plane.org. Этот сценарий также идет со своим мэшем, и объекты здесь
расположены, как и в реальной жизни.

Есть два важных правила, которые тут стоит отметить:


 Наклонные ВПП должны быть закодированы только четырьмя точками, первая точка должна быть
одной из двух точек на самой высокой стороне, а вторая - противоположной ей, т.е на нижней стороне.
 Если полигональное пятно нужно сгладить и привязать к наклонной ВПП, то соединение должно
проходить вдоль боковой стороны ВПП и совпадать с этой боковой стороной (на самом деле
невозможно сопоставить плоский край и кривой ...).

6. Рекомендации / технические заметки содержание

6.1 Water options


1. Вода X-Plane : Участки воды, которые создаются на шаге 1, текстурируются только
оригинальной водой X-Plane. А те, которые не создаются (например, если Min_area не равно нулю), будут
отображаться как ортофотопланы.
2. Вода Orthophoto : Морская вода выглядит как вода X-Plane, но вся внутренняя вода - только
ортофото. Вы должны выполнить Шаг 1 после проверки этой опции, так как все края внутренней воды
будут опущены.
3. Вода Mixed : ratio_water – это реальное значение между 0 и 1, соответствующее соотношению
между водой ортофото и водой X-Plane. Близко к нулю ортофото является доминирующим, и наоборот.
Значение по умолчанию составляет 0,2.
Подсказка: масштаб читается в градиентном файле water_transition.png. Модифицируя это внутри
тайла, файл позволяет избежать перестроения DSF на случай, если вы передумаете.

6.2 Sea_equiv
Это список, который должен быть определен в конфигурационном файле Ortho4XP.cfg, и содержит
имена OSM больших участков воды, которые вы хотели бы видеть обработанными, как если бы они были
морской водой, и, следовательно, получали автоматическую маску определенной ширины, а не постоянный
альфа-канал. Эти имена OSM должны быть точно такими же, как и OSM ‘rel’ equivalent. Причиной
существования данного списка является то, что для очень больших озер (например, озера Леман), как и для
моря, ортофотопланы не всегда пригодны для использования на всей их поверхности.

6.3 Пользовательское и базовое масштабирование


Данная пара (зона и масштабирование) в конечном итоге преобразуется в упорядоченный список.
Последний пункт в этом списке всегда соответствует параметру, выбранному в главном окне, а не в окне
предварительного просмотра. Параметры, заданные в окне предварительного просмотра, упорядочены по
убыванию уровня масштабирования (в случае, если уровни масштабирования идентичны, порядок
кодирования сохраняется для подкласса). Когда треугольник мэша прописывается в текстуре, каждая зона
проверяется на включение, начиная с первой, и до тех пор, пока одна из них не будет найдена. Если ничего
не найдено, в зонах предварительного просмотра будут использоваться ZL и источник из последней зоны,
которые соответствуют главному окну и, следовательно, всему тайлу. Обратите внимание, что в списке
«Base source» содержится запись «None». Если это используется, и треугольник не находит зоны в списке
предварительного просмотра, он будет приписан к общей текстуре X-Plane (а именно,
lib/g10/terrain10/fruit_tmp_wet_hill.ter). Кодирование полигонов в окне предварительного просмотра
выполняется с помощью клавиш «shift + click» или «p», последняя закодированная точка может быть
удалена с помощью «backspace», и каждая зона должна быть завершена нажатием кнопки «save zone»,
включая последнюю, перед нажатием кнопки «save and exit». Лучший способ учиться - это, наверное,
практиковаться здесь ...
14
6.4 Min_area содержание
Каждый OSM воды проверяется на его размер. Если он больше минимальной площади (в км2), он
сохраняется, в противном случае он игнорируется, и будет отображаться только как ортофото воды. Дело в
том, что небольшие пятна воды не всегда сильно выигрывают от эффекта прозрачности, и, с другой
стороны, некоторые ошибки OSM иногда можно обойти путем увеличения значения Min_area, так как
размер пятен небольшой. Типичные значения: 0 (для смелых), 0,001 (для меня) и 0,01 (для осторожных).
Обратите внимание, что 0,001 - это размер бассейна.

6.4 Curv_tol / Min_angle


Curv_tol означает толерантность к искривлению. Чем ниже его значение, тем выше сложность сетки
и количество содержащихся в ней треугольников. Безопасное правило при экспериментировании – первый
вариант тайла должен начинаться с Curv_tol = 3, затем попробуйте запустить Шаг 2 и посмотрите
количество треугольников, которые она генерирует («Mesh triangles», обозначенных стрелками на панели
терминала). Если это число значительно меньше целевого, то уменьшите Curv_tol (скажем, в 1,5 или 2
раза), или, если наоборот, то увеличьте его. Вы можете повторить операцию столько раз, сколько захотите.
Так, каково же оптимальное значение Mesh triangles? Ну, во-первых, это зависит, содержит ли
тайл много морской воды или нет, так как последняя должна почти равняться нулю для количества
треугольников. Поэтому имейте в виду, что нужно всегда масштабировать числа так, как если бы тайл был
без воды. Как только этот факт известен и учтен, дальше это дело вкуса / процессора / и т.д. Для сравнения:
тайл Global Scenery насчитывает примерно 500 000 треугольников, а HDv3 - 1,5 миллиона, а один UHDv1 -
3,5 миллиона. Я протестировал тайлы с почти 10 миллионами треугольников на своем компьютере с 8 ГБ
ОЗУ, без заметного влияния на время загрузки, но на их создание уходит намного больше времени, и
поэтому по большей части я довольствуюсь количеством от 1 до 3 миллионов треугольников.
Min_angle, как говорится в его названии, отвечает за наименьшее целевое значение угла для
каждого треугольника. Это только целевое значение (нельзя заполнить небольшой угол OSM подходящими
треугольниками, если минимальный угол равен больше, чем этот угол), и в любом случае оно должно быть
не слишком большим (значение по умолчанию составляет 5 градусов, если вы установите флажок, и 35 -
это значение, с которым алгоритм наверняка не справится). Это действительно очень важно для патчей, так
как это оказывает некоторое влияние на то, как патч выравнивания будет связан с (DEM points outside)
точками матрицы высот снаружи. С нулевым или очень маленьким Min_angle переход может быть грубым,
которого вы хотите или можете избежать, в зависимости от случая.

6.5 Custom DEM (матрица высот)

1. Они должны быть в формате Geotiff или HGT


2. Они должны иметь одинаковое количество столбцов и строк
3. Их углы должны точно совпадать с углами плитки 1x1 градуса.

Если не используется пользовательская матрица высот, то используются значения по умолчанию.


Однако их необходимо загрузить самостоятельно перед созданием тайла. Два местоположения по
умолчанию для загрузки и схема именования описаны точно в самом начале Раздела 4

6.6 Пропустить скачивание / конвертирование


Если - по какой-то причине - вы не хотите загружать текстуры, а просто собираете DSF, используйте
«Skip downloads» (пропуск конвертирования). Если вы хотите их скачать, но хотите оставить для
преобразования из JPEG в DDS на будущее (возможно, потому что вы хотите сначала обработать /
улучшить JPEG), используйте «Skip converts». Обратите внимание, что преобразование, поскольку в
настоящее время оно не является многопоточным, часто является проблемным местом в отношении
времени процесса, примерно 4 секунды на текстуру 4K, тогда как загрузка и монтаж могут быть такими же
быстрыми, как 1 секунда на текстуру 4K.

15
6.7 Пользовательские или автоматические настройки масок содержание

Автоматические маски следуют схеме наименований, относящейся к ортофотоснимкам TMS на


ZL14 (собственно, версия Google, см. например, http://www.maptiler.org/google-maps-coordinates-tilebounds-
projection/ для хорошего объяснения этих нумераций). Если вы хотите создать свои собственные маски
(автоматический процесс не знает где он мог бы использовать больше или меньше оффшорных
ортофотопланов), то вам просто нужно использовать то же имя файла, но добавить и подчеркнуть его, а
затем добавить акроним источника, например, 5664 7952 FR.png или 5664 7952 BI.png вместо 5664
7952.png. Затем они будут использоваться в приоритете к автоматическим, если оба найдены.

6.8 Чтение / запись настроек

Смотрите Ortho4XP.cfg ниже. Вы должны нажимать кнопку «Write config» только в том случае, если
вы начали кодировать подробные полигоны в Preview, и вам внезапно молочник постучал в дверь, в
противном случае он автоматически вызывается «Build tile». А «Read config» вам следует нажимать только
в том случае, если вы хотите обновить или улучшить тайл, который вы уже (хотя бы частично) построили,
и который присутствует в базовой директории Ortho4XP.

6.9 Остановка процесса (очистка)

Как следует из названия, он стремится полностью остановить процесс, который по какой-то причине
пользователь хочет остановить (ожидание откликов из всех потоков!). Останавливая процесс, например,
через CTRL-C, это приведёт, по крайней мере, к непустому каталогу tmp, а в худшем случае к
поврежденным файлам изображений.

6.10 Ortho4XP.cfg

Файл Ortho4XP.cfg также является исходным файлом Python и выполняется в самом начале
Orhto4XP. В частности, он должен следовать синтаксису Python. При наличии этого графического
интерфейса вам не нужно постоянно редактировать конфигурационный файл. Только значения словаря
поправок колориметрии для разных источников, список sea_equiv и некоторые местоположения файлов
находятся в Ortho4XP.cfg, и только в Ortho4XP.cfg. Когда тайл построен, он содержит правильную версию
Ortho4XP.cfg, полученную путем конкатенации глобального файла Ortho4XP.cfg с вводными данными из
графического интерфейса (в частности, полигонов окна предварительного просмотра, если таковые были
определены). Если запущен Ortho4XP, выбраны широта / долгота, и нажата кнопка «Read config», то
данные, сохраненные в ранее, если они существуют, загружаются в интерфейс

6.11 Carnet_d_adresses.py

Это ваша адресная книга источников. Вы можете увеличивать список, делиться им с друзьями, или
сохранить в тайне. В любом случае, поскольку нас на самом деле не приглашают, а только терпят, будьте
внимательны к тому, чтоб не рубить сук, на котором мы все сидим.

16
7. Предостережения и F.A.Q. содержание

7.1 Ухабы на ВПП

Это означает, что полигон не был сглажен, а его имя или код ИКАО не отображались при
выполнении шага 1. Существует два способа добиться этого.
Первый - закодировать его границу закрытым способом в OSM (не забудьте добавить тег
«aeroway» = «aerodrome», затем (необязательно, но рекомендуется) один тег для его имени, и один для его
кода ИКАО). Будьте внимательны при использовании существующих узлов OSM и закрытии путей. Кроме
того, если рядом с аэропортом находится какое-то водное пятно, не пересекайтесь с ним, иначе вы
получите ошибку 7.3.
Второе решение состоит в том, чтобы создать файл патча с одним полигоном, окружающим
аэропорт, и обозначенным меткой высоты аэропорта. Пример такого патча содержится в архиве 7z для
аэропорта Париж - Орли (LFPO), он был сделан с использованием JOSM, как и в видео LFHU в Разделе 5.

7.2 Часть тайла содержит воду

В OSM ориентирована пунктирная линия, которая определяет береговую линию, причем вода всегда
должна быть справа. Чтобы определить, какие треугольники нужно пометить как морские, вам надо себе
представить, что Ortho4XP, предположительно на правильной стороне береговой линии, делает заливку
чернилами, и загрязняет соседние треугольники, если они не заблокированы береговой линией. Если какая-
то часть береговой линии ошибочно ориентирована, чернила попадают на землю, и затем пробираются
вглубь. Исправление в OSM - единственное жизнеспособное лекарство.

7.3 Шаг 2 не останавливается или заканчивается ошибкой 

В редких случаях Шаг 2 может занять больше минуты, но в большинстве случаев он должен
завершиться за несколько десятков секунд. Если вы задали параметр Min_angle, попробуйте сначала без
него (это требование иногда трудно удовлетворить в зависимости от данных OSM).
Если причина не устранилась, то, с очень высокой вероятностью, это может быть связано с ошибкой
в OSM, и Triangle4XP может даже указать вам, где вы должны ее искать. Это может случаться, когда два
ребра в OSM пересекаются друг с другом в разных точках, но не в конечных (в принципе такого быть не
должно, но таков факт имеет место быть). В большинстве случаев это происходит из-за небольшой части
реки, которая была закодирована дважды, или клочков воды, которые не «склеены» соответствующим
образом. Приобретя некоторый опыт можно найти и исправить их непосредственно онлайн, но не редко
это может превратиться в квест «поиска сокровищ».

7.4 Шаг 3 жалуется на отсутствие свободного места в бассейне!

Это означает, что разрешение мэша более 65536 точек эквивалентное текстурам ZL17. Это может
быть вызвано либо ошибкой OSM, что приводит к тому, что Mesh Tool становится там сумасшедший, либо
слишком малым значением Curv_tol. Сначала попробуйте с Curv_tol = 3, и если проблема не устранится, то
она связана с OSM. Исправьте ее сами или сообщите об этом.

17
7.5 Помогите! Мне нужно удалить тайл и начать сначала? содержание
Нет! Радикальные решения редко бывают продуктивными. Если вы загрузили ортофотоснимки, и
при их просмотре они выглядят корректно, то вам, безусловно, не следует удалять их, потому что какая-то
другая, не связанная часть, вызывает проблемы. В целом, я знаю только два случая, когда нужно что-то
стереть:
1. Проблема с сетью привела к повреждению некоторых ортофотопланов. Они не отображаются в
средстве просмотра файлов или вызывают сбой средства просмотра. В этом случае просто сотрите те,
которые кажутся испорченными. Если проблема на стороне сервера, то Ortho4XP будет продолжать
попытки, и не будет создавать поврежденные образы.
2. Обнаружена ошибка в Openstreetmap, которая вызывала проблемы в Triangle4XP на шаге 2. Затем
после исправления в OSM вы должны стереть кэшированные данные OSM на вашем диске, это
кнопка «Purge OSM data», которую вы должны использовать только в этом случае (или потому что
данные OSM были обновлены).

7.6 Некоторые ортофотопланы испорчены белыми квадратами.


Обычно размер 256x256 или 2048x2048. Это связано с медленным сервером, который, вероятно, был
перегружен. Когда это происходит, они могут иногда отправлять белые данные, не обращая на это
внимания. Иногда мы сохраняем их, так как это происходит не из-за перегрузки серверов, а из-за
отсутствия данных, например, в граничных текстурах источников, чьи данные не выходят за границы. В
иных случаях одним из решений является удаление поврежденных ортофотопланов и создание тайла еще
раз, чтобы только удаленные ортофотопланы были повторно загружены, надеюсь правильно.
Источники "CH Vs", "NZ" и "NO" иногда демонстрировали такое поведение при использовании из
Франции

8. Заключение
Мое величайшее «Mercis! всем участникам французского форума x-plane.fr, чья помощь и поддержка
были отличным источником мотивации с июня этого года, когда там была выпущена ранняя версия для
разработчиков. Многие из функций, включенных в настоящую версию, возникли из их замечаний и идей, и
теперь это должно действительно рассматриваться как коллективная работа. Список будет слишком
длинным, чтобы перечислить их всех, и поскольку нетривиальная часть из них бельгийцы, то я должен им
всем большой стакан Beer4XP. Большое спасибо также Паскалю из zonephoto.x-plane.fr, Питеру (Дуриану)
из x-plane.org и Тони (tonywob) из avsim.com, с которыми взаимодействие всегда было плодотворным.
Большое спасибо также двум Джонатанам.
- Джонатану Шевчуку за его впечатляющий «Two-Dimensional Quality Mesh Generator and Delaunay
Triangulator». Triangle, который настолько мощный и гибкий, что не было сложной задачей превратить его
в 2.5D-генератор мэша для наших тайлов X-Plane, и так как 99% Triangle4XP действительно действительно
сам треугольник.
- Джонатану де Ферранти за его впечатляющую работу по созданию высококачественных цифровых
моделей рельефа (DEM) и за то, что они доступны на его сайте viewfinderpanorama.
Опыт Бена Супника и Андреаса Фабиана также был высоко оценен на ранней стадии проекта, когда
он пытался понять особенности файлов сценариев для X-Plane. Я не смог их убедить в том, что этот
mesh-tool может быть также интересен при создании сценариев, основанных на качественно-
проработанных участках земли, но вопрос остался открытым. ;-)
В заключении, я выражаю искреннюю благодарность и приношу извинения моей жене и дочерям,
которые много раз противились всему этому, выбрасывая мой компьютер в окно при каждом удобном
случае.

Автор Oscar Pilote


Перевод с английского Павел Ворона 16 января 2018 г

для группы Вконтакте - Laminar Research - X-Plane https://vk.com/laminar.research.xplane

18