Here comes.
Это будет длинный пост.
На всякий случай, предыдущая серия.
Предисловие
Долго думал над степенным и вдумчивым текстом вступления. Не придумал. Напишу по-простому. В этой серии я буду показательно рисовать в Blender танк. С нуля и до конца (ну почти, детальки пририсовывать не буду — это не показательно). Только моделлинг, без текстур и материалов. Основной посыл поста — показать, как в Blender выглядит реализация той или иной задумки. Поэтому, будет описание задумки и видео процесса. Видео без звука — он тут не нужен, но с показом нажимаемых кнопок.
Порой в видео будут вырезанные куски — вот уж чем я точно заниматься не умею, так видеоредактированием. Тут надо понять и простить.
Рисовать танк будем по чертежам — это хардкорней, чем фристайл. Но и результат правдоподобней. Принцип простой — восстановление 3D фигуры из проекции.
Blender предоставляет возможность подкладывать на бэкграунд 3D области картинки, причем неограниченное количество. Картинки можно масштабировать и смещать, но нельзя вращать. Картинки отображаются только в ортогональной проекции (Numpad 5), что логично — при восстановлении проекции перспектива внесла бы искажения. На то она и перспектива.
Традиционное отступление про сварщика
Сварщик я ненастоящий, да и танк тут рисуется как иллюстрация процесса на видео (что выдвигает свои требования к временнЫм затратам). Поэтому при рисовании я сделал себе следющие послабления:
- не соблюдал бюджет полигонов
- не занимался тщательной работой со сглаживанием — если только само не просилось / не доставляло проблем
- не пытался вывести все до миллиметра
- и вообще упрощал/упускал некоторые детали (иначе это заняло бы слишком много времени)
Подготовка
Поиск и подготовка чертежа
Самое первое, что надо решить — какой же танк нарисовать? Ведь Land Raider — это не танк, это продукт диверсии. Посмотрите на него сбоку и прикиньте, какие у него а) клиренс и б) способ амортизации катков. Это, кстати, фишки последних версий LR, в ранних он был инженерен. Зато он хтоничен. Я решил поискать такой же хтоничный, но более правдоподобный танк.
Ищем чертеж. Вообще, из моего опыта, сложно найти идеальный чертеж — почти всегда есть что-то из перечисленного ниже (исключение — честные скрины проекций прямо из 3D редактора):
- смещаются элементы (особенно, если это сканы)
- перпендикулярные линии не перпендикулярны
- нелинейные искажения — разные размеры у элементов на разных проекциях
Обычно это не фатально, но 100% точности не добиться.
Я взял чертеж отсюда. Мне кажется, это очень хтоничный, хоть и опошленный, танк. Но такова судьба объектов масс-медиа.
Подобранный чертеж надо нарезать на виды/сечения (вообще говоря, можно и не резать, а подгонять нужный кусок — но это неэстетично). Совет — давайте каждому файлу осмысленное имя, соответствующее виду (или сечению). Складываем в одну папку (для удобства).
Тонкости для Blender: на виде сверху нос модели должен смотреть вниз. На виде справа нос модели должен смотреть влево (потому что это справа от вида спереди). Если перепутать, то моделька будет задом-наперед/в зеркальном отражении.
Подключение и калибровка чертежей
Подключение
Открываем Blender, создаем новый файл и подключаем изображения:
Рисунок 1. Добавляем слоты (Add Image), открываем в слотах изображения (Open).
В 3D области будут отображаться все подключенные картинки одновременно, так что надо развести по видам:
Рисунок 2. Для каждого слота изображения в выпадающем списке выбираем нужный вид (вот тут и пригодится осмысленное именование). Обведенная область содежит контролы манипуляции положением изображения в виде.
Убедитесь, что в каждом виде — одно нужное изображение. (Не забудьте переключиться в ортографию).
Подключенные чертежи надо будет откалибровать (отцентрировать / нормировать размер) — это ведь проекции. Это можно сделать как в графическом редакторе (я раньше делал), так и в Blender (так я делаю сейчас).
Дальше — описание калибровки в Blender.
Калибровка
Общий алгоритм — найти на чертеже деталь, которую видно на всех видах, нарисовать ограничивающий ее примитив и подогнать размеры и положения всех картинок в своих видах так, чтобы эта деталь везде была внутри примитива и касалась его границ. Другими словами — сделать bounding box детали, попутно подгоняя картинки.
Деталь должна быть самой крупной — вы все равно точно не угадаете (просто из-за пикселизации), но цена ошибки будет меньше (если делать нормировку 100-метрового корабля по его 2-метровому якорю и ошибиться на 2% (то есть на 4 сантиметра), для корпуса ошибка составит как раз 2 метра и якорь уедет в сторону на свою длину).
В идеале — это вообще должен быть bounding box всей будущей модели. Тут я так и сделаю.
Для примера с маусом по шагам (все делается в ортопроекции — Numpad 5):
- Переключамся в wireframe (Z).
- Вид сверху (Numpad 7). Центрируем 3D курсор (Shift-C). Создаем куб (должен оказаться в центре). Масштабируем куб по X так, чтобы его ширина была примерно равна ширине модели. Подгоняем положение и размер картинки так, чтобы танк по ширине краями касался куба с обоих концов.
- Растягиваем куб по длине (лучше двигать торцы в EM), чтобы танк по длине вписался в куб.
По итогу у нас есть координаты (собственно, {0,0,0}) и размеры куба по X и Y, а также откалиброванный вид сверху.
Рисунок 3. Создаем куб в центре координат, масштабируем его (не сдвигая), правим попадание и центровку картинки по ширине, растягиваем торцы до краев модели по длине. - Переключаемся в вид спереди. Куб по X уже откалиброван, поэтому подгоняем картинку по X, затем — раздвигаем верх и низ куба на края модели.
Все, полдела сделано — у нас есть полностью определенный куб, выходим из EM и в аутлайнере снимаем возможность выделить куб (дабы не сдвинуть ненароком, а то у меня по первости руки чесались именно куб двигать).
Рисунок 4. Вид спереди: сразу после переключения, подгонка картинки, выставление высоты куба, отключение возможности выделить куб. - Так как куб полностью определен — переключаемся в остальные виды и подгоняем только(!) картинки.
Рисунок 5. Вид сбоку до (картинка гораздо меньше bounding box) и после подгонки. - Подгонка завершена. Завершаем и страхуемся — сворачиваем все слоты изображений (рис.6 ), а затем и саму группу Background:
Рисунок 6. Свернутые слоты, чтобы не ткнуть что-то ненароком.Куб можно спрятать, можно удалить, а файл — сохранить. Лучше в двух разных местах, на всякий пожарный.
Готово.
Моделирование
Вообще, перед началом моделирования лично я рассматриваю чертеж на предмет выявления основных, а так же ключевых и необычных составляющих. Довольно часто приходится обращаться к референсам — другим чертежам, фоткам, картинкам, порой даже готовым компьютерным моделям. Все как настоящем моделировании — чем больше информации у вас на руках — тем проще вам будет дальше.
Маус это:
- танк
- очень простой в плане геометрии танк (за исключением гусениц и маски орудия).
Все мы знаем, из чего состоят танки, поэтому будущая модель автоматом разваливается на (в порядке возрастания сложности моделирования):
- башню
- шасси
- ходовую часть(катки и гусеницы)
- орудие с маской.
Если быть совсем уж въедливым — маус воевал недолго, поэтому рефы к нему есть 3 типов — крупнозернистая хроника, модельки и фотки из Кубинки (большинство — из одного ракурса. Наверное, там трудно подступиться по-другому). И, к примеру, нюансы маски отличаются от источника к источнику. Вот я и оправдался перед тонкими ценителями.
Теперь оправдаюсь перед остальными — время на толковый сбор инфы у меня было не так уж много, да и я делал упор на иллюстративность процесса, так что местами я упрощал/догадывался. Но старался оставаться логичным.
Замечания о часто используемых приемах/инструментах.
Так как ниже мы упремся в конкретику, то я посчитал нужным дать небольшие пояснения по инструментам.
Костыль align to
Так как в Blender нет из коробки такого функционала, как align to, то приходится выкручиваться — использовать трансформации в локальных координатах, делать snap к каким-то вспомогательным/опорным элементам, центрировать по курсору. В случае точек есть костыль через масштабирование. Если выделить несколько точек и отмасштабировать их по какой-то оси на 0, то они окажутся на одном уровне (медианном) по этой оси. Объяснение туманное, ниже будет видно.
Knife
Knife — интерактивный (то есть, у вас есть возможность откатить косяки, не выходя из работы с инструментом) инструмент резания геометрии. В общем случае выглядит так: вы выставляете какой-то вид, переключаетесь в EM, включаете нож, обозначаете линии разреза и подтверждаете разрез. Blender режет ребра в местах пересечения с линией разреза и соединяет новые точки между собой, попутно перенатягивая полигоны.
Knife project
Knife Project (проективный нож) — это как Knife, только с использованием заранее заготовленного контура вместо интерактивно рисуемой линии разреза, с учетом проекции и только на ближайшей поверхности. Позволяет не заморачиваться со склейкой разных объектов в простых случаях.
Поехали.
Башня
Простейший подход. Берем примитив и дорабатываем (кровавой резней ребер, бескомпромиссной экструзией и решительным слиянием точек (Alt-M)). А так как башня симметрична по Y, то еще и моделируем только половину.
- Стартуем башню как цилиндр на боку (башня спереди вроде круглая).
- Отрезаем ненужный кусок цилиндра, чтобы осталась только часть цилиндрической поверхности спереди.
- Так как сбоку башня под наклоном — срезаем часть поверхности под углом наклона.
- Из остатков поверхности вытягиваем стенки/крышу (с учетом поворотной части).
- Натягиваем полигоны (со всех сторон — потребуется для работы ножа на следующем шаге).
- Делаем ножиком фаску на заднем торце башни (это больше иллюстративный шаг). Важно, чтобы с обратной стороны детали тоже был полигон, иначе сзади не будет разреза. Склеиваем точки.
- Вытягиваем опорную часть башни.
- Донатягиваем / срезаем лишние полигоны.
- Готово.
Шасси
Тут я использовал технику последовательной постройки полигонов. Очень помогает, если а) геометрия более-менее рубленная и б) слету непонятно, как сделать иначе.
- Создать кружок (потому что вручную будет сложно правильно нарисовать).
- Отрезать от него ненужное и с помощью Ctrl-ЛКМ и F дорисовать контур боковой стенки.
- Из получившегося полигона вытянуть оставшуюся геометрию шаг за шагом.
Катки
Вообще, обычно на все это хозяйство зритель особого внимания не обращает. Так что я гений Порше изобразил «от руки», так сказать. Но для ведущих катков я все-таки поискал их чертеж — и нашел его, но переделывать остальное не стал — считаю, что в принципе похоже. Все равно тут ненастоящий сварщик делает ненастоящий маус.
Опорные катки и опоры
Опоры просто нарисовал на глазок через Ctrl-ЛКМ в EM. Если кому-то это очень царапает душу — то скажу в свое оправдание, что овчинка в данном случае выделки не стоит.
Катки — через экструзию и масштабирование по осям.
- Как уже было сказано, экструзия — это 2 операции — собственно создание новых элементов с установкой связей и перестановкой выделения на них, а затем — перемещение. Если выделить элементы, нажать E и Enter, то новые элементы создадутся, но никуда не сдвинутся.
- Если при масшатбировании нажать X, то оно будет идти только по X. Если же нажать Shift-Х, то оно будет идти по ВСЕМ осям, КРОМЕ Х.
Ленивцы
Чистая иллюстрация 2х методик — создание тела вращения и применение булевых операторов.
Ведущие катки
Вот он, найденный чертеж:
Рисунок 7. Ведущий каток, вид сверху. Обратите внимание так же на порядок следования опорных катков.
- для шестеренки использовал подсмотренный трюк с Checker Deselect. Важные нюансы трюка: а) количество сегментов круга-донора = количество зубьев * 4, б) для Checker Deselect надо сначала выделить все ребра, а потом явно выделить одно (Shift-ПКМ 2 раза), чтобы инструмент знал, откуда стартовать. Ну и про настройку операции не забудьте.
- на этом шаге я подложил найденный чертеж. Процесс подкладывания почти полностью вырезан как однообразный и не вдохновляющий.
Маска орудия
Очевидно, что деталь — литая. Для литых деталей в общем случае нет правил и логику далеко не всегда можно уловить либо претворить в жизнь.
Тут мне пришлось обратиться к поверхностям по NURBS-кривым (результат не считается геометрией, так что надо явно конвертить в меш). К сожалению, данный способ в Blender не позволяет создать ветвления поверхности, так что пушка у мауса будет одна. Зато с красивой маской.
В принципе, можно было бы нарисовать сечения-полигоны и соединить их через Bridge Edge Loops, например (как я сделал в конце для закрытия задней поверхности маски), но это заняло бы куда больше времени. По-крайней мере, в моем исполнении.
- Я активно пользовался пропорциональным редактированием.
- Поверхность не построится, если хотя бы одна NURBS-кривая не совпадает по числу управляющих точек со всеми остальными. Поэтому я собственно и делал сначала из круга квадрат, а потом из получившегося квадрата — круг.
Правила построения поверхности по NURBS-кривым:
- Кривая создается из подраздела Surface
- Последующие кривые не создаются и не копипастятся, а делается “поверхностная копия” — Shift-D.
- Количество управляющих точек у всех экземпляров должно быть одинаково.
- Готовый набор сливается в один объект (выделить все нужные кривые и Ctrl-J) и жмется F (заполнение).
- Получившаяся поверхность — это не меш. Для конверта в меш — Alt-C.
Исходники гусениц
Гусеницы — самое главное в танке. Поэтому о них — поподробнее.
Принцип создания понятен из концепции гусениц — массив элементов, лежащий на кривой. Значит, надо нарисовать кривую-профиль гусеницы и объект-трак, а затем навесить на трак модификаторы Array и Curve (следование траектории), указав в качестве параметра кривую-профиль. Скажу сразу: я не вырисовывал траки, а скорее изобразил что-то по мотивам — тут, мне кажется, важнее сам принцип.
Так как маус хтоничен, то и гусеницы у него непростые.
Во-первых, их сложно рассмотреть на рефах. Я нашел крупную фотку вот здесь(респект составителям). Вот она:
Рисунок 8. Гусеница мауса крупным планом.
Во-вторых, фактически у гусеницы 2 вида траков — загнутый опорный с 4 дырками по краям и решетчатый связующий:
Рисунок 9. Два вида траков мауса.
На данном этапе я нарисовал собственно профиль (на скорую руку, потом еще будет исправляться) и 2 трака.
Интерлюдия
К этому моменту мы нагенерили весь контент, нужный для того, чтобы собрать танк. Люки, щитки всякие и даже пушка — это уже детали и не будем на них останавливаться.
Точки поворота и сборка групп
В процессе генерации контента я не обращал особого внимания на свойства объектов (их точки поворота и параметры поворота/скалирования) — просто гнал геометрию. На данном этапе я выставляю точки поворота (обратите внимание, что точка поворота не всегда должна быть внутри объекта, например у маски — она снаружи).
Так же я сделал несколько групп, чтобы было удобнее впоследствии управлять видимостью.
Сборка ходовой
Хтоничность мауса продолжает нас преследовать. У него 48 опорных катков, между прочим (а у Т-34 — 10). В шахматном порядке. На этом этапе я активно использую Array и Mirror.
Сборка гусениц
Финальный и самый длинный шаг.
Изложенный в разделе “Исходники гусениц” способ предполагает наличие только одного вида трака. Хтоничность мауса дает нам 2 вида. Так что я сделал две гусеницы на одном и том же месте — свою для каждого вида трака.
И еще один нюанс.Если сделать просто массив, следующий кривой, то элементы массива, находящиеся на изгибах кривой, будут тоже изогнуты (это видно на видео с созданием кривой-профиля), что логично — модификатор собственно для искривления и предназначен. А траки у танка железные и гнуться не должны.
Ненормальное для модификатора, но требуемое для нас решение следующее — ввести промежуточную плоскость и использовать процедурную по-полигонную дубликацию.
- Создаем кривую-профиль (у нас уже есть).
- Создаем вспомогательную плоскость — она будет а) донором полигонов для процедурной по-полигонной дупликации траков и б) направляющей для правильной ориентации размноженных траков. Как следует из пункта а), сколько у этой плоскости полигонов — столько и траков будет у гусеницы. А можно применить Array к плоскости, и все будет работать.
- Для плоскости выставляем Curve по профилю. Тонкий момент — Curve отрабатывает как надо в том случае, если origin’ы кривой и элемента, на который Curve навешиватеся, должны совпадать. Это невозможно понять, это можно только запомнить.
- Создаем собственно трак (тоже уже есть). Делаем его дочерним (это важно) по отношению к вспомогательной плоскости. У плоскости включаем по-полигонную дупликацию.
- Для контроля двойной гусеницы создаем Empty-объект и ставим у вспомогательных плоскостей констрэйнт Copy Location на этот объект. В результате — при перемещении Empty по оси Y обе гусеницы крутятся.
- Повторяем пункты 2-5 для второго вида траков.
- Сдвигаем одну из гусениц (любую) на пол-периода вперед. Двигать надо вспомогательную плоскость.
Я делал все это немного в другом порядке, но шаги были те же.
Так как видео получилось ну очень длинным, я вырезал создание одной из гусениц и повырезал моменты заполнения названий.
Детали и результат
Собственно, к этому моменту маус готов и собран, осталось навесить мелкие детали, которые, кстати, дают 80% presenсe. Я не буду тут рассказывать, как их делать — считаю, что к данному моменту это уже самоочевидно (режем, масштабируем, экструдируем, сливаем, заполняем). Надо лишь не забывать привязывать детали к частям танка (парентинг или Child of или вообще Ctrl-J — как вам будет удобно).
Моделька, получившаяся после сборки гусениц — здесь. Я еще пушку добавил, для чувства завершенности.
А здесь — моделька с парочкой приклеенных деталей.
В оба файла заэмбежены чертежи.
Лицензия, если это кого-то волнует — полный копилефт.
Заключение
Это завершающая серия в цикле «Простой Blender». Всем спасибо за внимание и проявленный интерес. Для меня это был очень необычный опыт — публиковаться в СМИ, да еще и с личной точкой зрения. И для того, чтобы понять, прост ли Blender, просьба поучаствовать в опросе.
И еще интересно бы было услышать комментарии 3D-артистов, работающих в других пакетах — как бы выглядел процесс моделирования каких-то частей танка (башня там, или маска) — просто чтобы сравнить. Да и вообще комментарии приветствуются.
Ответил на комментарий, называется.
Автор: unbalanced