Кто не хочет читать ONLINE, можете скачать доступные части книги:

Скачать часть1 (1.1 Мб) - Ознакомление с программой 3ds MAX

Скачать часть2 (1.4 Мб) - Объекты произвольной формы

Скачать часть3 (2.2 Мб) (не завершена) - Текстурирование

Глава 18. Соотношения между объектами разных типов

Эту главу обязательно прочитайте, хотя бы просмотрите, потому что здесь речь пойдёт о довольно-таки важных вещах. Объекты разных типов можно преобразовывать друг в друга, но эти преобразования далеко не всегда проходят гладко. Поскольку объекты различаются по своей природе и по своему устройству, то для того, чтобы превратиться в другой объект, им надо претерпеть некоторые изменения. Поэтому, если мы превратим объект сначала в одну сторону, а потом в обратную - можем получить ухудшение качества объекта. Так вот, о том, какие типы объектов ещё бывают, и как они друг в друга преобразовываются, и пойдёт речь в этой главе.

Операции Collapse All и Collapse To

В прошлой главе говорилось, что выполнение операции Collapse All приводит к преобразованию исходного объекта с модификаторами в редактируемый объект без модификаторов, причём, природа редактируемого объекта такова, что она наиболее близка к результату действия всех модификаторов. Фактически, есть модификаторы, которые определяют природу объекта, а есть и такие, которые особо её не затрагивают.

Природу объекта определяют модификаторы типа Turn to..., Edit... (кроме Edit Normals), ...Select.

Модификаторы Turn To... просто превращают имеющийся объект в объект заданного типа, модификаторы Edit... , в зависимости от того, что стоит за словом Edit, сначала превращают исходный объект в объект указанного типа + дают возможность редактирования. Есть ещё и группа модификаторов ...Select, где перед словом "Select" тоже стоит тип объекта.

...Select служит для того, чтобы выделить некоторые подобъекты объекта (без возможности редактирования), а потом применить к выделенным подобъектам те модификаторы, которые можно применить не только к целому объекту, но и к отдельным подобъектам. Для того, чтобы модификаторы применялись только к отдельным подобъектам, их нужно выделить, и применять модификатор находясь в режиме работы с этими подобъектами. Иногда бывает надо применить модификатор к подобъектам над какими-либо другими модификаторами. Если мы спустимся в самый низ нашего стека и выделим подобъекты на самом нижнем уровне, то когда мы находимся в режиме работы с нашими подобъектами, модификаторы могут применяться только над самым нижним уровнем. Чтобы применить их над каким-либо другим уровнем и существуют модификаторы ...Select. Сначала в нужном месте стека следует применить ...Select, а потом сразу же над ним нужный нам модификатор. В момент применения нужного нам модификатора, модификатор ...Select должен быть активным (то есть надпись должна быть жёлтой). ...Select так же прежде, чем предоставить возможность выделения, преобразует объект в выбранный тип.

И если в стеке имеется какой-либо из этих модификаторов (Turn to..., Edit... или ...Select), или они все вместе, то определяющим будет последний из них, и при выполнении Collapse All, объект будет таким, каким его сделал последний из модификаторов этих типов. При выполнении Collapse To определяющим будет последний из модификаторов, который попадает под Collapse To.

Некоторые модификаторы, применяемые к сплайновым формам и создающие на их основе готовые объекты, позволяют выбрать, объект какого типа давать на выходе, так, мы рассмотрели Lathe, который для нас по выбору может создавать Mesh, Patch и NURBS объекты. Модификатор Surface применённый к сплайновой форме, всегда даёт Patch.

Преобразование объектов друг в друга

Editable Patch и NURBS можно преобразовать в Editable Mesh и Editable Poly, при том параметр Steps или настройки Surface Approximation влияют на то, каким будет наш Mesh или Poly. Если Mesh или Poly потом преобразовать обратно в Editable Patch, то мы уже не получим исходной формы объекта. При преобразовании Mesh или Poly, криволинейные трёх- и четырёх- угольники объекта Patch образуются из треугольных граней объекта типа Editable Mesh. Вернее, после такого преобразования, четырёхугольников у нас вообще не будет, не зависимо от того, что было изначалоно, Poly или Mesh. Poly на самом деле представляется для визуализации через Mesh, и все многоугольники Poly-объекта представляются через те же треугольники.

