вторник, 9 августа 2011 г.

Урок №7 – Редактирование полигональной сетки


На прошлых уроках мы разобрали простые методы 3d моделирования. С их помощью можно создать многие объекты, но далеко не все. Например, такой сложный для моделирования объект как человеческое тело с помощью этих простых техник создать просто невозможно. Поэтому сегодня мы перейдем к изучению более продвинутых способов. И начнем с моего любимого метода 3d моделирования – редактирования полигональной сетки. Если хорошо овладеть этим способом моделирования, то можно создать практически любой объект за очень редким исключением. Работа этим способом мне иногда напоминает лепку из пластилина или работу скульптора, так как вы имеете возможность редактирования каждой вершины и каждого полигона исходного объекта.
Итак, перейдем непосредственно к уроку. Рассматривать редактирование полигональной сетки мы будем на примере создания камина. Запускайте 3d max и создайте обычный бокс:
обычный бокс
Теперь кликните по нему правой клавишей мыши, в появившемся списке выберете Convert To → Convert to Editable Mesh:
Convert to Editable Mesh
Справа во вкладке Modify появился набор различных инструментов, а наверху вот такой списочек:
списочек
Разберем по порядку элементы этого списка
На самом верху, в корне списка находиться надпись Editable Mesh. Если она выделена, то можно менять положение всего объекта. Кроме того, пока вы не перейдете на этот пункт списка вы не сможете выделить не один другой объект сцены и соответственно не сможете редактировать другие объекты сцены. Обратите на это особое внимание, так как у многих это в начале вызывает трудности и недоумение – почему не выделяется объект по которому я щелкаю.
Vertex – перейдя на этот пункт списка вы имеете возможность изменять положение вершин объекта. Для примера можете перейти на этот пункт списка, вершины нашего бокса окрасятся в синий цвет и вы сможете их перетащить, как вам захочется. Выделенные вершины окрашены в красный цвет:
Vertex
Edge – редактирования ребер объекта. Аналогично выделенные ребра имеют красную окраску:
редактирования ребер объекта
Обратите внимание на ребро изображенное на рисунке пунктиром. Это так называемое скрытое ребро. Так как все объекты состоят из треугольников, но редактировать легче четырехугольники, то 3d max объединяет пару соседних треугольников в один полигон, а общее ребро этих треугольников делает скрытым. Любое ребро можно сделать видимым или скрытым, для этого есть соответственно две кнопки visible и invisible в свитке surface properties:
две кнопки visible и invisible
Face – позволяет редактировать отдельные треугольники объекта:
позволяет редактировать отдельные треугольники
Polygon – предназначен для редактирования полигонов, т.е. групп треугольников у которых есть общие скрытые ребра. У нашего изначального бокса это все его прямоугольные стороны:
редактирования полигонов
Element – предназначен для редактирования групп полигонов не связанных между собой ребрами. Сложно объяснить на примере одного бокса действие этого элемента. Но вот если бы было два бокса, которые составляли бы один объект, но при этом не имели связующих ребер, то они бы образовали два элемента объекта, и их можно было бы выделять, целиком перейдя на этот пункт списка:
редактирования групп полигонов не связанных между собой ребрами
Все эти пункты списка дублируются пиктограммами в свитке Selection:
пиктограммы в свитке Selection
Внизу этого свитка отображается количество выделенных элементов, например на данном рисунке написано «4 Vertices Selected», т.е. выделено 4 вершины. Иногда полезно знать количество выделенных элементов. Если выделен 1 элемент то будет писаться его номер, например «Vertex 6 Selected».
Теперь, выделите все вершины бокса и передвиньте его так, чтобы одна из вершин оказалась примерно в центре координат:
Это нужно для контролирования габаритов объекта
Теперь выделите верхние 4 вершины бокса (или верхний полигон) и переместите их на высоту 10 единиц. Затем, выделите 4 боковых вершины (или  боковой полигон) и сделайте так чтобы ширина бокса стала равна 5 единицам:
Для этих манипуляций удобно использовать поля для ввода координат в нижней части окна 3d max:
поля для ввода координат
Теперь выделите вот этот полигон:
И растяните бокс в длину на 130 единиц:
Теперь не снимая выделения с этого полигона найдите в свитке Edit Geometry кнопку  Extrude, нажмите на нее и введите в поле рядом с ней значение 5:
в свитке Edit Geometry кнопку  Extrude
В результате конец бокса «выдавился» на 5 единиц и образовал еще одну группу полигонов:
Теперь, выделите вот этот полигон:
И так же «выдавите» его на 50 единиц:
Получился «бордюрчик» который будет располагаться в нижней части камина. Теперь перейдите в верхнем списке на пункт Editable Mesh и создайте бокс размерами 15x15x10 и расположите его как показано на рисунке:
Аналогично конвертируйте его в полигональную сетку. Перетаскивая и «выдавливая» его полигоны добейтесь вот такого результата:
Теперь, выделите все верхние полигоны и выдавите их на 25 единиц вверх:
Выделите 2 вот этих полигона и выдавите их на 2.5 единицы:
Аналогично выдавите 2 полигона с другой стороны.
В месте образовавшегося стыка выделите вот эти два полигона:
И нажмите кнопку Delete на клавиатуре, чтобы уделить их.
Теперь перейдите на редактирование ребер, и выделите указанные на рисунке 3 ребра.
Напомню, чтобы выделить несколько объектов надо их выделять с зажатой кнопкой Ctrl на клавиатуре.
Теперь зажмите кнопку Shift на клавиатуре и начните перемещать выделенные ребра, В результате образуется новая группа полигонов:
Найдите на главной панели инструментов кнопку Snaps Toggle
кнопка Snaps Toggle
Нажмите на нее правой кнопкой мыши. В появившемся окне вы можете настроить привязки объектов, это поможет более точно их позиционировать. Снимите все установленные галки и оставьте только одну около Vertex:
Закройте окно и еще раз нажмите на кнопку Snaps Toggle только на этот раз левой кнопкой мыши. Наведите курсор мыши на конец одного из выделенных ребер, так чтобы показался голубой крестик:
И перемещайте эти ребра, они автоматически должны «пристыковаться» к ближайшему полигону:
Теперь выделите одно из трех ребер и зажав кнопку Shift закройте оставшуюся «дыру»:
Перейдите на уровень редактирования вершин  и обведите рамкой чтобы выделить вот эти вершины:
Обратите внимание должно выделиться сразу 6 вершин, 3 вершины сверху и 3 снизу имеют одинаковые координаты, такого допускать нельзя, поэтому их надо объединить. Для этого найдите в свитке Edit Geometry кнопку Selected и нажмите на нее. Если все сделано правильно, то  после этого выделенными должны оказаться 2 вершины:
выделенными должны оказаться 2 вершины
Выделите 2 указанных на рисунке ребра:
Найдите в свитке Edit Geometry кнопку Chamfer, и в поле я рядом с ней введите какое-нибудь небольшое число, например 3, в результате образовалась вот такая фаска:
Поднимите нижние 2 ребра на прежнею высоту, а другие 2 ребра отодвиньте примерно на 12 единиц от края. Прежде чем что-то двигать уберите привязку к вершинам, нажав на кнопку Snaps Toggle, в данном случае она будет только мешать:
Выделите верхние полигоны и выдавите их на 15 единиц вверх, вот так:
Получилась половинка нижней части камина
Теперь создайте бокс с кругленными краями высотой 5 единиц, не много выступающий за пределы нижней части камина:
Аналогично преобразуйте его в редактируемую сетку и выделите вот эти полигоны:
И удалите их нажатием кнопки Delete. Образовавшиеся «дыры» заделайте, так же как до этого заделывали стык у нижней части камина, для упрощения работы можно все ребра свести в две вершины:
Как вы можете заметить образовался небольшой косяк с освещением. Это произошло из-за неправильно назначенных групп сглаживания.
Группы сглаживания это обычные числа от 1 до 32, которые присваиваются каждому полигону. Каждому полигону можно присвоить несколько таких чисел. Если два соседних полигона находятся в одной группе сглаживания, то стык между этими полигонами считается гладким и острого угла видно не будет. Так в нашем случае у верхнего и боковых полигонов одна группа сглаживания поэтому между ними нету резкого перехода. Чтобы это исправить выделите полигоны одной из боковых сторон:
Найдите в свитке Surface Properties группы сглаживания:
в свитке Surface Properties группы сглаживания
Как видите моим полигонам назначена группа сглаживания 1, поменяем ее например на 9, для этого нажмите на цифре 1, чтобы убрать полигоны из этой группы, а затем на цифре 9 чтобы присвоить новую группу. Аналогичные действия повторите со второй стороной, только на этот раз присвойте им 10ую группу сглаживания, если все проделано правильно, то должно получиться вот так:
Теперь подвиньте боковые стороны, так чтобы они поравнялись со сторонами нижней части камина:
Перейдите в вид спереди и создайте примерно, такой как на рисунке сплайн, не забудьте в конце замкнуть сплайн:
Т.к. этот сплайн симметричен, то можно создать сначала одну половинку, сделать ее копию, отразить ее и соединить с первой половинкой.
Примените к этому сплайну модификатор Extrude, в поле Amount введите значение 10. Получившуюся фигуру разместите вот так:
Создадим заднею часть камина, для этого выделите задние полигоны:
И отодвиньте их на 15 единиц вперед, после этого выдавите с помощью инструмента Extrude их на прежнее место. После этого выделите образовавшиеся полигоны:
И выдавите их до середины камина:
Теперь удалите выделенные полигоны, Перейдите в верхнем списке на пункт Element, выделите объект, зажмите кнопку Shift и немного передвиньте объект, чтобы создать его копию. В появившемся окне выберите Clone To Object. Далее следует выделить созданную копию и с помощью инструмента Mirror
инструмент Mirror
отразить ее. Теперь выделите начальный объект, найдите в свитке Edit Geometry кнопку Attach:
в свитке Edit Geometry кнопка Attach
Нажмите на ее, а потом щелкните на отраженную копию. Тем самым вы свяжете две половинки камина в один объект. Перейдите опять в списке на пункт Element, выделите отраженную половинку, активизируйте привязку нажатием кнопки Snaps Toggle, наведите курсор на одну из вершин в предполагаемом месте «шва» и тяните отраженную половинку за эту вершину к вершине, с которой надо будет ее объединять. Привязка поможет разместить половинку с большей точностью практически мгновенно:
Теперь выделите все вершины в месте шва, и нажмите кнопку Selected чтобы, объединить выделенные вершины:
Уберите привязку повторным нажатием на кнопку Snaps Toggle. Отредактируйте не много положение вершин второй половинки, если у вас получилось что арка входит в эту половинку, например как на рисунке:
Создайте копии бордюрчика и верхней крышки, отразите их и разместите на своем месте:
Теперь надо создать среднею верхнею крышку, для этого создайте бокс с закругленными краями высотой 2.5, разместите как показано на рисунке, преобразуйте в редактируемую сетку и удалите полигоны, выделенные на рисунке:
Выделяя и копируя ребра заделайте образовавшиеся «дырки», например вот так:
Не забывайте использовать привязки и «сваривать» вершины, в конце измените группы сглаживания. Подвиньте боковые стороны крышки так чтобы полностью закрыть дыру сверху:
Теперь создайте бокс габаритами 15х15х60 и разместите как на рисунке
Преобразуйте этот бокс в редактируемую сетку и выдавливая нужные полигоны создайте верхнею часть камина:
Теперь создайте вот такой бокс высотой 10, обратите внимание на не много не обычную сегментацию этого бокса:
Преобразуйте этот бокс в редактируемую сетку и немного сместите вершины бокса:
Теперь выделите угловые полигоны
И выдавите их на 3.3 единицы:
Теперь сними выделение с нижних полигонов, а два верхних выдавите еще на 3.3 единицы:
Ну и наконец выдавите только верхние полигоны, также на 3.3 единицы. Таким образом, образуется вот такая лестница:
Далее необходимо поправить вершины вот так:
С другой стороны лестницы сделайте аналогично. Удалите среднею часть крышки и выдавите оставшиеся полигоны, так чтобы получилась вот такая деталь:
Удалите полигоны в месте шва, создайте копию этой детали, отразите и склейте в центре (так же как с нижней частью камина):
Теперь создайте бокс высотой 5 в верхней части камина, преобразуйте в редактируемую сетку и выдавливанием полигонов создайте вот такую крышку камина:
Чтобы не затягивать и без того длинный урок не буду расписывать создания трубы. Думаю ее конструкция и так понятна, ее конечный вид выглядит вот так:
Думаю на этом все. Урок получился очень большой, поэтому дверку камина,  текстурирование и другие декоративные элементы будем делать на следующих уроках. Пока же подведя итог этого урока, следует сказать, что мы рассмотрели основные приемы изменения редактируемой сетки.
Приведу основные правила редактирования сетки:
  • при моделировании следует не забывать «склеивать» соседние вершины;
  • следует стараться делать четырехугольные полигоны вместо треугольных, если же этого сделать нельзя, прятать треугольные полигоны в плохопросматриваемые места;
  • никогда не делать полигоны больше чем с 4 углами, любой полигон можно представить в виде комбинации четырехугольников и максимум одного треугольника (причину почему так нельзя объясню позже, пока же просто не делайте так).
  • использование привязки к вершинам позволяет здорово экономить время;
  • если создаваемый объект симметричен то можно создать сначала одну его половинку, сделать  с нее копию, отразить ее и соединить две половинки;
  • не оставлять внутри модели лишние полигоны, например при соединении двух симметричных половинок надо удалять полигоны на месте «шва» у обоих половинок;
  • редактировать группы сглаживания, добиваясь правильного отображения стыков полигонов;
  • модель должна быть целостной, у нее не должно быть «дырок» (даже если они очень маленькие).

