Моделирование BMW 5 Series touring в 3D MAX (часть 1).
В русскоязычном Интернете не так уж и много уроков по моделированию автомобиля и когда я стал просматривать их, то понял, что они не отличаются полнотой информации. Я же хочу в этом уроке описать последовательность моделирования автомобиля, останавливаясь на тех или иных приемах, которые я часто использую в работе. Для понимания урока вы должны обладать хотя бы минимальными знаниями программы и желанием потратить немного свободного времени :-).
Подготовка чертежей:
Первое, что нам понадобится для работы - это чертежи. Найти их можно как в Интернете, так и в печатных изданиях, что я и сделал. Преимущество здесь только одно: можно отсканировать изображения с достаточно высоким разрешением. На рис. 1 представлено изображение BMW 5 серии, которое я взял из буклета.
рис. 1
Для работы с растровыми изображениями я обычно использую программу Photoshop (хотя можно воспользоваться любым редактором картинок), поэтому описание будет применительно к этой программе. Первым делом нужно выровнять изображения (обычно в одном файле представлены несколько видов авто) по горизонтали и вертикали. Затем я делаю фон изображения светло-серым. Это нужно для того, что бы при последующей работе в Максе выделенные подобъекты (в частности ребра, которые по умолчанию выделены белым цветом) не сливались с фоном. После этого я расставляю guide lines так, чтобы они прошли по габаритам автомобиля (рис. 2) - это в дальнейшем поможет разрезать изображение на нужные части.
рис. 2
Теперь нужно проверить размеры видов авто спереди и сзади - они должны быть равны как по ширине, так и по высоте. Это сделать довольно просто, достаточно с помощью инструмента выделения обвести прямоугольник, образованный guide lines -оми вида автомобиля спереди и посмотреть размеры в окне info , затем тоже сделать с видом авто сзади. Если размеры отличаются, то нужно их подкорректировать. То же самое делается по отношению к видам сбоку и сверху (то же можно сделать используя прозрачные слои). Далее все очень просто - изображение режется на части и сохраняется на диске. Я для этой цели обычно использую встроенную в Photoshop программу ImageReady, там есть команда Create Slices From Guides , которая разрезает картинку по guide lines, после чего остается только сохранить нужные изображения. Итак, вот что должно в итоге получиться ( рис. 3 )
Конечно, эту работу можно проделать в других программах и по другому, главное чтобы в итоге вы получили отдельные изображения видов автомобиля сопоставимые по размерам.
Для информации. Страстным любителям все делать в Максе могу сообщить, что почти все изложенное выше можно проделать и в редакторе материалов. Т.е. загрузить картинку, а затем используя инструмент Cropping/Placement вырезать только ту часть изображения, которая нужна для нанесения на плоскость.
СОЗДАНИЕ В ВИРТУАЛЬНОЙ СТУДИИ:
Итак, мы подошли непосредственно к работе в Максе. И начинать работу нужно с создания виртуальной студии, т.е. расположить в видовых окнах растровые изображения так, чтобы по ним можно было моделировать. Есть, по меньшей мере, три способа как это сделать.
Первый - это просто расположить картинки в качестве бэкграунда в соответствующих окнах (в окне Top вид авто сверху, во фронтальном виде автомобиль спереди и т.д.). Сразу же замечу, что это не лучший способ т.к. при масштабировании часто бэкграунд смещается относительно геометрии.
Второй вариант заключается в создании пересекающихся плоскостей, на которые затем накладываются изображения. Это вариант достаточно часто встречается в уроках по Максу, поэтому я не стану подробно его описывать.
Я же в последнее время предпочитаю третий вариант, который рассмотрим подробнее. Для создания виртуальной студии я использую примитив Box с размерами, соответствующими размерам реального автомобиля (благо они у нас есть на чертеже) ( рис. 4 ), но если они у вас отсутствуют, то нужно использовать габариты растровых изображений. Таким образом сохранятся пропорции будущего авто.
рис. 4 рис. 5
После того, как создали Box с заданными размерами немного отвлечемся и установим флажек в графе Match Bitmap Size ... ( рис. 5 ), которая находится в меню Castomize ->Preferences->Viewports->Configure Driver. Эта манипуляция позволит нам задать максимально возможное качество отображения картинок во вьюпорте.
Итак, можно вернуться к нашему боксу. Кроме размеров, о которых я писал выше, хочу обратить ваше внимание на то, что объект нужно расположить в начале координат.. Это в дальнейшем упростит задачу зеркального отображения симметричных объектов. Далее боксу (в дальнейшем "Студия") назначается модификатор Normal , в котором выставляется флаг Flip Normals - это позволит "вывернуть наизнанку" Студию. Далее следуем в редактор материалов (достаточно нажать на клавиатуре латинскую "M") и создаем Multi/Sub-Object материал. Для работы оставляем 6 подматериалов (по числу граней куба) и присваиваем названия материалам согласно сторон авто ( рис. 6 слева ).
рис. 6
Для информации. Старайтесь давать материалам и объектам осознанные названия, что позволяет при большой загруженности сцены избежать путаницы и облегчает навигацию по спискам и материалам.
Далее необходимо скопировать наши картинки в соответствующие слоты Multi/Sub-Object материала. Для этого я использую Asset Browser . Чтобы активизировать его необходимо зайти во вкладку Utilities (просьба не путать с пунктом меню Utilites из редактора материалов) и нажать кнопку Asset Browser (может скрываться за кнопкой More ). После того, как броузер активизирован, находим папку с изображениями и перетаскиваем их прямо на соотметствующие кнопки нашего материала ( рис. 6 ). Чтобы закончить работу с настройкой материала Студии нужно в каждом из подматериалов активизировать кнопку Show Map In Viewport (на панели редактора материалов) и установить параметр Self-Illumination в 100%. После этого можно смело назначать материал Студии. К самой же Студии нужно добавить модификатор Edit Mesh и перейдя на уровень подобъектов Poligon , выделяя стороны Студии, назначить им соответствующие ID материала (с 1 по 6). И если вы все сделали правильно, то добавив в стек модификатор UVW Mapping с параметром mapping-a "Box", получите результат как на рис. 7 , а во вьюпорте вид как на рис. 8
рис. 7 рис. 8
Прежде чем приступить к моделированию, нужно залочить Студию от случайного сдвига. Для этого в свойствах объекта (кликаем правой кнопкой мыши по Студии и в контекстном меню выбираем Propertis ) выставляем флажек Freeze и здесь же снимаем флажек Show Frozen in Gray (это нужно для того, чтобы видеть текстуры во вьюпорте) (рис. 9).
рис. 9
ПРЕЖДЕ ЧЕМ ПРИСТУПИТЬ К МОДЕЛИРОВАНИЮ.
Итак, мы подошли непосредственно к моделированию. Но прежде чем мы начнем, хочу сделать небольшое отступление.
Для информации. Моделировать автомобиль можно разными способами. Каждый из них имеет свои плюсы и минусы. Я сейчас не буду подробно останавливаться на каждом, лишь только в общих чертах опишу их. Первый - это NURBS-моделирование . В примерах встречается крайне редко, моделировать сложно, хотя модель в конечном итоге получается достаточно сглаженная. Второй - моделирование сплайнами с последующим применением модификатора Surface . Я его применяю для моделирования сложных объектов и в частности для моделирования машин со сложной и сглаженной геометрией. Метод сам по себе хорош, но требует подготовки и хорошего пространственного мышления (нужно размещать в пространстве большое кол-во точек кривой). Следующий способ заключается в низкополигональном моделировании, когда за основу берется куб с достаточным количеством ребер и при помощи модификатора Edit Mesh изменяется положение вершин, подгоняя их под форму авто. Моделирование ведется от простого к сложному (добавляются грани, полигоны, уточняется геометрия и т.д.), после чего геометрии присваивается модификатор Mesh Smooth . Метод простой и удобный, но в последнее время его почти вытеснил похожий по моделированию, но более продвинутый тип объекта Editable Poly , о котором пойдут речь в нашем уроке.
Каким бы мы методом не моделировали наш автомобиль, исходя из того, что он симметричен , достаточно смоделировать лишь половину объекта, а потом сделать зеркальную копию.
Для понимания того, как Editable Poly работает, построим куб и попробуем с ним разобраться. Итак, куб со сторонами 1000х1000х1000 (рис. 11). Далее конвертируем его в Editable Poly . Для этого кликаем по объекту правой кнопкой мыши и из выпавшего меню выбираем строку Convert To -> Convert To Editable Poly .
рис. 11 рис. 12
Если сейчас применить к кубу сглаживание, установив на панели Modyfy галочку рядом с параметром "использовать NURMS разбиения" во вкладке Subdivision Surfase и кол-во итераций 3 ( рис. 12 ), то получим сферу ( рис. 13 ). А сейчас попробуем использовать дополнительные ребра. Для этого построим по периметру фаску. Делается это просто: выделяем все ребра и жмем на кнопку Chamfer , а там выставляем величину скоса, равную 1 (можете попробовать и другие значения). Сейчас куб будет иметь закругленные грани и больше будет похож на куб, нежели на сферу ( рис. 14 ).
рис. 13 рис. 14
В работе нам понадобятся еще и другие приемы, например разрезание и выдавливание полигонов. Для этого выделим две соседних стороны куба и применим к ним Tessellate ( рис.15 ), после этого активизируем Cut и разрежем вновь полученные ребра так, как показано на рис. 16 .
рис. 15 рис. 16
Далее выделяем левый ромб, образованный 4-я треугольниками, и применяем к нему Extrude с величиной 400, то же делаем и по отношению к правому, только выдавливаем его на -100 ( рис. 17 ). NURMS сглаживание придало переходам плавные границы, но они не всегда нужны, гораздо чаще при моделировании авто нужно получить более "четкий" переход. Для этого мы выделим ребра, образующие ромбы и применим к ним Chamfer ( рис. 18 ).
рис. 17 рис. 18
В итоге у нас получится нечто похожее на рис. 19 (без NURMS разбиения) и рис. 20 (с разбиением).
рис. 19 рис. 20
Все, что мы проделали выше, это только основа для понимания того, как мы будем строить модель автомобиля. По ходу моделирования будем применять и другие возможности Editable Poly , с которыми познакомимся в процессе работы.
МОДЕЛИРОВАНИЕ КУЗОВА.
Для того чтобы иметь полный контроль над геометрией, я предпочитаю работать не с кубом, а с отдельными полигонами. Преимущество этого метода моделирования заключается в том, что мы строим полигоны лишь там, где они необходимы. Моделировать я начинаю с построения плоскости ( Plane ) в районе переднего крыла нашего автомобиля. Естественно, так как автомобиль симметричен, то моделировать будем только одну его половину. Прежде чем продолжить построение геометрии нужно для удобства изменить кое-какие параметры объекта. Заходим в свойства объекта, как это проделать, описано выше, и выставляем значения как на рис. 21 . После этого можно передвинуть плоскость на виде сверху и сбоку в то положение, которое необходимо. Чтобы продолжить работу нужно сконвертировать объект Plane в Editable Poly (как сделать описано выше). После чего используя вершины для редактирования, расставляем их как показано на рис. 22 .
рис. 21 рис. 22
Очень важно контролировать положение вершин во всех видовых окнах. Далее при помощи экструдирования ребер продолжаем строить крыло машины. Для этого можно воспользоваться командой Extrude , но более простой и предсказуемый метод построения дополнительных ребер - это копирование их с клавишей Shift . Делается это так, вначале нажимается клавиша Shift , а затем выделяется нужное ребро и сдвигается в сторону. Сразу же корректируется с помощью вершин положение в пространстве. Таким образом наращиваем геометрию крыла ( рис. 23, 24 ).
рис. 23 рис. 24
Для информации. При моделировании я предпочитаю придерживаться того правила, что отдельные детали кузова должны моделироваться как самостоятельные элементы. Это, на мой взгляд, упрощает как процесс моделирование так дальнейшее текстурирование автомобиля.
Продолжаем строить полигоны. Дойдя до бампера с левой стороны и порога с правой, продолжим наращивание граней в стороны ( рис. 25 ).
рис. 25
Сейчас самое время посмотреть на то, что у нас получается. Для этого я пользуюсь нехитрым приемом, описанным мной еще в первых уроках. А именно: делается референс копия моделируемого объекта и добавляется к ней модификатор MeshSmooth . Как это сделать? Просто нажимаем клавишу Shift (как при копировании ребер) и перетаскиваем моделируемый объект на значительное расстояние в сторону. После того как отпустим кнопку мыши, появится окошко Clone Options , в котором на вопрос о способе копирования указываем Referens . В стек модификаторов референс объекта добавляем модификатор MeshSmooth с параметрами как на рис. 26 , а в свойствах объекта снимаем флажок с параметра See-Through (подобная процедура описана выше). Поместив в окно перспективы референс объект мы всегда сможем проконтролировать процесс создания геометрии (рис. 27).
рис. 26 рис. 27
Для информации . К сожалению, удобство, связанное с возможностью просмотра сглаженного изображения одновременно с моделированием "стоит" дополнительных ресурсов процессора, поэтому, как только вы почувствуете, что ваш компьютер стал "задумываться" больше положенного, удалите референс объект. Вместо этого можно периодически контролировать форму включая Use NURMS Subdivision во вкладке Subdivision Surfase , с теми же параметрами, что у модификатора MeshSmooth.
Далее продолжаем наращивать геометрию ( рис. 28 ). Единственное, на что хочу обратить ваше внимание, так это на то, что обходиться нужно минимальным числом полигонов, но при этом достаточным для правильной передачи формы модели. Вершины полигонов старайтесь располагать в местах изменения формы и не забывайте контролировать их положение в пространстве.
рис. 28
Чем больше расстояние между ребрами соседних полигонов, тем плавней кривую построит программа при сглаживании внутреннего угла. Верно и обратное. Поэтому, если вы хотите где-то сделать "излом" поверхности, нужно построить близко лежащие грани. Именно это мы сейчас и проделаем для геометрии крыла. Для начала нужно выделить грань, по которой будет уточняться геометрия. Делается это просто, выделяется одно ребро по линии будущей грани, и нажимаем кнопку Loop на панели Modify ( рис.29 ). В итоге выделится вся грань ( рис.30 ) .
рис. 29 рис. 30
Сейчас применим к выделенной грани Chamfer (находится там же , где и кнопка Loop , только немного ниже) с параметром Chamfer Amount равным 3. В итоге получим нечто похожее на рис. 31 , 32 .
рис. 31 рис. 32
Продолжаем продвигаться вправо, повторяя геометрию дверей.( рис. 33 )
рис. 33
Принцыпы построения заднего крыла такие же как и переднего ( рис. 34 ). Строим полигоны вплодь до дверей багажника, огибая задний фонарь.( рис. 35, 36 )
рис. 34
рис. 35 рис. 36
Далее достраиваем полигоны до боковых окон. Принцип построения все тот же: выделяем грани и с шифтом копируем их, по ходу уточняя положение вершин ( рис.37 ).
рис. 37
Конечно, наиболее рациональный способ построения модели - это сделать вначале большие плоскости и только потом переходить к деталям. Но иногда хочется отступить от этого правила и добавить какую-нибудь деталь. Вот и сейчас мне захотелось сделать излом на крыльях и дверках авто. Делается это аналогично ребру на крыльях, с той лишь разницей, что вначале мы делаем Chamfer с параметром Chamfer Amount равным 10 (имейте в виду, что если размеры вашей модели отличаются оттого, что у меня, то и величина будет другой), а затем выделяем верхнюю из только что полученных граней и делаем тот же Chamfer , но с параметром Chamfer Amount равным 3. После этого выделяем точки нижней грани и на виде слева смещаем немного внутрь автомобиля ( рис.38 ).
рис. 38
В процессе построения граней у вас появятся артефакты на границе арки переднего крыла. Это связано с тем, что в этих точках сходятся по пять граней и в результате применения Chamfer-а появляется избыточное кол-во вершин. Их просто нужно "сварить" попарно ( рис.39 ), применив Weld . А то, что должно получится, показано на рис. 40, 41
рис. 39 рис. 40
рис. 41
Далее я начинаю строить рамку над дверями с тем, чтобы позже от нее перейти к крыше. Построение начинается сразу с двух сторон путем наращивания полигонов ( рис.42 ).
рис. 42
Думаю, что два ряда полигонов вполне хватит, чтобы передать форму рамки. Здесь нет особых хитростей, за исключением того, что от заднего крыла отходит большее число полигонов. Естественно, что их нужно привести в соответствие (по количеству) с теми, которые идут спереди. Это делается путем объединения вершин. Единственное, на что хочу обратить ваше внимание, так это на небольшой излом формы в месте стыковки рамки с задним крылом. Там нужно добавить еще одно ребро.
Дальнейшее построение крыши автомобиля не должно составить труда, поэтому вернемся к нему потом, а пока я хочу на примере построения порога показать, как я строю швы между отдельными элементами кузова. Раньше я строил их путем применения Bevel к полигонам, проходящим по линии шва, но после применения модификатора Mesh Smooth , углы закруглялись даже там, где они должны быть прямыми. Чтобы избавится от этого эффекта я добавлял ребра, увеличивал вес вершин и т.д. Но все эти меры ведут к увеличению кол-ва полигонов и к деформации формы, поэтому со временем я нашел другое решение, о чем и расскажу далее.
Итак, мы продолжаем строить кузов, а точнее порог. Для этого выделим нижние грани и скопируем их 3 раза (именно столько необходимо, чтобы передать небольшое углубление в пороге). Уточняем положение вершин на виде слева и сверху ( рис. 43 )
рис. 43
То, о чем я буду говорить дальше, очень важно понять и научится делать правильно, ибо от этого будет зависеть насколько хорошо будут смотреться ваши швы. Первым делом выделяем три нижних ряда полигонов и жмем кнопку Detach ( рис. 44 ), на вопрос о способе отделения нужно выбрать Detach to Element ( рис. 45 ). Это позволит сохранить мономешь, включающий элементы (группы полигонов, как отдельные детали кузова).
рис. 44 рис. 45
После того, как мы получили отдельный элемент, будем работать только с ним, а все лишнее спрячем. Для этого на уровне подобъектов Element (должен быть активирован кубик в панели Modify ) выделяем порог и жмем кнопку Hide Unselected (на вкладке Edit Geometry ), после чего у нас на экране остается только порог. Первым делом на фронтальном виде выделяем точки верхнего ряда и немного (3-5 мм) смещаем их вниз. Это необходимо для того, чтобы между порогом и дверями образовалась щель. Далее нужно сделать порогу толщину. Для этого выделяем открытые грани (на уровне подобъекта Border кликаем по краю порога, в результате чего по периметру выделятся все грани) и выполняем знакомую уже нам процедуру по копированию граней на величину около 20 мм (можно проконтролировать в окнах координат внизу программы (строка состояния)) внутрь авто. Сразу же снимаем выделение со всех граней, кроме верхнего ряда и "вытягиваем" его вверх на ту же величину. Это необходимо для того, чтобы закрыть изнутри образовавшуюся дыру (помните смещание точек вниз). И последнее, перед тем как закончить с порогом. Необходимо выделить передние грани, образующие внешний край, добавить к ним ребра в углах и ко всему выделению применить Chamfer с величиной Chamfer Amount равным 1. То, что должно получиться видно на рис. 46 .
рис. 46
Если то, что вы получили у себя отличается от того, что мы видим выше, тогда нужно проверить правильно ли были выделены грани и если нет, то переделать. Это как правило самая распространенная ошибка. На самом деле эта операция с гранями не такая уж и сложная, главное понять принцип, по которому делаются фаски. Но это того стоит ( рис. 47 ).
рис. 47
Для того чтобы еще раз повторить построение фасок сделаем боковые двери. Начнем с передней. Выделим полигоны, ограниченные габаритами двери, выполним команду Detach и спрячем Unselected элементы. В результате на экране останется только дверь. После этого выделяем вершины левой стороны и смещаем их вправо на 5 мм. (делаем щель между крылом и дверью), затем тоже для правой сторона, с той лишь разницей, что смещаем вершины влево и на половину величины зазора, (вторая половина будет за счет сдвига задней двери). Затем выделим грани по периметру и скопируем их с шифтом внутрь, после чего выделяем грани на ребрах двери и применяем Chamfer с величиной Chamfer Amount равным 1. Те же операции проводим и для задней двери. То, что должно получиться смотрите на рис. 48, 49 .
рис. 48 рис.49
После того как мы закончили с дверями, перейдем к моделированию капота. На самом деле совсем не обязательно вести построение в той последовательности, в которой это делал я. Главное чтобы ваша последовательность построения модели была логически оправдана (ведь не станете же вы делать ручки дверей, не имея самих дверей).
Итак, капот. Здесь все просто. Опять же наращиваем полигоны, придерживаясь геометрии автомобиля. Через весь капот проходит характерный излом и для правильной передачи формы нужно его повторить, используя фаску. В местах расположения фары и решетки радиатора оставляем проемы (позже их будем строить отдельными элементами). На рис. 50, 51 видны линии построения, а на рис. 52 то, что должно быть, если все будет выполнено правильно.
рис. 50 рис. 51
рис. 52
Теперь, когда мы научились делать фаски, пришло время применить эти знания на капоте и элементе кузова, ниже фары.( рис. 53 ).
рис. 53
Следующим шагом будет построение решетки. Для этого нужно выделить сплайны, по периметру оставленного нами отверстия (для этого использовать уровень подобъектов Border ) и применить к ним Cap . Это создаст полигон, закрывающий дыру. После этого нужно сделать его как отдельный элемент (команда Detach ). Далее переходим на уровень подобъектов Polygon и активируем вновь созданный полигон ( рис. 54 ) и применяем к нему последовательно 4 операции Bevel со следующими параметрами: I. Height - 3, Outliner Amount - -3, II. Height - 0, Outliner Amount - -15, III. Height - -3, Outliner Amount - -3, IV. Height - -15, Outliner Amount - 0. После этого нужно совсем немного уточнить положение точек в правом верхнем углу (там обводка немного расширяется). И если вы все сделали правильно, то результат должен быть как на рис. 55 . А после добавления боксов в качестве вертикальных перегородок решетки получим окончательный вид ( рис. 56 )
рис. 54 рис. 55
рис. 56
Теперь займемся построением двери багажника. Здесь все просто: построение ведется путем наращивания полигонов от крыла до середины автомобиля ( рис. 57, 58 )
рис. 57 рис. 58
Сделав ее как отдельный элемент (команда Detach ), достроиваем толщину двери (как описано выше на примере порога и боковых дверей) и небольшой элемент над номером (можно сделать как отделный объект из бокса) получим ( рис. 59 )
рис. 59
|