В версии 3ds MAX R7 для объекта Editable Poly имеется возможность немного менять расклад треугольников, составляющих более крупный многоугольник, если нажать Edit Triangulation, то можно будет менять расклад при помощи находящейся рядом кнопки Turn, которая работает для диагоналей исходного многоугольника. В более ранних версиях, как это не странно, есть кнопка Edit Triangulation, по нажатию на которую пунктиром отображаются диагонали, но кнопки Turn рядом не наблюдается.

Так вот, Editable Patch, полученный из объектов Mesh и Poly всегда будет состоять только из треугольников. Касательные, исходящие из вершин, будут направлены строго вдоль сторон треугольников. Объединить два таких треугольника в один четырёхугольник невозможно. Так же нельзя создавать лоскутки методом натягивания на вершины. Лоскутки создаются сами по себе, их потом надо приклеивать в нужные места. Это очень неудобно из-за наличия касательных. Перемещая вершины одну относительно другой, мы можем видеть, как вместе с ними едут и касательные и исходные линии перекашиваются, изгибаются змеёй. Чтобы выравнивать изгибы, надо редактировать положения касательных.

Вершины объекта Editable Patch можно вращать, это будет соответствовать повороту группы, состоящей из самой вершины и исходящих из неё касательных.

В общем, нет никакого глубокого смысла в том, чтобы создавать Editable Patch из Mesh или Poly. Есть смысл только создавать Editable Patch из сплайновых форм при помощи модификатора Surface.

Объекты Editable Mesh и Editable Poly вообще никак нельзя преобразовать в NURBS, но их можно преобразовать в Editable Patch, а его потом в NURBS.

Вообще, в Editable Patch неплохо преобразуется результат действия модификатора Lathe на сплайновую форму (далее Lathe-объект). Но для того, чтобы преобразование было удачным, у Lathe надо выбрать в Output опцию Patch, а число сегментов поставить равным 4 (можно, даже 3). Дело в том, что 4 сегмента у Patch совсем не то же самое, что 4 сегмента у Mesh, ведь это криволинейные сегменты! Если применить потом Collapse To, то на выходе получится Patch-объект, у которого можно менять число шагов интерполяции Steps, хоть вообще до нуля скручивать, параметры касательных, задающих кривизну, сохраняются, и вообще не зависят от величины параметра Steps.

Можете сами попробовать, нарисовать какую-нибудь кривульку, применить к ней модификатор Lathe, преобразовать всё это дело в Editable Patch с учётом того, что написано здесь чуть выше, скрутить Steps до нуля, а потом преобразовать в NURBS. Когда у Editable Patch Steps скручено до нуля, он страшно угловатый, фактически одни только многоугольники, натянутые углами на точки пересечения задающих линий. А NURBS получится гладенький и кругленький. Правда, число линий на поверхности существенно возрастёт, логика, по которой Patch превращается в NURBS не до конца понятна.

Зато если у Lathe поставить сразу в Output NURBS, а число сегментов снова равным 4, получится очень симпатичный NURBS с четырьмя продольными кривыми и несколькими поперечными. И даже если мы выполним Collapse To и преобразуем Lathe в настоящий NURBS, он будет выглядеть точно так же, как действие модификатора Lathe с опцией Output = NURBS.

Вывод: преобразованием объектов друг в друга заниматься надо осторожно. Объекты преобразовывать в близкие им по типу объекты, иначе можно потерять как качество, так и возможность лёгкого и удобного редактирования и контроля за формой объектов.

Параметрические примитивы, из категорий Standard Primitives и Extended Primitives достаточно хорошо и корректно преобразуются в объекты типа Editable Patch. Получается гладкий Patch с малым числом подобъектов.

При преобразовании параметрических примитивов в Editable Mesh и Editable Poly, надо учитывать влияние таких параметров, как число сегментов, число сторон у торусов (бубликов), цилиндров, конусов. Сплайновые формы так же преобразуются в Editable Mesh и Editable Poly с учётом свойств визуализируемой поверхности, если включено её отображение, либо с учётом числа шагов интерполяции кривой.

Attach

Используя кнопку Attach у редактируемого объекта, надо иметь в виду то, что присоединяемый объект преобразуется в объект того же типа, к которому мы его присоединяем, поэтому в момент присоединения, присоединяемый объект должен быть надлежащим образом настроен. Если в стеке присоединяемого объекта были модификаторы они все схлопнутся и переродятся в свойства самого объекта.

