Here comes.

Это будет длинный пост.



На всякий случай, предыдущая серия.

Предисловие



Долго думал над степенным и вдумчивым текстом вступления. Не придумал. Напишу по-простому. В этой серии я буду показательно рисовать в Blender танк. С нуля и до конца (ну почти, детальки пририсовывать не буду — это не показательно). Только моделлинг, без текстур и материалов. Основной посыл поста — показать, как в Blender выглядит реализация той или иной задумки. Поэтому, будет описание задумки и видео процесса. Видео без звука — он тут не нужен, но с показом нажимаемых кнопок.

Примечание про показ кнопок
В BF включали одно время в коробку аддон отображения нажимаемых кнопок (в последних версиях перестали). К сожалению, аддон у меня отображает только хоткей операции, но не отображает клавиши настройки операции. Т.е. для передвижения по оси X (g x) он отобразит g, но не отобразит x. Я нашел вот такую программу, она работает на уровне системы, но жутко спамит при скролле мышкой, поэтому я отключил события мышки. Если вы видите надпись Alt и что-то начинает выделяться — значит это Alt-ПКМ.


Порой в видео будут вырезанные куски — вот уж чем я точно заниматься не умею, так видеоредактированием. Тут надо понять и простить.

Рисовать танк будем по чертежам — это хардкорней, чем фристайл. Но и результат правдоподобней. Принцип простой — восстановление 3D фигуры из проекции.

Blender предоставляет возможность подкладывать на бэкграунд 3D области картинки, причем неограниченное количество. Картинки можно масштабировать, смещать и вращать (в 2.76b уже есть такая возможность, в 2.73 — еще нет, в промежутке — не знаю, не проверял). Картинки отображаются только в ортогональной проекции (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):
  1. Переключамся в wireframe (Z).
  2. Вид сверху (Numpad 7). Центрируем 3D курсор (Shift-C). Создаем куб (должен оказаться в центре). Масштабируем куб по X так, чтобы его ширина была примерно равна ширине модели. Подгоняем положение и размер картинки так, чтобы танк по ширине краями касался куба с обоих концов.
  3. Растягиваем куб по длине (лучше двигать торцы в EM), чтобы танк по длине вписался в куб.
    По итогу у нас есть координаты (собственно, {0,0,0}) и размеры куба по X и Y, а также откалиброванный вид сверху.

    Рисунок 3. Создаем куб в центре координат, масштабируем его (не сдвигая), правим попадание и центровку картинки по ширине, растягиваем торцы до краев модели по длине.
  4. Переключаемся в вид спереди. Куб по X уже откалиброван, поэтому подгоняем картинку по X, затем — раздвигаем верх и низ куба на края модели.
    Все, полдела сделано — у нас есть полностью определенный куб, выходим из EM и в аутлайнере снимаем возможность выделить куб (дабы не сдвинуть ненароком, а то у меня по первости руки чесались именно куб двигать).

    Рисунок 4. Вид спереди: сразу после переключения, подгонка картинки, выставление высоты куба, отключение возможности выделить куб.
  5. Так как куб полностью определен — переключаемся в остальные виды и подгоняем только(!) картинки.

    Рисунок 5. Вид сбоку до (картинка гораздо меньше bounding box) и после подгонки.
  6. Подгонка завершена. Завершаем и страхуемся — сворачиваем все слоты изображений (рис.6 ), а затем и саму группу Background:

    Рисунок 6. Свернутые слоты, чтобы не ткнуть что-то ненароком.

    Куб можно спрятать, можно удалить, а файл — сохранить. Лучше в двух разных местах, на всякий пожарный.

Готово.

Моделирование



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

Маус это:
  • танк
  • очень простой в плане геометрии танк (за исключением гусениц и маски орудия).

Все мы знаем, из чего состоят танки, поэтому будущая модель автоматом разваливается на (в порядке возрастания сложности моделирования):
  1. башню
  2. шасси
  3. ходовую часть(катки и гусеницы)
  4. орудие с маской.

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

Замечания о часто используемых приемах/инструментах.


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

Костыль align to


