Как я делал трубу.


Уже есть в Интернете туторы о том как делать трубы, но поступила жалоба – непонятные они, туторы эти. Так часто бывает – автор и такие же по уровню люди понимают смысл, а новички в сторонке курят не в затяг. Получается как в сказке: «А путь туда найдет лишь тот, кто знает его». Поэтому я постарался максимально просто и подробно расписать, как я делал трубу... Правда, мной предполагалось, что учебник Дмитрича Вы уже освоили.
ссылка на учебник Дмитрича
кто не освоил, лучше не затягивайте, а то я буду слова использовать непонятные для Вас.
Поехали.

===============
Понятное дело, что прямой участок трубы легко и непринужденно делается при помощи многоугольной призмы, которая в Хаммере называется «цилиндром»:
Нажать для просмотра
рис 1

===============
Побольше придется повозиться с коленом – изгибом трубы. О колене речь и пойдет.

Вариант 1

Можно сделать по простому: нарезать прямую трубу на куски, как колбасу, и мучаться с инструментом «вертекс-тул». Примерно так:
Нажать для просмотра
Рис. 2

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

Вариант 2

Мне лично не нравится предыдущий изгиб. Поэтому буду делать по-другому и основательно.

1 шаг. Вступление.

Сначала я определюсь с сечением трубы. Мне хватит 32-угольника с диаметром в 8 клеток. Обратите внимание: на рис. 3 зелёненьким подсвечены настройки, облегчающие создание задуманного браша. Кстати имейте ввиду, что Хаммер все вертексы размещает в узлах сетки – это очень удобно, хоть на рисунке и не видно, потому-что сетка грубоватая – 16 юнитов на ребро.
Нажать для просмотра
Рис. 3

2 шаг. Создание «эталона».

Теперь я хочу слепить из треугольных призмочек (не путайте с пирамидками) аналог этой трубы. Зачем мне такие сложности объясняется в статье "Браши, вертексы и сетка". Итак, будем считать, что на рис. 3 вид сбоку, значит, в виде сверху я увижу вот такое:
Нажать для просмотра
Рис. 4

Если внимательно вглядеться, то можно увидеть 16 прямоугольников. Вот для каждого такого прямоугольника я сделаю «кирпич» (прямоугольный параллелепипед) из двух треугольных призм. Сначала сделаю один кирпич из двух призм, потом сделаю 15 копий, а после подровняю по ширине:
Нажать для просмотра
Рис.6

Чтобы было всё понятно, повторю еще раз по пунктам (смотрим на рис.6):
1. Создал один браш, выделил его, нажал «вертекс тул» и провел мышкой по экрану, так, чтобы захватить один вертекс в желтый пунктирный прямоугольничек. Зеленой стрелочкой нарисовано, что я дальше собрался делать.
2. Когда я совместил вертексы, выскочило окошко с вопросом «Объединять ли вертексы?» Конечно объединять, иначе ошибка будет. Глупое какое-то окно, положа руку на сердце.
3. Тут я подтаранил второй брашик к первому, получился «кирпич».
4. С зажатым Шифтом начал прислонять один кирпич к другому, и так 15 раз (один уже есть). Поставил эту конструкцию рядом с куском трубы и приготовился сжимать кирпичи по вертикали (два рисуночка: в 2D и в 3D).
5. Так как я делаю эталон, мне бы хотелось, чтобы он был максимально точным, поэтому я выставил самую тонкую сетку «Grid 1». После чего я выделяю мышкой сразу два вертекса (на самом деле четыре, потому что под верхними двумя есть еще и два нижних) и подтягиваю мышкой к центру, чтобы линии справа (те, которые от цилиндра, разметочные) и слева (которые я шевелю) совмещались.
6. Вот что получилось (два рисуночка: в 2D и в 3D). Когда есть разметка, думать особо не надо, легко вертексами шевелить по разметке.

Чтобы не делать потом лишней работы я сразу раскрашу свою конструкцию.
Нажать для просмотра
Рис.7

Смотрим на рис. 7: сначала я выбираю текстуру NULL, потом выделяю мышкой всю конструкцию и жму кнопку «Красить всё». Потом перехожу в 3D вид (рис. 8) и раскрашиваю верхушку вот такой зеброй: два соседних треугольника - красным, следующие два соседних – желтым:
Нажать для просмотра
Рис. 8

Делать это быстрее, чем писать об этом. Хотя если вы соберетесь накладывать нормальную «трубную» текстуру, то лучше оставить раскраску на сладкое – при работе с вертексами текстуры всё равно колбасит - придется ровнять в конце. И насчет текстуры «NULL»: она лучше чем «SKY» и «{blue» в смысле оптимизации карты. Потому что текстура с маской всё-равно добавляет полигоны, а «небо» просто не ложится на энтити – выдает ошибку, (а вдруг мне захочется потом трубу фанк_волом сделать). Правда, если оставить трубу брашевой, то внутренние текстуры поудаляются компиляторами, поэтому можно вообще не переживать какая там внутри текстура. Зато с энтитями история другая – у них все внутренние перегородки прорисовываются. В общем, я крашу внутренности НУЛЛом.
Ну-с, пора заканчивать второй шаг, дело за малым: подровнять мою конструкцию в виде сбоку. Задача выполняется легче, если идти от центра и выделять сразу оптом все вертексы, которые еще не на месте – чтоб далеко за каждым вертексом не ползать…, я сдвигаю их скопом и они всегда рядышком, в пределах видимости на экране. Вот рисунок об этом:
Нажать для просмотра
Рис.9

Обратите внимание, что моя конструкция снизу заканчивается на половине круга. Поэтому, когда я сдвину самые крайние вертексы вниз, опять выскочит окошко с вопросом «Объединить вертексы?». Да объединить, объединить, конечно. С краёв у меня получатся уже не призмы а пирамидки из-за этого.
Ну и финал второго шага: выделяю конструкцию, делаю копию, отображаю копию два раза по вертикали (Ctrl+i, в плоскости X/Y и в плоскости Y/Z), подставляю копию под низ оригинала, выделяю всё скопом и группирую в один объект – эталонный кусок колена готов. Вот так это в картинках смотрится:
Нажать для просмотра
Рис. 10

На всякий случай можно проверить на ошибки, нажав «ALT+P». У меня засветилась только одна ошибка: «Нету точки рождения игрока». С этим жить можно. Если бы не писанина и скриншоты, сделалось бы это всё за пять минут.
Небольшое отступление:
Тут я заметил, что если сделать копию моего эталона и прислонить ее к самому эталону, то текстурки на них не совпадают. Поэтому я заменил на копии красную текстуру на желтую, а желтую на красную. Ну это для понятности написано, а то будете удивляться, как так у меня вышло, что красивые линии по трубе бегут, а у Вас не так получается.

Нажать для просмотра
Рис. 11

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

3 шаг. Разметка колена (изгиба).

Сначала определяюсь с радиусом изгиба. Например, моя труба идет вдоль стены на расстоянии 16 клеток. Это и будет радиус изгиба.
Нажать для просмотра
Рис. 12

Вот я расположил прямые отрезки трубы на расстоянии 16 юнитов от стены, и желтыми стрелочками показал, что обрезы труб у меня находятся строго по краю стены. Так надо.
Теперь я принял волевое решение, что у меня изгиб будет состоять из восьми кусков (сегментов). Значит мне надо, чтоб на четверти окружности (изгиб ведь в четверть окружности, трубу загибаю на прямой угол) помещалось восемь прямых отрезков, тогда на всей окружности поместится: 8 отрезков * 4 части окружности = 32 отрезка. В общем, я делаю 32-угольник с радиусом в 16 клеток и помещаю его центр в угол стен:
Нажать для просмотра
Рис. 13

Делаю внешний круг, копирую трубу, поворачиваю копию таким образом, чтобы она как можно точнее совпадала с вертексами кругов, делаю разрезы строго по вертексам кругов от центра круга и вот у меня один сегмент разметки готов:
Нажать для просмотра
Рис. 14

И так восемь раз:
Нажать для просмотра
Рис. 15

То есть, с самого начала вся работа занимает минут 10, не больше. Разметка готова. Перехожу к созданию самого колена.

4 шаг. Колено.

Кстати, у кого-то может возникнуть желание на этом шаге и остановиться. Хочу обрадовать: если Вы будете использовать разметку, как готовый продукт, то получите коцанную трубу, всю в трещинах. Это если еще получите, а то может ещё сам Хаммер ругнется, дескать браши кривые.
В общем, дело за малым: надо взять восемь эталонных сегментов, которые я делал на втором шаге и дергать у них вертексы так, чтобы с торцов они совпадали с ровными кусками труб, а в середине лежали очень близко к моим разметочным точкам. Необязательно совсем точно попадать в разметку, да иногда это и не получается, никто с линейкой по этой трубе ползать не будет, чтобы проверять точность. Работа кропотливая. Если есть трудности с двиганием вертексов рекомендую почитать

Vertex Manipulation — изменение формы объектов.
и Тутор "Создание земли и холмов".

Сначала я сделал 4 копии моего эталона (он у меня двойной, если помните), получил 8 сегментов. Разместил их как показано на первом скриншоте (рис. 16). Просто в данном конкретном случае мне показалось с такой постановки начинать удобнее. После этого включил "вертекс тул", настроил его на работу только с вершинами, чтоб желтенькие квадратики не засоряли экран. И начал монотонно выделять каждый узел и передвигать его примерно по разметке.
Нажать для просмотра
Рис. 16

Добрый совет: Желательно сгруппировать эталонные сегменты перед этой вертексной эпопеей. Дело в том, что иногда мышка попадает в центр (или на ребро) разметочного браша и тогда, вместо нужного узла, выделяется совсем другое-ненужное. Чтобы продолжить работу приходится выходить из режима "вертекс тул" и по новой выделять всю конструкцию.
Итог труда видно на рис. 17. Правда я не удержался и на втором скриншоте (3D) ровные участки трубы заменил на эталонные сегменты - стало похоже на карамель.

Нажать для просмотра
Рис. 17

Всё, кривая труба готова. Настала очередь работы над ошибками.

5 шаг. Работа над ошибками.

"ALT+P" не показало никаких ошибок. Но это еще ничего не значит. Я сохраняю карту в формате "*.map", закрываю её и открываю снова этот мап-файл. Вот оно! Перед открытием карты выскакивает окошко: "на вашей карте присутствуют косяки. нажмите ок"

Рис. 17_1

Жму "ок", открывается карта. Ну, как и следовало ожидать, разметку покорежило. На следующем рисунке я поместил скриншоты этой разметки из формата RMF и MAP рядышком, для сравнения. Вот как она выглядит в MAP, так примерно и откомпилируется, если кому-нибудь вздумается её компилировать.
Нажать для просмотра
Рис. 17_2

Но вот неприятная неожиданность - эталон то тоже посекло... и колено вместе с ним. Вон на рисунке видно
Нажать для просмотра
Рис. 17_3

Мораль: Не надо расслабляться в Хаммере.
А не ошибается тот, кто ничего не делает.
В общем и целом оказалось, что на эталоне с краешков есть фигура - четырехугольная пирамидка и она в формате MAP "через раз" не прорисовывается. Причина такой неприятной странности в том, что есть у этой пирамидки одно ребро длинной всего в один юнит. Наверное Хаммер "через раз" считает, что это нехорошо. Значит надо что-то решать.

Прыгая из MAP в RMF и обратно, проверяя разные варианты, было найдено аж целых два решения:
1.Сделать это короткое ребро длиннее на один юнит. В масштабах трубы, этой "подмены" всё равно никто не заметит.
2.Сделать вместо четырехугольной пирамидки треугольную. Рабочая поверхность то у нас - один единственный треугольник на каждый браш, поэтому так сделать можно легко. Подтвердилось, что Хаммер спокойно воспринимает треугольные пирамидки с ребрами даже в один юнит.

С новым эталоном (блин, надо было раньше его проверить) делаю колено по новой. Еще раз всё проверяю и удаляю разметку. Теперь можно почитать о багах, связанных с брашворком в статье "Браши, вертексы и сетка".

=======================================
P.S.

Можно было бы разметку делать другим способом: я использовал (см 3 шаг) в начале внутренний и внешний круги, можно было бы не нарезать из труб разметочные сегменты, а использовать 17 кругов (по числу продольных линий на трубе) с соответствующими радиусами, так же как я использовал только круги внешнего и внутреннего радиуса . Плюс этого способа в том, что разметка получилась бы сразу по сетке, и не надо было бы гадать, в какой узел сместить вертекс (рис. 18).

Нажать для просмотра
Рис. 18

На рис. 19 я по быстрому изобразил третий способ разметки. Каждый сегментик можно не вырезать отдельно, а просто копировать и поворачивать вместе с "противовесом":

Нажать для просмотра
Рис. 19

=============================================
Посчитаю-ка я во сколько полигонов вышла мне эта труба: На одном сегменте у меня 32*2=64 полигона. Таких сегментов у меня 8. Значит, одно колено имеет 64*8=512 полигонов. Короче, такая труба мне не понравится – много жрет полигонов. Надо было сечение полегче выбирать.
=============================================
А если мне захочется трубу сделать моделью, я воспользуюсь программой Deep Exploration. Если грани браша треугольные или четырехугольные, то Deep Exploration должен без проблем переконвертировать мою брашевую трубу (из кучи брашей) в модель... Наверное... Никогда так не делал.

============================================
Баловство

Теперь, при помощи одного такого колена, я могу лепить разные штуки. Например спираль (рис. 20):
Нажать для просмотра
Рис. 20

Кстати с первого раза скомпилировать ее не получилось - слишком много брашей было в этой спирали (512*12 = 6144 шт.), пришлось удалить кусок.

=========================================
Всего доброго.

=========================================
28.06.2008
Роман
rotoz@gorodok.net
=========================================
спасибо Biomech, за пристальное внимание к тутору и найденную ошибку
===============
на главную
===============
cs-mapper