Туториал по плоским полигонам в Гмаксе

В данном топике будет приведен пример того как сделать плоский полигон для сценария аэропорта в 2004-м

симе. Буду писать простым языком, неофицыальным, за ошибки в речи заранее простите. Сразу скажу урок

подразумевает некоторое наличие знаний работы в Гмаксе. Многоие английские слова буду пистаь русскими

буквами в тексте, не охота заморачиваться с написаниеа на английском.
И так поехали:
Для начала сделаем некоторую подготовку. Первое что нам надос делать, это текстуру. Она должна быть в БМП

формате, не конвертированная в ДХТ1 или ДХТ3, так как Гмакс не распознает их. То есть простая БМП-шка, в

Сим-же вы можете пихать БМП-шу конвертированную в любой БХТ формат. Далее надо произвести некоторые

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

аэропорта Талаги. Полоса в нем имеет размеры 2500х44 метра. Полоса уложена плитами ПАГ-18 имеющими размер

2х6м. Для того чтобы текстура смотрелась нормлаьно я принял решение что по ширине полосы у меня уйдет две

текстуры, то етсь получается что плоса шириной в 44 метра имеет 22 плиты шириной по 2 метра, то есть на

мою текстуру по ширине уйдет 11 плит. Так как текстуры в симе имеют квадратные размеры (256х256,512х512 и

т.д.), то соответственно мне надо подогнать плиты на текстуре так чтобы они занимали форму максимально

приближенныю к квадрату. Мы уже выяснили что по ширине в текстуре у меня идет 11 плит по 2 метра шириной,

то есть в симе текстура по ширине занимает 22 метра. Зная что длина каждой плиты 6 метров, мы берем по

длине 4-ре ряда плит, то есть получается 4плиты х 6метров =24 метра. В итоге получили почти квадрат 22х24

метра. С учетом некоторых погрешностей мы это все пихаем в текстуру, в итоге получается текстура 4х11

плит. Далее нам надо определить сколько текстур ляжет по полосе в длину. зная что наши 4-ре плиты занимают

в длину 24 метра, а длина полосы 2500, получаем 2500/44=56,82, огругляем все это до целого исла и получаем

57 текстур. То есть в итоге полоса у нас получается состоит из 57 текстур в длину и из двух текстур в

ширину. В примере у мня указан произвольный полигон не имеющий отношение к этим цифрам.
Ну и приступаем собственно к работе в Гмаксе.
Все пункты идут по порядку согласно скриншотам.
Создаем плоский полигон, и указывем его длину и ширину (1), в Талагах там были бы цифры 2500 и 44.
Далее указываем количество частей из которых будет состоять наш плоский полигон (2), в примере у меня

стоит 2 и 4, в Талагах бы стояло 2 и 57.

Переводим полигон в Эдитобол Поли (3), и нажимаем на кнопку Гмакс материал Эдитор (4).

Прикрепленные изображения

  • Прикрепленное изображение
  • Прикрепленное изображение

Ответов: 66

Выплвает окошко, в нем жмем на нью (5), и вибыраем стандарт (6).
Далее в строке Дифюс Колор нажимаем на Нон (7) (если будут использоваться ночные текстуры, то нажимаем на
замочек рядом и так-же как и в п.7. нажимаем на Нон в первой строке над дифюс колор (7.1))
Далее после того как нажали на Нон выскачит окошко, где нажмите на Битмап (8).

Прикрепленные изображения

  • Прикрепленное изображение
  • Прикрепленное изображение

Выбираете там свою тестуру в формате БМП (ожно и в других форматах, в том числе и в ЖПГ и в
фотошоповском), нажимаете открыть (9). После этого жмете на синий кубик(10), и нажимаете эпплай (11)
Вуаля на вашем полигоне появилась ваша текстура. Но теперь она растянута по всему полигону вам, надо чтоб
текстура ложилась отдельно в каждой части. Для этого идете в список модификаторов (12)
Выбираете в списке УВВМап (13)

Прикрепленные изображения

  • Прикрепленное изображение

Прикрепленные изображения

  • Прикрепленное изображение
  • Прикрепленное изображение

И в открывшихся настройках выбираете Фэйс (14) если чуть применить интуицию и метод тыка то можно