Так как в Blender нет из коробки такого функционала, как align to, то приходится выкручиваться — использовать трансформации в локальных координатах, делать snap к каким-то вспомогательным/опорным элементам, центрировать по курсору. В случае точек есть костыль через масштабирование. Если выделить несколько точек и отмасштабировать их по какой-то оси на 0, то они окажутся на одном уровне (медианном) по этой оси. Объяснение туманное, ниже будет видно.

Knife


Knife — интерактивный (то есть, у вас есть возможность откатить косяки, не выходя из работы с инструментом) инструмент резания геометрии. В общем случае выглядит так: вы выставляете какой-то вид, переключаетесь в EM, включаете нож, обозначаете линии разреза и подтверждаете разрез. Blender режет ребра в местах пересечения с линией разреза и соединяет новые точки между собой, попутно перенатягивая полигоны.

Knife project


Knife Project (проективный нож) — это как Knife, только с использованием заранее заготовленного контура вместо интерактивно рисуемой линии разреза, с учетом проекции и только на ближайшей поверхности. Позволяет не заморачиваться со склейкой разных объектов в простых случаях.

Поехали.

Башня



Простейший подход. Берем примитив и дорабатываем (кровавой резней ребер, бескомпромиссной экструзией и решительным слиянием точек (Alt-M)). А так как башня симметрична по Y, то еще и моделируем только половину.

Подробности
План такой:
  1. Стартуем башню как цилиндр на боку (башня спереди вроде круглая).
  2. Отрезаем ненужный кусок цилиндра, чтобы осталась только часть цилиндрической поверхности спереди.
  3. Так как сбоку башня под наклоном — срезаем часть поверхности под углом наклона.
  4. Из остатков поверхности вытягиваем стенки/крышу (с учетом поворотной части).
  5. Натягиваем полигоны (со всех сторон — потребуется для работы ножа на следующем шаге).
  6. Делаем ножиком фаску на заднем торце башни (это больше иллюстративный шаг). Важно, чтобы с обратной стороны детали тоже был полигон, иначе сзади не будет разреза. Склеиваем точки.
  7. Вытягиваем опорную часть башни.
  8. Донатягиваем / срезаем лишние полигоны.
  9. Готово.




Шасси



Тут я использовал технику последовательной постройки полигонов. Очень помогает, если а) геометрия более-менее рубленная и б) слету непонятно, как сделать иначе.

Подробности
План простой:
  1. Создать кружок (потому что вручную будет сложно правильно нарисовать).
  2. Отрезать от него ненужное и с помощью Ctrl-ЛКМ и F дорисовать контур боковой стенки.
  3. Из получившегося полигона вытянуть оставшуюся геометрию шаг за шагом.





Катки


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

Опорные катки и опоры


Опоры просто нарисовал на глазок через Ctrl-ЛКМ в EM. Если кому-то это очень царапает душу — то скажу в свое оправдание, что овчинка в данном случае выделки не стоит.

Катки — через экструзию и масштабирование по осям.

Подробности
Очень просто делается, если знать 2 нюанса Blender:
  • Как уже было сказано, экструзия — это 2 операции — собственно создание новых элементов с установкой связей и перестановкой выделения на них, а затем — перемещение. Если выделить элементы, нажать E и Enter, то новые элементы создадутся, но никуда не сдвинутся.
  • Если при масшатбировании нажать X, то оно будет идти только по X. Если же нажать Shift-Х, то оно будет идти по ВСЕМ осям, КРОМЕ Х.




Ленивцы



Чистая иллюстрация 2х методик — создание тела вращения и применение булевых операторов.

Подробности



Ведущие катки



Вот он, найденный чертеж:

Рисунок 7. Ведущий каток, вид сверху. Обратите внимание так же на порядок следования опорных катков.

Подробности
Тут примечания такие:
  • для шестеренки использовал подсмотренный трюк с Checker Deselect. Важные нюансы трюка: а) количество сегментов круга-донора = количество зубьев * 4, б) для Checker Deselect надо сначала выделить все ребра, а потом явно выделить одно (Shift-ПКМ 2 раза), чтобы инструмент знал, откуда стартовать. Ну и про настройку операции не забудьте.
  • на этом шаге я подложил найденный чертеж. Процесс подкладывания почти полностью вырезан как однообразный и не вдохновляющий.