Простой пример: мы моделируем какой-нибудь предмет при помощи технологий Editable Mesh или Editable Poly и применяем MeshSmooth для придания гладкости. Возможно, мы сначала собираем наш предмет из разных объектов, или в процессе моделирования для удобства разделили его на несколько самостоятельных объектов. Чтобы лучше понять, что же у нас получается, к каждому отдельному объекту, составляющему наш предмет, мы применили MeshSmooth. А потом подошло время снова соединить всё в один объект. Вот тут, перед тем, как выполнять Attach, надо удалить из стека всех присоединяемых объектов модификаторы. Из стека объекта, к которому осуществляется присоединение, удалять модификаторы не надо.

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

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

Так что будьте осторожны!

Работа со стеком

Модификаторы бывают такими, которые применяются на объект или поверх других модификаторов не особо задумываясь о том, к чему они применяются. К чему бы они не применялись, результат будет ожидаемым и предсказуемым. Это, главным образом, параметрические модификаторы, свойства которых задаётся при помощи различных флажков, численных параметров и переключателей.

Есть редактируемые модификаторы - Edit Mesh, Edit Patch, Edit Poly (в MAX 7), Edit Spline, которые дают нам инструменты редактирования, и результат действия модификатора зависит от нашей ручной работы, которую мы проводим при помощи этих инструментов. В общем, если попробовать спуститься по стеку ниже любого из модификаторов, где мы вручную взаимодействовали с геометрической поверхностью объекта, то будет появляться предупреждение о том, что все изменения, сделанные на более низких уровнях могут привести к непредсказуемым последствиям.

Дело в том, что как уже упомяналось не раз, подобъекты имеют свои уникальные номера и по этим номерам они храняться в памяти. Когда мы проводим редактирование объекта при помощи модификаторов редактирования Edit..., то мы проводим действия над подобъектами с заданными номерами, и модификатор запоминает, что мы сделали с подобъектом какого номера. Если ниже таких модификаторов мы не сделаем ничего того, что привело бы к появлению новых подобъектов с новыми номерами, скорей всего, всё будет в порядке. Точнее, даже, появление новых подобъектов - не так страшно как их исчезновение или перераспределение. Исчезновение подобъекта случится, если мы его попросту удалим. А перераспределение может произойти если мы применим инструмент Cut, тогда некие грани со вполне конкретными номерами разделяться на другие грани, и каждая из которых будет пронумерована. Старый номер может отойти к любой из новых граней, а может и исчезнуть вообще. Но номеруются ещё и вершины, и как перераспределяться номера между ними, тоже совершенно не известно. А если редактирование при помощи модификатора Edit проводилось поверх такого модификатора как Symmetry, MethSmooth или что-то ещё, меняющее число граней, то это вообще страшное дело! Когда применяется Symmetry, результат его действия представляется как новый объект, у которого одна половина может быть пронумерована так, как у исходного объекта, а второй половине подобъектов присваиваются по порядку возрастания все незадействованные номера. Если мы в первую половину что-то добавили или что-то из неё убрали, то у второй половины нумерация совершенно точно перераспределится совершенно по-другому!

Бывают ещё и такие модификаторы, резальтат действия которых засвисит от исходной формы объекта. В самой программе 3ds MAX таких модификаторов, вроде, нет, но их можно преобрести отдельно и подключить к программе, тогда они будут доступны из Modifier List. К примеру, такой модификатор есть в подключаемом модуле (plugin) ClothFX (ранее известный как Stitch фирмы Digimation). Этот плагин просчитывает динамику ткани, причём просчёт ввиду своей сложности происходит не в реал-тайм, а заранее, когда нажимается соответствующая кнопка. Результат рассчёта зависит от формы как объекта, имитирующего ткань, так и от формы объектов, с которыми эта ткань взаимодйствует. Модификатор применяется как к ткани, так и к взаимодействующим объектам. После этого, как только мы будем пытаться опуститься ниже по стеку взаимодействующих объектов или ткани, нам будет выдаваться предупреждение.

В общем, в любом случае, это всего лишь предупреждение. Если нам очень надо изменить объект ниже по стеку, так что же делать, надо брать и менять! А все нежелательные изменения, которые при этом произойдут, будем поправлять вручную. Другой момент, что мы просто будем вносить изменения ниже по стеку с осторожностью, заведомо не делая того, что плохо скажется на конечном результате.

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