догадаться для чего идут остальные настройки. Я их сейчас касаться не буду. Вобщем выбрали мы фейс и

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

перпендикулярно полигону, для этого опять идем в список модификаторов и выбираем УнрапУВВ (15)

Прикрепленные изображения

  • Прикрепленное изображение

Прикрепленные изображения

  • Прикрепленное изображение

Нажимаем кнопку Эдит (16) выбираем вращение (17), выделяем все 4-ре точки полигона, и начинаем

поворачивать (18)

Прикрепленные изображения

  • Прикрепленное изображение

Вуаля, текстуры идут поперек полигона.
Мы сделали что надо, сохраним терь это, и терь надо снам это добро пихнуть в сим. Для этого понадобится

2002-й геймпак, где и как и что с ним делать читайте в FAQ, сейчас-же мы нажимаем на экспорт(19)

Прикрепленные изображения

  • Прикрепленное изображение

Прикрепленные изображения

  • Прикрепленное изображение

Открывается мэйкБЖЛ, в нем на вкладке сценери выставляем координаты где будет лежать нашь полигон (20),

выбираем градус на который он будет повернут (21) (проблема 2002-го в том что в нем можно выставлять

только целые градусы, то есть на пол градуса повернуть уже неудастся, проблема не решаема. Выход только

один-поворачивать полигон в самом Гмаксе на те доли градуса которые надо, а здесь уде выставлять целые).

Выставляем дистанцию с которой нашь полигон удет отображаться (22), и выставляем детализацию сцены при

которой нашь полигон будет виден (23), жмкм на Старт (24)
Видим как идет процесс компилирования БЖЛ. Вконце окошко просто исчезнет.

Прикрепленные изображения

  • Прикрепленное изображение
  • Прикрепленное изображение

Storm (5.02.2008 00:40):

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

Может просто воспользоваться тайлингом!? Зачем так много полигонов 🙂

Далее идем в папку куда вы

жкспортировали свое творение, видим там БЖЛ и два файла с разрешением асм. один ***.asm, второй ***_.asm,

где ***-имя с которым вы экспортировали файл. Если асм файлы не появятся, то поищите на форуме что надо

оьавить в файл настройки МэйкБЖЛ чтобы они появились. Надеюсь пять инут поиска вас не убьют, тут много об

этом писалось.
Ту БЖЛ что у нас получилась можем смело удалять, она нам не нужна. Нам нужны асм файлы. Открываем первый,

тот который ***.asm, и ищем там в тексте строчки
OBJECT_0_START label word
ADDOBJ OBJECT_0_SCALE
SHADOW_CALL OBJECT_0_SCALE
Удаляем строку SHADOW_CALL OBJECT_0_SCALE (как я понимаю она отвечает за тени, который у плоского обьекта

как у нас просто нет :))

А в строке ADDOBJ OBJECT_0_SCALE, меняем ADDOBJ на ADDCAT, и в конце через запятую ставим слой в

котором будет лежать нашь полигон, то есть в итоге должно получится так:

OBJECT_0_START label word
ADDCAT OBJECT_0_SCALE, 30

где 30-слой нашего полигона.

Далее открывем второй асм файл, тот который ***_.asm, находим там строки
TEXTURE_LIST_BEGIN
TEXTURE_DEF TEXTURE_AIRCRAFT , <255,255,255,255>, 21.213203, «Имя текстуры.BMP» ; 0
TEXTURE_LIST_END
Тут мы заменяем TEXTURE_AIRCRAFT на TEXTURE_GROUND, зачем сам не понимаю, так как вроде и со старым

работает, но гуру сказали надо, и я меняю!
Сохраняем все это дело, и теперь, выделяем файлы в начале ***_.asm потом ***.asm. У нас два выделенных

файла, наводим мышку на ***.asm и правой кнопой мышы, открыть с помощью, и выбираем БЖЛкомп. Он

запускается, тарахтит доли секунд и у вас появляется готовая БЖЛ-ка. Вставляем ее в сим и смотрим что у

нас вышло.
Как дополнение могу сказать что асм файлы не перемещайте из той папки в которой они были созданы, и не

растаскивайте их один от другого, так как в них в каждом прописан пути друг к другу, и в итоге компилятор

просто ниче вам не с компилирует.
Вот и все на седня!