Маска орудия



Очевидно, что деталь — литая. Для литых деталей в общем случае нет правил и логику далеко не всегда можно уловить либо претворить в жизнь.
Тут мне пришлось обратиться к поверхностям по NURBS-кривым (результат не считается геометрией, так что надо явно конвертить в меш). К сожалению, данный способ в Blender не позволяет создать ветвления поверхности, так что пушка у мауса будет одна. Зато с красивой маской.
В принципе, можно было бы нарисовать сечения-полигоны и соединить их через Bridge Edge Loops, например (как я сделал в конце для закрытия задней поверхности маски), но это заняло бы куда больше времени. По-крайней мере, в моем исполнении.

Подробности
Нюансы:
  • Я активно пользовался пропорциональным редактированием.
  • Поверхность не построится, если хотя бы одна NURBS-кривая не совпадает по числу управляющих точек со всеми остальными. Поэтому я собственно и делал сначала из круга квадрат, а потом из получившегося квадрата — круг.


Правила построения поверхности по NURBS-кривым:
  1. Кривая создается из подраздела Surface
  2. Последующие кривые не создаются и не копипастятся, а делается “поверхностная копия” — Shift-D.
  3. Количество управляющих точек у всех экземпляров должно быть одинаково.
  4. Готовый набор сливается в один объект (выделить все нужные кривые и Ctrl-J) и жмется F (заполнение).
  5. Получившаяся поверхность — это не меш. Для конверта в меш — Alt-C.




Исходники гусениц



Гусеницы — самое главное в танке. Поэтому о них — поподробнее.

Принцип создания понятен из концепции гусениц — массив элементов, лежащий на кривой. Значит, надо нарисовать кривую-профиль гусеницы и объект-трак, а затем навесить на трак модификаторы Array и Curve (следование траектории), указав в качестве параметра кривую-профиль. Скажу сразу: я не вырисовывал траки, а скорее изобразил что-то по мотивам — тут, мне кажется, важнее сам принцип.

Так как маус хтоничен, то и гусеницы у него непростые.

Во-первых, их сложно рассмотреть на рефах. Я нашел крупную фотку вот здесь(респект составителям). Вот она:

Рисунок 8. Гусеница мауса крупным планом.

Во-вторых, фактически у гусеницы 2 вида траков — загнутый опорный с 4 дырками по краям и решетчатый связующий:

Рисунок 9. Два вида траков мауса.

На данном этапе я нарисовал собственно профиль (на скорую руку, потом еще будет исправляться) и 2 трака.

Подробности








Интерлюдия



К этому моменту мы нагенерили весь контент, нужный для того, чтобы собрать танк. Люки, щитки всякие и даже пушка — это уже детали и не будем на них останавливаться.

Точки поворота и сборка групп



В процессе генерации контента я не обращал особого внимания на свойства объектов (их точки поворота и параметры поворота/скалирования) — просто гнал геометрию. На данном этапе я выставляю точки поворота (обратите внимание, что точка поворота не всегда должна быть внутри объекта, например у маски — она снаружи).

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

Подробности




Сборка ходовой


Хтоничность мауса продолжает нас преследовать. У него 48 опорных катков, между прочим (а у Т-34 — 10). В шахматном порядке. На этом этапе я активно использую Array и Mirror.

Подробности




Сборка гусениц



Финальный и самый длинный шаг.

Изложенный в разделе “Исходники гусениц” способ предполагает наличие только одного вида трака. Хтоничность мауса дает нам 2 вида. Так что я сделал две гусеницы на одном и том же месте — свою для каждого вида трака.

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