ID и SG

Эти опции есть почти у всех редактируемых объектов. Что такое ID и SG мы уже знаем, этим вещам была посвящена специальная Глава 12. Вот только надо знать, что в зависимости от типа объекта, эти опции применяюются по-разному. У сплайнновых форм есть только ID, нету SG, и мельчайшим подобъектом, к которому может быть ID является сегмент. ID влияет на Rendering Surface сплайновой формы, но если мы применим модификатор Surface, он не будет брать в рассмотрение все эти ID, поэтому, если нам надо для отдельных лоскутков Surface назначить свои ID, придётся либо преобразовывать объект в Editable Patch, либо, если мы хотим сохранить исходную сплайновую сетку на случай, если придётся вносить изменения, мы будем вынуждены воспользоваться модификатором Edit Patch. Результат действия этого модификатора, как вы, наверное, догадываетесь, зависит от всех изменений, сделанных на более низких уровнях, поэтому пользоваться им надо осторожно.

Либо, можно воспользоваться парами модификаторов: Patch Select и Material ID. Модификатор Material ID меняет ID всего объекта, или выделенного подобъекта на тот номер ID, который мы укажем в единственном параметре модификатора. Второй способ хорош в том случае, если нам надо добавить нашему обхекту только один новый ID. Иначе нам придётся применять эти сочетания модификаторов столько раз, сколько ID мы хотим добавить.

Detach - Разделение объекта на части, копирование подобъектов

Иногда может возникнуть необходимость отделить от объекта его часть, и сделать эту часть самостоятельным объектом. Для таких целей в иструменте объекта существует команда Detach - отсоединить. По выполнении этой команды, все выделенные подобъекты отсоединяются. Но у отсоединения есть два флажка: Detach to Element и Detach as Clone. (У некоторых типов объектов одного или обоих флажков может не быть, но у Editable Poly, Editable Mesh и Editable Patch должны быть оба).

Если ни один из флажков не включен, то выделенные подобъекты отсоединяются в самостоятельный объект, имя которого будет указано в строке над флажками. По умолчанию имя такое Object ##, но можно вписать любое, какое вам нравился. Опорная точка нового объекта совпадает с опорной точкой исходного объекта, так же новый объект наследует от исходника все значения трансформаций, но не наследует модификаторы, которые находились выше по стеку. То есть, если вы осуществляете Detach находясь на базовом (самом нижнем) уровне объекта, то новый объект получается таким, каким бы он был даже если к вашему исходному объекту не было бы применено никаких модификаторов. Если отторжение Detach осуществляется когда вы работаете в режиме модификатора типа Edit Mesh, Edit Patch, Edit Poly, Edit Spline, то отсоединяемая часть будет такой, как будто бы не было всех модификаторов выше по стеку. Новый объект, отсоединённый от исходного, в любом случае не имеет никаких модификаторов, и его стек состоит из одной строки.

Если мы хотим не разбить объект на две независимые части, а сделать копию некоторых подобъектов, для этого надо включить флажок Detach As Clone. Для клонирования нет никаких параметров, мы получаем просто независимую копию выделенных подобъектов. И действительно, когда понимаешь природу устройства объектов, то понятно, что установить связь между отдельными частями объекта весьма и весьма проблематично.

Другая проблема - когда при моделировании хочется создавать копии подобъектов в пределах одного и того же объекта, либо отсоединить некоторые подобъекты от общей поверхности, но оставить их в пределах исходного объекта. Например, у нас есть непрерывная поверхность, а мы хотим выделить несколько граней, многоугольников или лоскутков и как бы отрезать их от общей поверхности. Для этого надо включить Detach to Element. Тогда выделенные части отрежутся, их можно будет перемещать, а остальная поверхность не будет тянуться за ними следом. Но при этом не создаётся нового объекта, отсоединённые части являются подобъектами исходника.

Если включены оба флажка: Detach As Clone и Detach to Element, то у нас просто в пределах одного объекта создадутся копии выделенных подобъектов. При этом исходные подобъекты останутся, и если они были присоеденины к другим подобъектам, соединение с ними сохранится.

Если в качестве подобъектов берутся вершины, то отрезание происходит по линии, на которой лежат крайние вершины. Если отсоединить одну вершину, то она отсоединится без граней.



<< Назад Оглавление   Вперёд >>
homepage: http://teapot3d.narod.ru
Используются технологии uCoz