По первому пункту, хаотично да, но я в начале написал что тутор для тех кто хоть чуток шарит в Гмаксе. описывать подробно на какую кнопу нажать чтоб получить плоский полигон- нонсенс, тут мона всю программу описать. Тутор лишь длтя тех кто умеет работать но не может понять как вестаки сделать так чтоб в 2004-м симе появилась любимая полоса. То что с ошибками, я извинился уже, писал быстро на скорую руку.
По второму пункту, согласен есть более оптимальный способ создаия, одним плигоном когда его не надо делить. но на практике его не применял, знаю лишь в теории. Возможно как-нить допишу потом. Если есть еще к чему придраться, пиши нестесняйся, всем поможешь, заодно мот и я чего нового узнаю:).

Супер!!! :good:

Добавлю от себя: создание полосы одним полигоном — не просто «более оптимальный» (хотя нет такого выражения, есть выражение — оптимальный, уже само подразумевающее наилучший вариант), но и логически оправданный. Меньше полигонов — меньше глюков с текстурами. Да и ФПС, что бы ни говорили, порезвей при меньшем количестве полигонов. Делается в твоем случае очень просто — после создания плоскости (plane), зайдя во вкладку Modify измени число разбиений с дефолтных 5 до 1 по вертикали и горизонтали. После конвертирования в Editable Poly ты получишь один большой полигон. Далее, применив текстуру, накладываешь модификатор UW Map, в котором задаешь параметры — Plane (или Face, если полигон имеет сложную форму и тебе требуется заполнение в нескольких направлениях) и задав параметры текстуры — в первой секции полей — размеры, во второй ограничение по количеству (тайлинг) в поперечном направлении, получаешь тот же результат. Играясь этими параметрами, подгоняешь вид к требуемому. Все. На выходе имеем оптимизированный кусок сценария, про который в дальнейшем можно забыть и заниматься прочими строениями.

P.S. Полоса из трех продольных полигонов оправдана тогда, когда хочешь сделать отдельной текстурой боковую кромку. Только в этом случае текстура должна быть категории Multi-Sub object, позволяющей хранить под одним идентификатором несколько текстур. Выделяя нужный полигон, в самом низу «свитка» параметров ищи секцию, в которой выбираешь номер вложенной текстуры (из выпадающего списка). Так можно назначить для одного объекта (полоса, РД, здание…) столько текстур, сколько необходимо, храня их в стеке под одним идентификатором. Но это уже из серии — не для начинающих.

Сообщение отредактировано FlyingKot: 05 Февраль 2008 — 04:36

Назрел такой вопрос. Какой слой задать в ADDCAT OBJECT_0_SCALE чтобы гмаксовский полигон ВПП оказался под дефолтной разметкой афкада?

Ниже 26-го слоя. И не забудь, что для того, чтобы самолет не скакал по бетонной полосе, аки по грунтовке (а это будет, если остановиться на описанном выше методе), надо еще под максовую полосу в .асм файле подложить поверхность с заданными характеристиками жесткости. Как — смотри туториалы в данной ветке (особенно пришпиленные вверху).

Сообщение отредактировано FlyingKot: 05 Февраль 2008 — 10:37

Caramelis_Rex (5.02.2008 14:24):

От многополигонных плоскостей уходить, кажется, не стоит, поскольку есть такой пунктик в совместимости плоскостей с FSX — размер полигона не должен быть больше 100м.
Интересно, а как в случае с FSX обстоит дело с номерами слоев!?

причина того, что один полигон не должен быть более 100 метров — введеная в FSX кривизна земной поверхности (не РЕЛЬЕФ!). Номера слоев могут запросто игнорироватся. Без экспериментов — не узнаешь

Замечания приняты к сведению. 😉 Я лишь описал тот метод которым делал я, в то время мне никто не обьяснил как сделать одним плоигоном полосу поэтому изгилялся над полосой так. По поводу назначения жесткости, подразумевал что под созданную ВПП кладется ВПП сделанная в афкаде )! А вообще замечания все правильные и толковые. Это один из первых таких туториалов которые создал, так что сильно не пинайте:).

2Storm: Если будут вопросы по построениям — пиши в личку, отвечу. Что касается подкладывания афкада — это не всегда оправдано. Я использую афкад только для распознавания порта симом и прописывания стоянок с невидимыми линиями РД для траффика. Все остальное делается средствами макса и правки .асм