Подробности
Алгоритм:
  1. Создаем кривую-профиль (у нас уже есть).
  2. Создаем вспомогательную плоскость — она будет а) донором полигонов для процедурной по-полигонной дупликации траков и б) направляющей для правильной ориентации размноженных траков. Как следует из пункта а), сколько у этой плоскости полигонов — столько и траков будет у гусеницы. А можно применить Array к плоскости, и все будет работать.
  3. Для плоскости выставляем Curve по профилю. Тонкий момент — Curve отрабатывает как надо в том случае, если origin’ы кривой и элемента, на который Curve навешиватеся, должны совпадать. Это невозможно понять, это можно только запомнить.
  4. Создаем собственно трак (тоже уже есть). Делаем его дочерним (это важно) по отношению к вспомогательной плоскости. У плоскости включаем по-полигонную дупликацию.
  5. Для контроля двойной гусеницы создаем Empty-объект и ставим у вспомогательных плоскостей констрэйнт Copy Location на этот объект. В результате — при перемещении Empty по оси Y обе гусеницы крутятся.
  6. Повторяем пункты 2-5 для второго вида траков.
  7. Сдвигаем одну из гусениц (любую) на пол-периода вперед. Двигать надо вспомогательную плоскость.


Я делал все это немного в другом порядке, но шаги были те же.

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





Детали и результат



Собственно, к этому моменту маус готов и собран, осталось навесить мелкие детали, которые, кстати, дают 80% presenсe. Я не буду тут рассказывать, как их делать — считаю, что к данному моменту это уже самоочевидно (режем, масштабируем, экструдируем, сливаем, заполняем). Надо лишь не забывать привязывать детали к частям танка (парентинг или Child of или вообще Ctrl-J — как вам будет удобно).

Моделька, получившаяся после сборки гусениц — здесь. Я еще пушку добавил, для чувства завершенности.
А здесь — моделька с парочкой приклеенных деталей.
В оба файла заэмбежены чертежи.
Лицензия, если это кого-то волнует — полный копилефт.

Заключение



Это завершающая серия в цикле «Простой Blender». Всем спасибо за внимание и проявленный интерес. Для меня это был очень необычный опыт — публиковаться в СМИ, да еще и с личной точкой зрения. И для того, чтобы понять, прост ли Blender, просьба поучаствовать в опросе.

И еще интересно бы было услышать комментарии 3D-артистов, работающих в других пакетах — как бы выглядел процесс моделирования каких-то частей танка (башня там, или маска) — просто чтобы сравнить. Да и вообще комментарии приветствуются.


Ответил на комментарий, называется.
Так прост ли Blender?

Проголосовало 319 человек. Воздержалось 162 человека.

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

Комментарии (9)


  1. lllypyn
    22.12.2015 14:54

    Картинки можно масштабировать и смещать, но нельзя вращать.


    Что не так с вращением то? Вполне себе вращается


    1. unbalanced
      22.12.2015 15:38
      +1

      Сижу на старой версии (2.73). Обновил пост.


      1. Leopotam
        22.12.2015 16:33
        +1

        А еще есть другой хак — кидаешь на сцену Empty, у него ставишь Display=Image и цепляешь текстурку. Все, произвольная ориентация как у 3д-объекта, можно выполнять любые трансформации с Empty.


        1. customtema
          22.12.2015 22:38

          Спасибо!


        1. engine9
          23.12.2015 02:00

          Ух ты. Занятно.


  1. StreetAngel
    22.12.2015 21:46

    у меня вопрос немного в текстуры:

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

    В ручную это сделать так:
    http://www.youtube.com/watch?v=_UzmfFBnwAY

    а если ~ 1000 объектов то как это сделать?


    1. Leopotam
      23.12.2015 01:07

      Не совсем понятен вопрос — нужно раздельное запекание или создание одного атласа на выделенные объекты? Если первое, то на каждый объект все-равно нужно делать назначение текстуры, тут никак не обойти. Если второе, то с какой-то из 2.7 версий появилась специальная команда — «Smart UV Project»:

      Нужно выделить нужные объекты, нажать пробел и набрать «Smart UV Project» (достаточно набрать «sma») — оно развернет все объекты в один UV, останется только создать текстуру и запечь в нее выделенные объекты.


  1. Alex10
    23.12.2015 03:25

    Спасибо, хорошая статья, было бы еще интересно почитать про текстурирование, и про анимацию гусениц.


    1. unbalanced
      23.12.2015 09:25

      Пожалуйста.
      Технически говоря, при использовании описанной здесь техники, гусеницы уже являются анимированными. Более того, для них даже контролы выведены — поименованные Empty объекты.