Начнем с создания двери для этого создайте не большой бокс размерами 5х2х5 и разместите его вот так:
бокс размерами 5х2х5
Обратите внимание, что бокс немного выходит за пределы камина.
Теперь преобразуйте этот бокс в редактируемую сетку, выделите  вот этот полигон:
 И выдавите его вниз, так чтобы расстояние до нижнего края отверстия составляло примерно 10 единиц (т.е. в 2 раза больше чем первоначальный бокс):
 Выдавите выделенный полигон до нижнего края отверстия:
 Выделяем верхний и нижний полигон и выдавливаем их примерно до середины отверстия:
 После этого удалите эти два полигона. Сделайте копию получившегося объекта, отразите эту копию и выделите первый объект, нажмите на кнопку Attach:
кнопка Attach
 И кликните на копии объекта. В результате должен получиться единый объект, состоящий из двух половинок:
 Теперь перейдите на подуровень Element:
подуровень Element
Включите привязку (Snaps Toggle) и подтащите скопированную половинку к первоначальной половинке потянув за одну их вершин в месте стыка. Еще раз обращаю внимание на то, что полигоны в месте стыка должны быть удалены. После того как половинки встанут правильно переходим на подуровень Vertex, выделяем вершины в месте стыка и нажатием кнопки Selected
кнопка Selected
 Склеиваем соседние вершины. Скорее всего, получившийся объект будет не помещаться в отверстие для двери, поэтому выделяем вот эти вершины:
И двигаем их до тех пор, пока наша рамка не будет правильно размещаться в отверстии для дверки (не забудьте предварительно выключить привязку):
Таким образом создана рамка для двери, сама дверь создается аналогично, поэтому так подробно расписывать ее создание смысла нет, скажу только что размеры изначального бокса должны быть примерно 3х1х3. Вот что должно получиться после создания двери:
 Теперь выделите ребро в угловой части двери:
В поле Chamfer введите значение 1,0:
поле Chamfer  
И нажмите Enter. В результате должно получиться вот так:
 Теперь в поле Chamfer введите значение 0,4. Получился закругленный угол:
Повторите эту операцию с остальными тремя углами. Далее необходимо сделать ручки для двери. Это обычные тела вращения с вот таким сечением:
сечение ручки
Потом примените к этому сплайну модификатор Lathe, в графе Segments введите число 64. В результате должна получиться вот такая ручка:
получиться вот такая ручка
Сделайте 2 копии этой ручки и разместите их вот так:
Теперь сделаем петли для двери. Начнем как обычно небольшого бокса, на этот раз его размеры должны быть 1х1х1:
 Преобразуйте этот бокс в редактируемую сетку и путем выдавливания полигонов и передвижения вершин добейтесь вот такой формы:
Чтобы не много скруглить эту деталь выделите вот эти ребра:
И введите в поле Chamfer значение 0,15:
Выделите вот эти полигоны:
И назначьте им одну группу сглаживания например 10:
Создайте еще один бокс под этой деталью:
Аналогично выдавите боковые полигоны, сделайте Chamfer со значением 0,15 и назначьте одну группу сглаживания боковым полигонам:
петля
Таким образом, создана верхняя дверная петля, скопируйте эти две детали вниз, чтобы создать вторую петлю:
Далее создадим замок. Ничего сложного в нем нет, делается он так же путем выдавливания полигонов, поэтому приведу конечный вид замка:
Сверху на замок поставьте заклепку в виде цилиндра с закругленными краями:
замок
Осталось создать последнею деталь. Начнем как и прежде с бокса. В результате выдавливания полигонов следует создать вот такой объект:
Сделайте два раза Chamfer вот на этих ребрах:
  чтобы не много скруглить эти места, после этого присвойте боковым полигонам одну группу сглаживания:
И выдавите этот «клык» на 1 единицу:
Теперь выделите ребра по контуру этого ребра, и премините инструмент Chamfer два раза, сначала с параметром примерно 0.2, второй раз 0.07. В результате в этом месте «клык» должен скруглиться:
Сделаете копию этого объекта, отразите ее и присоедините копию (не забудьте удалить полигон в месте стыка):
Ну и в конце создайте под этой деталью большой бокс (имитация пола камина), и не много наклоните ее:
Можно считать, что с геометрией камина мы закончили, теперь давайте перейдем к наложению материалов.
Для начала не много теории. Дело в том, что как вы наверно помните из урока № 6, для наложения текстур на любой объект этому объекту надо присвоить текстурные координаты. У стандартных объектов эти координаты присвоены по умолчанию, но у нас почти все составляющие камина созданы редактирование полигональной сетки, т.е. у них нет текстурных координат. Есть несколько способов решения проблемы присвоения текстурных координат, но пожалуй самым простым является модификатор UVW Map.
Выделите вот эту деталь камина:
И присвойте ей модификатор UVW Map (он находиться почти в самом низу списка модификаторов). Здесь самый большой интерес представляют параметры, находящиеся в группе Mapping:
модификатор UVW Map
В особенности переключатели, определяющие форму гизмо. Гизмо – это такой приметив который лучше всего повторяем геометрию исходного объекта и при этом проецирует свои текстурные координаты на вершины объекта. Например, для выделенной детали (и большинства остальных деталей камина) наилучшей формой гизмо будет являться Box:
наилучшей формой гизмо будет являться Box
Как вы можете заметить после выбора формы гизмо, около нашей детали появился оранжевый параллелограмм:
Это и есть гизмо, его высоту, ширину и высоту можно поменять здесь:
Но обычно в этом нет необходимости, размеры гизмо по умолчанию выбираются так, чтобы весь объект помещался внутри. Чтобы более детально управлять гизмо (например повернуть или переместить его) надо перейти на подобъект Gizmo:
подобъект Gizmo
Итак, текстурные координаты присвоены, теперь надо сделать материал полированного мрамора. Нажмите кнопку M, чтобы открыть Material Editor. Выделите один из шариков материалов, назначьте тип материала Raytrace и установите параметры как на рисунке:
Нажмите кнопку рядом с надписью Diffuse, в появившемся списке выберите Bitmap и найдите файл с текстурой мрамора или гранита (текстуры примененные в уроке можно найти в архиве ссылку на которой можно найти после этого урока). После этого поднимитесь в редакторе материалов на уровень вверх нажав на кнопку Go to Parent:
Go to Parent
Далее необходимо сделать так чтобы наш материал не много отражал объекты. Для этого в свитке Maps найдите надпись Reflect и нажмите кнопку рядом с ним в появившемся окне выберите Reflect/Refract, уровень действия установите 20%:
И примените этот материал нашей детали. Чтобы материал отображался в окне проекции, нажмите кнопку Show Standard Map in Viewport:
Show Standard Map in Viewport
Вот что должно получиться:
Как видите текстура «потекла», т.е. растянулась. Это произошло из-за того, что текстура у нас квадратная, а плоскость на которую накладываем текстуру прямоугольная. Это правиться растягиванием текстуры по ширине, для этого установите вот такие значения в настройках модификатора UVW Map:
В результате текстура должна выправиться   
Проделайте аналогичные действия с остальными мраморными частями камина. Особое внимание следует уделить самой верхней мраморной части камина. Здесь простым растягиванием текстуры потёки текстуры не поправишь. Поэтому увеличьте высоту гизмо таким образом чтобы он превратился в куб:
Перейдем к кирпичной кладке. Создайте материал типа Standard с вот такими параметрами:
Назначьте текстуру кирпичной кладки. В свитке Maps найдите параметр Bump. Нажмите кнопку рядом с этим параметром в появившемся окне выберите Bitmap и выберите файл маски (в архиве под именем stone_mask.jpg). Параметр Bump позволяет эмитировать неровность материала назначением черно-белого изображения (на самом деле можно использовать не только изображение). Чем чернее пиксель изображения, тем больше будет казаться ямка. И наоборот чем белее пиксель, тем больше будет выпуклость. Присвойте материал к нижней части камина, настроив следующим образом гизмо этой части:
Это позволит подобрать более правильный размер плитки. Аналогично настройте гизмо на средней части камина и присвойте этот же материал.
Примерно так же как кирпичная кладка создается материал трубы, только надо назначить текстуру штукатурки.
Вот так выглядит параметры металла для дверцы (файл текстуры металла metall.jpg):
Назначьте этот материал петлям, двери, и замку.
После этого создайте такой же материала металла, только вместо текстуры используйте файл ramka.jpg и для параметра Bump ramka_mask.jpg. Таким образом, отображаются некоторые мелкие детали рамки двери. Возможно, потребуется повернуть гизмо рамки и не много его растянуть чтобы текстура отображалась правильно.
Аналогично делаться материал для вот этой детали:
Изображение для параметра bump - radiator_mask.jpg, силу действия этого параметра увеличьте до 40%.
Настройте параметры материала ручек:
Теперь надо сделать имитацию огня в камине. Честное моделирование огня выходит за рамки этого урока, поэтому сделаем бокс с текстурой огня и разместим его вот так:
текстура огня
Осталось сделать последний штрих – вставить стекло в дверку камина. Для этого создайте бокс небольшой толщены, и разместите на месте стекла. Материал стекла будет иметь тип Standard с вот такими параметрами:
Это сильно упрощенный материал стекла, но для нашей цели он вполне подойдет.
ажмите кнопку F9, чтобы посмотреть конечный результат. Просчет отражений дело довольно трудоемкое, поэтому возможно придется немного подождать. После окончания рендера должно получиться примерно вот так:
результат урока
На этом все.


P.S. Урок очень сложный,поэтому если Вы его полностью выполнили, то можете заслуженно считать себя героем :)

Комментариев нет:

Отправить комментарий