Сообщение отредактировано FlyingKot: 05 Февраль 2008 — 11:54

Спасибо, теперь будет от чего отталкнуться, давненько хочу попробывать это дело..

От многополигонных плоскостей уходить, кажется, не стоит, поскольку есть такой пунктик в совместимости плоскостей с FSX — размер полигона не должен быть больше 100м.
Интересно, а как в случае с FSX обстоит дело с номерами слоев!?

Я сделал ВПП 2002-м геймпаком, полигон 1600Х26 метров. Слои задавал разные, всеравно афкад ниже лежит, но сама полоса не мерцает Однако если сделать 2004-м геймпаком, то ВПП мерцает. Как быть?

Да, слои в десятке отменены. Или по крайней мере не гарантирована последовательность их отрисовки.

Разметка АФКАДа никак не будет выше вашего полигона.
Раньше такого эффекта добивались делая разметку в FSSC, если не ошибаюсь.
А это, простите, код FS2000 насколько я помню.

мда…

2 Storm
Вращение текстуры в UVWUnwrap не всегда получается аккуратным, хотя и более наглядным.
Если надо повернуть на известный угол (90* например), то выбираем модификатор UVW Map.
В нём на строчке UVW Mapping кликаем по знаку «+».
Выбираем строчку Gizmo.
Теперь мы будем крутить текстурную развёртку.
Идем в панель инструментов (вверху) и выбираем инструмент Select and Rotate.
Теперь внизу экрана в поле Z: вбиваем ручками 90.0
Всё!

Закрываем или коллапсим стек модификаторов.

Хотя не закрываем. Будем делать тиллинг текстуры на единственном полигоне на раз-два.
Справа, где выбирали тип маппинга
в U Tile: вводим кол-во повторов текстуры по вертикали
в V Tile: вводим кол-во повторов текстуры по горизонтали

Вуаля!

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

Спецы! Объясните, пожалуйста, как наложить разметку на ВПП и перроне. Знаю, что альфой нужно пользоваться. Нужно просто саму текстуру с альфой иметь или что-то в максе еще прописывать? Создаю аэропорт Актау (бывший Шевченко) UATE, Казахстан. И еще как затекстурить бордюр РД, примыкающей к ВПП? Накладывать на каждый полигон с постепенным поворотом или создать сразу текстуру с поворотом и наложить? Спасибо, заранее. :umnik2:

Просмотр сообщенияdaurik (5.02.2008 22:59):

Спецы! Объясните, пожалуйста, как наложить разметку на ВПП и перроне. Знаю, что альфой нужно пользоваться. Нужно просто саму текстуру с альфой иметь или что-то в максе еще прописывать? Создаю аэропорт Актау (бывший Шевченко) UATE, Казахстан. И еще как затекстурить бордюр РД, примыкающей к ВПП? Накладывать на каждый полигон с постепенным поворотом или создать сразу текстуру с поворотом и наложить? Спасибо, заранее. :umnik2:

Есть вариант простой. Есть вариант сложный.

Начнем с общего:
1. Создаем сплайн по нашей разметке
2. Делаем из сплайна контур с помощью окошка АУТЛАЙН, поставив галку «от центра», указав величину ширины контура и нажам ЭНТЕР
3. Конвертим в эдитбл поли.

Далее варианты
Простой.
1. Создаем квадратную текстуру с цветом разметки и альфаканалом, который чем черней, тем прозначней. Добавив в «полупрозрачный» альфаканал шум можно сделать эффект наложения на поверхность асфальта.
2.Сохраняем. Идем в МАКС.
3.В максе применяем текстуру к нашим полигонам разметки.
4. Добавляем модификатор УВВ МЭП и делаем гизмо квадратным, где стороны квадрата должны быть сравнительно небольшими, чтобы эффект наложения краски на асфальт не стал эффектм наложения краски на булыжники на побережье.
Время работы: очень мало.

Сложный вариант
1. Создать текстуру разметки с учетом потертостей, с неровными краями, трещинами и тд. Потертости, неровные края и тд .делаются в альфаканале.
2. Сохраняем. Идем в МАКС
3. В максе применяем данный материал по полигонно или небольшой группе полигонов разметки.
4. Добавляем модификатор УВВ АНВРАП и двигаем точки так, чтоб неровные края на текстуре лежали по краям полигонов, а не по центру или еще где-то там…
5. В зависимости от размера полигона и размера текстуры делаем тиллинг большой или маленький… больше единицы значение или меньше.
6. Повторяем пункты 3,4,5 пока не оттекстурим так все.
7. Получается офигенно красиво ( как в вене от флай-тампа), но времени требует огого сколько. Очень много.

Можно сделать за место п.4 так
4а. добавляем модификатор УВВ МЭП и ставим тип развертки ФЭЙС. В этом случае на каждый полигон будет добавлено по одному экземпляру текстуры.
Вроде негеморройно.. Ан нет. Если полигоны разной длины ( ширина постоянна — это понятно — разметка одной шиирины ), а накладывается всегда 1 экземпляр текстуры, то в итоге для разных по длине полигонов будут видны искажения текстуры.
п. 6 с тиллингом прокатит, если применять его по-полигонно. Т.е. в итоге все равно трудозатратно.

з.ы. Касательно сложного варианта придется еще дофига считать.
Поясню. Допустим делаем одинарную осевую линию. С учетом неровных краев в максе делаем контур чуть по-шире: по ГОСТ 0,15м, сделаем 0,250м
Т.е. ширина линии разметки будет 0,25м — это важно. Создаем текстуру. Допустим 32х1024 пикселя, где 32 ширина линии разметки, 1024 — длина линии разметки. Учитывая то, что по ширине текстура должна повторяться один раз ВСЕГДА, то получаем, что 0,25 м соответствует 32 пикселя, тогда 1024 пикселям будет соответствовать ( считаем пропорцию) 8 метров. При соблюдении этих условий текстура будет отображаться без искажений по длине.
Но как быть, если мы наложили текстуру на полигонполигоны, длина которых, допустим 100м ?? ведь если не повторить текстуру, то она будет безобразно вытянута. В этом случае считаем 100м имеем 8 метров = 12,5 раз мы должны повторить текстуру. Что и «запишем» в тиллинг — текстура повториться по длинне 12,5 раз и все будет как в лучших домах лондОна и жмыринки. :))))
з.з.ы. Погрешность +- нескоьлко метров — не страшно. Т.е. в принципе приблизительного расчета хватит. Но все равно считать надо.

Разметка в Гмаксе потребует отдельного туториала. Принцип создания такой-же но с разметкой возникает несколько трудностей и ньюансов. Для начала надо решить, будет ли разметка текстурой или нет, будет с использованием альфы или нет? Предположим разметка ез текстуры, в таком случае при создании полигона просто выбираем ему цвет наиболее потходящий под цвет разметки. Но в таком случае разметка будет выглядеть в симе немного пластиково. Если такой уровень разметки вас не устраивает, то лучше применять текстуру. Текстура без альфы будет просто покрывать разметку, текстура с альфаканалом даст немного «рваные» края, и небольшую прозрачность, (как сделано у меня и в Толмачево Тим). Это так-же немного уберет мерцание разметки. С текстурой определились, теперь просто строим полигоны разметки. Я делал так, в начале прямые (все одним полигоном, потом натягивал на них текстуру 9как тут описали после моего тутора, чтоб не надо было делить полигон на части). Далее делал различные кривые, Чтоб не заморачиваться, сделал несколько кривых определенного радиуса, и просто клонировал их. Самое муторное с моей точки зрения это изгибание разметки. Точнее не изгибание. а подгон под текстуру, чтоб «зебры» небыло. Мне приходилось практически вручную передвигать точки. Трудности сопряжены с тем что если текстура с альфой (и по краям прозрачная), то при неправильном метоже может возникнуть ситуация, что текстура до поворота ложится нормально, а при повороте пойдет как бы зеброй, то есть полигон поварачивается, а текстура нет. В начале было тяжко эти кривые делать, потом принаровился. В общей сложности на разметку ушла неделя работы. Возможно есть и другие способы но я о них незнаю. И еще, если текстура с альфой и по краям прозрачная, сразу учтите что полигон надо брать чуть шире, чтобы видимая часть соответствовала нормативам. Так-же в симе советуют делать разметку чуть потолще. чтоб видно было лучше, но я отказался от такого варианта сделал по правилам.