Про Линии (*.lin) — Сценарии для X-Plane 9

Мне нужно было кое-чего порисовать в сцене и я предположил, что удобнее всего это делать линиями.
К сожалению, тут на форуме не нашел ответов на вопрос «как это делается», а на официальном лично для меня было написано несколько туманно.
В общем, небольшой тутор для тех, кто в этом не разбирается. Для гуру тут вряд ли будет что-то полезное.

Линии могут быть нарисованы поверх ДСФа и используются для нанесения разметок и других прелестей.
Для этого используется заготовленная текстура и, собственно, файл с расширением .lin

Линия рисуется методом повторения текстуры по вертикали, таким образом, готовьте текстуру, учитывая эту особенность. Формат текстуры — ПНГ или ДДС. Хотя ДДС может ругаться, если соотношение сторон иное, чем «devide by two».
Итак, текстура готова.
Открываем блокнот или любой другой нормальный, в отличие от блокнота, текстовый редактор.
И пишем туда вот это:

A
850
LINE_PAINT

Эти строчки делают ваш файл с расширением .lin уже почти линией.
Далее указываем, какая текстура используется.

Добавляем строчку:

TEXTURE textura.png

В таком виде, предполагается, что текстура лежит в той же папке, что и изготовляемый файл. Иначе — нужно указывать путь. Типа imagestextura.png

После этого вводим такие команды.

TEX_WIDTH <pixels>

Эта команда говорит симу о ширине текстуры в пикселях. Это будет иметь смысл на дальнейшем этапе, но имейте в виду, что если вы неправильно введете это значение, все дальнейшие операции будут отталкиваться именно от этого числа. Если вы написали 512, то половина, разумеется, будет 5122=256. Даже если ширина текстуры всего 16 пикселей. Лучше не выпендриваться, и писать то, что есть. :)

SCALE <horizontal> <vertical>

Масштаб отображаемой текстуры в метрах. Так, значение SCALE 4 25 будет симу говорить о том, что указанную выше текстуру нужно рисовать шириной в 4 метра и повторять каждые 25 метров.

S_OFFSET <layer> <s1> <sm> <s2>

Вот с этой опцией я долго не мог разобраться. Она говорит симу о том, в каком слое лежит линия и как делить текстуру. В одном файле может быть определено несколько линий. (Вот с этой частью я пока не разобрался, поэтому врать не стану. Но суть в том, что эта команда может быть повторена несколько раз, изменяя значение слоя. Кто знает суть — подскажите.) Использование команды таково — если вы, как и я, нуб и не поняли, нафига рисовать линии в нескольких слоях, то в значение layers ставим «0». Три дальнейших числа — левый край текстуры, середина и правый край. ПОнятно, что в одном текстурном файле может быть много текстур. Так это значение и показывает слева направо где начинается и заканчивается именно ваша текстура. Значения в пикселях берем из фотошопа или другого редактора.
По параметру «середина» сим и рисует нашу линию. Так, если вам нужно, чтобы текстура была смещена от линии в одну из сторон, по причине естественной асимметричности самой текстуры, то это значение указываем с поправкой.

Пример — ширина текстуры 256 пикселей. И вся текстура используется для отрисовки линии. Предположим, это ВПП или еще что. Причем эта текстура четко симметричная, то есть значение середины проходит таки да по центру.

В таком случае команда выглядит вот так — значение слоя «0», начало текстуры (левый край) = «0», середина = 2562=128, правый край = 256
Пишем

S_OFFSET 0 0 128 256

LAYER_GROUP <offset> <name>
Эта штука используется почти во всех файлах, из которых строится сценарий. Указывает слой, на котором рисовать линию.
Подробно тут — http://wiki.x-plane….3E_.3Coffset.3E

MIRROR

Используется для красивого отображения линии, особенно на изгибах. Не используйте в случае, если нужно расположить текст вдоль прямой.

Итак, мы имеем файл вида

A
850
LINE_PAINT

TEXTURE textura.png
LOD 2000
TEX_WIDTH 256
SCALE 4 25
S_OFFSET 0 0 128 256
LAYER_GROUP taxiways +5
MIRROR

Тут еще используется команда ЛОД, которая указывает расстояние в метрах, на котором ваша линия начинает быть видна.

Не рекомендую рисовать линии в оверлей эдиторе. Он в этом немного каличный.
Вроде бы все.

Удачи.

Сообщение отредактировано alex-krug: 04 May 2011 — 12:23


Ответов: 5

Можно было ещё тут спросить, больше шансов толковый ответ получить: http://www.x-plane.s….php?f=4&t=3155

Ну так всегда :)

Можно было ещё тут спросить, больше шансов толковый ответ получить: http://www.x-plane.s….php?f=4&t=3155

Если правильно помню (давно не лазил в разработку сцен), то эти слои, это как в фотошопе)
То есть вы можете линию собрать из нескольких текстур. Например на одной текстуре цвет, на другой шум, на третей маска теней. Ну я думаю смысл понятен.
S_OFFSET <1> <s1> <sm> <s2> — например цвет
S_OFFSET <2> <s1> <sm> <s2> — например шум
S_OFFSET <3> <s1> <sm> <s2> — например тени
Тоесть на цвет у нас таким образом будет в самом низу, типа подложки, на нем будет шум, и на шуме тени.
Ессно текстурные координаты как раз и нужны чтобы выбрать разные куски текстуры для слоев.

Как то так… :hmm1:

я так и предполагал. только непонятно зачем делать так, если можно по идее объединить в одну текстуру. хотя… если разные центры…

ну вот, вместе и какая-то подсказка готова :down1:

я так и предполагал. только непонятно зачем делать так, если можно по идее объединить в одну текстуру. хотя… если разные центры…

ну вот, вместе и какая-то подсказка готова :)

:(
Замечу также, что текстурные координаты можно задавать как в пикселях, как в примере выше у Алекса. Так и в процентах.
например: S_OFFSET 0 0 0.5 1

S_OFFSET <layer> <s1> <sm> <s2>

Вот с этой опцией я долго не мог разобраться. Она говорит симу о том, в каком слое лежит линия и как делить текстуру. В одном файле может быть определено несколько линий. (Вот с этой частью я пока не разобрался, поэтому врать не стану. Но суть в том, что эта команда может быть повторена несколько раз, изменяя значение слоя. Кто знает суть — подскажите.) Использование команды таково — если вы, как и я, нуб и не поняли, нафига рисовать линии в нескольких слоях, то в значение layers ставим «0».

Если правильно помню (давно не лазил в разработку сцен), то эти слои, это как в фотошопе)
То есть вы можете линию собрать из нескольких текстур. Например на одной текстуре цвет, на другой шум, на третей маска теней. Ну я думаю смысл понятен.
S_OFFSET <1> <s1> <sm> <s2> — например цвет
S_OFFSET <2> <s1> <sm> <s2> — например шум
S_OFFSET <3> <s1> <sm> <s2> — например тени
Тоесть на цвет у нас таким образом будет в самом низу, типа подложки, на нем будет шум, и на шуме тени.
Ессно текстурные координаты как раз и нужны чтобы выбрать разные куски текстуры для слоев.

Как то так… :umnik2: