Моделирование  с помощью сплайнов.

Ресурсы:  
 
Новости  
О проекте  
Файлы моделей  
Файлы сценариев  
Репортажи  
Документация  
Исторические факты  
 Аудитория  
 
Наши проекты 
 
Гостевая  
  Полезные ссылки  
 
Авторы:  
Белов Александр    
Гончаров Игорь    
 
____________________

Rambler's Top100

Автор: М.Самохин
 

Вот мы взяли мышку в руки, и не стало в доме скуки

(Почти детская песенка)

 

Понадобятся:

-G-max, установленный и настроенный;

-чертежи моделируемого ЛА с сечениями фюзеляжа;

-заточенные руки, вставленные правильным концом в нужное место;

-кофе/чай/пиво (на выбор) + терпение (обязательно).

 

 
 

0. Intro

 Большинство туториалов, которые мне встречались описывают технологию изготовления различных деталей из примитивов, включённых в стандартный набор инструментов G-Max_а (цилиндр, бокс и проч.). При этом моделирование ведётся в так называемом Editable Mesh. Технология не очень продуктивная, т.к. высокополигональные визуалки, которые  нынче в моде, содержат порядка 20-25 тыс. вершин (для модели средней сложности). Представте, что вы должны ВРУЧНУЮ точно спозиционировать КАЖДУЮ из них. Предлагаю, на мой взгляд,  более изящную и времясберегающую технологию, которая позволяет довольно просто редактировать геометрию деталей. Эта технология применима практически к любой детали самолёта, начиная от колёс шасси и заканчивая лицом пилота. Данный туториал написан с прицелом на моделлера, который имеет лишь начальный опыт работы в G-Max (типа, серия С чего начать), поэтому для продвинутых челов этот туториал может показаться несколько избыточным и перегруженным деталями. Кстати, почти все рисунки в тексте даны с уменьшением масштаба, так что, если что-то не совсем ясно в рисунках, их попросту можно увеличить

 
 

1. Готовим графику

Итак, погнали. Прежде чем начатьмоделирование, подготовьте чертежи выбранного самолёта. На чертежах ОБЯЗАТЕЛЬНО должны присутствовать сечения фюзеляжа (чем больше, тем лучше точнее получится модель) ведь именно по ним мы и будем строить нашу самолётку. Как правило, на одном листе отсканированного чертежа содержится несколько видов, плюс сечения, плюс деталировка, плюс прочие радости виртуального моделиста. Для удобства дальнейшей работы готовим несколько файлов:

-вид сверху;

-вид снизу;

-вид слева (справа);

-вид спереди;

-сечения (совмещённые по осям в одном файле; или каждое сечение в отдельном файле, если на совмещённом виде сечения сливаются).

 

Так это выглядит у меня (рис. сверху; каждое сечение и каждый вид отдельная БээМПэшка) Кстати, вопрос знатокам - что за самолёт? Только не подсматривать, дальше по тексту можно найти ответ.

 

Серый фон (115,115,115) выбран не случайно это дефолтный цвет G-Max-ового окна, и на нём фон подготовленных видов не будет сильно отличаться. Особенность бээмпэшек в том, что ВСЕ они выполнены в одном разрешении и виды занимают всё поле от границы до границы. Кроме того, вертикальная и продольная оси самолёта на видах сверху/сбоку/спереди (для сечений вертикальная и поперечная оси) проходят через центр картинок. Именно этим объясняется наличие свободного поля внизу на видах спереди и сбоку. Это необходимые условия для правильного позиционирования видов в окнах G-Max-а. На этом этапе имеет смысл проверить соответствие размеров чертежа на различных видах. Часто бывает так, что, например, размах крыла на виде сверху и на виде спереди занимает различное количество пикселей. Или длина на виде сбоку и на виде сверху не соответствует. Так что, настоятельно рекомендую проверить это и при необходимости внести коррективы.

 
 

2. Запускаем G-Max

Надеюсь, туториал по кликанью на иконке G-Max-а нам не понадобится.

Итак, перед нами три окна проекций и перспективный вид. Выбираем вид спереди (Front) и загружаем фоновым рисунком картинку с совмещёнными сечениями (в моём случае картинку с первым сечением). Для этого в главном меню выбираем View-Viewport Background (или просто нажимаем Alt+B кому как проще). В появившемся окне выбираем нужный нам файл (кнопуля Files), Display Background и Lock Zoom/Pan вкл.; Aspect Ratio Match Bitmap. ОК-аем.

Если вид был подготовлен правильно, то пересечение осей сечения (уж простите за тафталогию) расположится точно по центру осей G-Max-а. Если сечение смещено относительно центра, то чё-то вы наколбасили при подготовке битмапки

 

3. Строим сечения

Теперь, внимание. Данную операцию опишу один раз на примере одного сечения дальше сами. В типе объектов выбираем Line (как показано на рисунке) и строим половинку сечения, кликая мышкой в нужных местах.

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

 

Переходим в закладку свойств объекта и выбираем подобъект вершины. Выделяем все точки нашего сплайна, которые топерь стали видны и меняем их тип (сейчас они Corner, поэтому линия, соединяющая точи ломанная). Для этого на одной из выделенных точек кликаем правой кнопкой и в появившемся квадранте (чёрт, не знаю, как правильно назвать эту фигню по русски, поэтому буду тупо транскрибировать английские названия) назначаем точки как Smooth, Bezier или Bezier Corner. При выборе Corner мы не имеем возможности управлять кривизной линии. Bezier даёт возможность только симметрично управлять кривизной, тогда как Bezier Corner позволяет гнуть сегменты линии независимо друг от друга. Я остановился на последнем варианте, хотя возможно для вас подойдёт больше что-то другое (можно и комбинировать тип точек в одном сплайне всё зависит от формы сечения).

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

4. От плоскости  - к объёму!

 

Итак, сечения (вернее их половинки) построены, чаёк-кофеёк выпит, едем дальше. Теперь нам потребуются битмапки с видами сверху/сбоку/спереди. Существует несколько вариантов размещения и масштабирования бэкгрундов, я для себя выбрал следующий. Строю габаритный параллелепипед (ну, блин, слово) со сторонами, равными размерам моделируемого самолёта. Затем в соответствующие виды подгружаю нужные битмапки, как мы это делали с сечениями (см. выше), с той лишь разницей, что опцию Lock Zoom/Pan выключаю. Далее, зумом изменяю масштаб вида (НЕ МАСШТАБ ПАРАЛЛЕЛЕПМПЕДА!!!)до тех пор, пока границы битмапки не впишутся в размеры этого самого параллллл., после чего опять включаю Lock Zoom/Pan на панели выбора бэкграунда. Если с одной попытки уместить габаритный паралл. в картинку не удалось, например вы вылезли за границы активного окна, то включаем Lock Zoom/Pan, центрируем вид, опять отключаем Lock Zoom/Pan, и снова масштабируем вид. (Иногда при переключении видов рисунок растягивается не пойми как. Для восстановления прежнего вида достаточно вызвать по Alt+B панель выбора бэкграунда и щёлкнуть Ок.)

 

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

Если всё было сделано правильно, то в настоящий момент мы имеем набор отдельных сплайнов, каждый из которых представляет собой половинку одного сечения (рис. сверху). Начинаем их объединять. Выбираем первый сплайн, нажимаем кнопку Attach на правой панели инструментов и последовательно щёлкаем на сплайнах, обязательно соблюдая порядок их следования. По завершению, отщёлкивем Attach.

 

На данной модели я решил отдельно делать капот двигателя и отдельно собственно фюзеляж, поэтому создал два объединённых сплайна (выделены разными цветами на рис. слева)

 
 

5. Самолёт без капота как музыкант без ноты.

Выбираем первый сплайн, из которого скоро вырастет капот (на предыдущем рисунке красный). Прежде чем продолжим, надо настроить привязку. Для этого в главном меню выбираем Customize Grid and Snap Setup. В появившемся окне в закладке Snaps выбираем только Vertex, закрываем окно. Теперь, нажатием клавиши S можно включать или выключать привязку к вершинам, что поможет в дальнейшем при построении сплайнов в окне перспективы. Если лень тянуть руку до клавиатуры, то активировать/деактивировать привязку можно кликая на значке (рис. справа), расположенному на нижней панели инструментов

 
 
Для удобства развернём окно перспективы на весь экран, активируем сплайн капота и выставим вид так, чтобы нам было удобно строить продольные сплайны, соединяющие сечения. Активируем сплайн капота, на панели свойств объекта (та, что справа) нажимаем кнопку Create Line, отключаем Poly Connect и начинаем строить соединяющие линии. При этом привязка к Vertex-ам должна быть включена. Как только G-max предложит вам объединить вертексы, отказывайтесь. В результате должна получится конструкция, как на рисунке снизу. Тут нам и понадобиться одинаковое количество вершин в каждом сечении. Правда, продвинутые моделлеры могут позволить себе вольность соединять  сечения с разным количеством вершин, но для этого нужно чётко представлять геометрию готовой деталь и понимать, какие сплайны к какому результату могут привести. Так что, отложим это на попозже, нам нужно получить основные знания и навыки. Небольшое отступление. Я хоть и говорю, что мы соединяем вершины сечений, на самом деле, это не совсем так. Из одной вершины может выходить не больше двух сегментов сплайна. Если из вершины выходит больше сегментов, значит в там две или более вершин с одинаковыми координатами (для этого и включается привязка к вершинам). После того, как продольные сплайны построены, начинаем настраивать их кривизну, как это делали с сечениями (выделяем точки ПРОДОЛЬНЫХ сплайнов, переводим их в нужный тип, узлами регулируем кривизну), подгоняя максимально точно под обводы чертежей

Половинка готова. Теперь можно её скопировать и отзеркалить. Для этого в списке модификаторов выбираем Mirror, отмечаем ось, относительно которой будем зеркалить и включаем опцию Copy. После этого можно сколлапсить стек модификаторов, следя за тем, чтобы тип объекта остался Editable Spline. После того, как мы отзеркалили половинку, выделяем точки по продольной оси симметрии и с_Weld_им двойные вершины, которые получились
 
  Перед завершающим рывком осталось навести порядок в вершинах. Для наглядности и удобства можно включить номера вершин Show Vertex Numbers, как показано на нижнем рисунке. Кстати, для удобства выбора вершин часть сегментов и, соответственно, вершины, им принадлежащие, можно временно прятать, выделяя их и нажимая кнопку Hide на правой панели инструментов  
   
 
Порядок нумерации вершин для сплайнов должен быть одинаковым. На рисунке сверху порядок нумерации нижнего сплайна отличается от других. Чтобы его перевернуть, выбираем третью вершину и на панели свойств объекта нажимаем кнопку Make First. Порядок. Теперь тоже самое проделаем для сечений. Для удобства Распрятываем их и прячем продольные сплайны.

 Первый сплайн отличается не только по порядку нумерации, но и по направлению обхода вершин. Выделяем вершину 6 на первом сплайне, жмём кнопку Make First для изменения порядка нумерации и Reverse для изменения направления обхода точек. Ну, вроде, порядок

 
  А теперь, собственно действие, которое из нашей проволоки сделает нормальный капот. В списке модификаторов выбираем Surface:  
 

и настраиваем параметры модификатора:

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

Flip Normals если вы неправильно выбрали направление обхода вершин при нумерации и ваша деталь оказалась вывернутой наизнанку, то активация параметра исправит дело.

Remove interior patches всегда Вкл точно не помню, кажется не даёт строить полигоны внутри детали

Use only selected segs. позволяет строить поверхность только по выделенным предварительно сегментам сплайна.

Patch Topology определяет количество участков, на которое разбивается каждая ячейка нашей проволочной модели. Для наглядности два рисунка

со Steps, равному 0  

...и 20

Я остановился на значении Steps, равным 3, в результате чего получился симпатичный капотик. Если вы удовлетворены результатом, то осталось перевести объект в Editable Mesh и оптимизировать его по количеству полигонов. Об общей идеологии сего действа речь пойдёт чуть ниже.

 
 

4.Делаем фюзеляж.

Вернёмся теперь к сплайну, который мы сделали для собственно фюзеляжа

На этот раз мы соединим сечения несколько иным образом. Ещё разок убедимся в том, что нумерация вершин и направление нумерации одинаково для всех сегментов сплайна, после чего в списке модификаторов выберем модификатор CrossSection. Если вы не соблюли порядок приаттачивания отдельных сплайнов-сечений в общую кучу, то именно сейчас это и выявится, и вместо нормальных продольных линий может получиться полная ерунда. Если так, то удаляем модификатор из стека, в режиме сегментов выделяем по одному сечению и жмём кнопку Detach, в результате опять получаем набор отдельных сплайнов-сечений. После этого производим сборку сплайнов в правильном порядке. Будем считать, что у нас всё хорошо, и модификатор CrossSection не преподнёс нам неожиданных сюрпризов. Настраиваем параметры модификатора, определяя, какого типа вершины будут его образовывать. Я остановился на Smooth, переведя лишь несколько вершин в тип Bezier Corner для удобства управления кривизной линий. С помощью узлов подгоняем свежеобразованые сплайны под обводы чертежей и коллапсим стек модификаторов, опять-же наблюдая за тем, чтобы тип объекта оставался Editable Spline. После этого по отработанной технологии из проволоки делаем Surface, и, если всё получилось хорошо, переводим в Editable Mesh.

 

Все дальнейшие действия будем проводить только с  Editable Mesh, поэтому стек модификаторов можно сколлапсить. Имейте ввиду, что из Mesh_а Spline вы уже не сделаете, эта операция необратима, и меняйте тип объекта только если геометрия детали вас полностью устраивает. На этом этапе можно слегонца подретушировать свежеиспечённую половинку фюзеляжа с точки зрения количества полигонов (попросту грохнув некоторые их них).

 
   

5. Фонарь нам светит

Принимаемся за вырез для фонаря. Переходим на вид слева и строим новую Line таким образом, что бы она повторяла линию сопряжения фюзеляжа и фонаря

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

 

Теперь выбираем фюзеляж, и переходим в закладку создания объектов, где выбираем семейство Compaund Objects, тип ShapeMerge

Жмём кнопку Pick Shape, в качестве операнда выбираем Reference, и кликаем на Line. Опаньки, линия фонаря спроецировалась на фюзеляж, где появились новые точки. Полигоны внутри линии можно убить сразу

 

 

Кроме того, необходимо удалить лишние точки, которые не влияют или влияют крайне незначительно на вид получившегося проёма. Останется только построить новые полигоны. Собственно, мы уже принялись за полигональную оптимизацию. Дело это ответственное, и, порой, нудное, но ОБЯЗАТЕЛЬНОЕ. Для построения полигона необходимо перейти в режим подобъектов Polygon, нажать кнопку Create и последовательно щёлкать по вершинам, которые мы хотим включить в полигон. На последней точке полигона щёлкаем два раза. Старайтесь в один полигон включать не больше 4 вершин. Если некоторые полигоны оказались невидны, значит вы выбрали неправильный порядок обхода вершин, и нормали полигонов направлены от вас. Отщёлкиваем кнопку Create, выбираем неправильные полигон, кликая по ним с нажатым Ctrl и щёлкаем на кнопке Flip Normal (правая панель). Теперь с нормалями все нормально

 

 

Вся эта котовасия для того, что-бы сэкономить полигоны, и минимальными средствами добиться максимальных результатов. Запомните, что все логические операции (Boolean, ShapeMerge и проч.) выполняются G-Max-ом тупо, в лоб. При этом образуется большое количество паразитных точек и полигонов. Чем это чревато, надеюсь, объяснять не надо. Порой результат полигональной оптимизации может превзойти все ожидания. Даже на такой небольшой детали удалось избавиться от 112 полигонов при их общем количестве 362 после оптимизации. По-моему, неплохо, и это при том, что внешний вид детали не изменился. В принципе, по полигональной оптимизации можно дать только общие советы всё зависит только от вашего опыта и видения конечного результата. Поэтому пробуйте, ошибайтесь и ещё раз пробуйте. В конечном итоге ваши усилии будут отблагодарены довольными симмерами, ведь в конечном итоге мы работаем именно для них, независимо от внутренних мотиваций.

Вернёмся к нашей половинке фюзеляжа. Обратите внимание, что новые полигоны не имеют назначенных групп сглаживания и выглядят не совсем хорошо. Кроме того, если ваш полигон содержит больше трёх точек, то, он будет иметь внутреннее ребро, по которому, как правило, будет проходить граница затенения. Иногда этим можно пренебречь, иногда нет. Поэтому для проверки на наличие таких неприятных мест снимаем с полигонов назначенные группы сглаживания

 
 

Для этого в режиме Polygon выделяем все полигоны и в Smoothing Groups щёлкаем кнопку Clear All и внимательно изучаем нашу деталь с разных сторон на наличие таких вот мест (рис справа, слева).

Как видно, затенение выглядит не слишком правильным. Для исправления этого безобразия переходим в режим граней (кнопка с контурным треугольником), нажимаем кнопку Turn и щёлкаем на неправильно ориентированных рёбрах, пока не исправим порядок затенения на более приемлемый. После этого опять выделяем все полигоны и назначаем им группу сглаживания. Останется только отзеркалить с копированием половинку фюзеляжа, перейти в режим вершин, с_Weld_ить их с Threshold=0.001 и сделать Remove Isolated Vertices.

 

 

 

 

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

 

В Аудиторию!

Hosted by uCoz