Table of Contents

ГЛАВА 12

Моделирование подобъектов

Хотя многие объекты можно смоделировать из примитивов или лофт-объектов, их можно создать гораздо больше, манипулируя основной геометрией вершин, граней, ребер и лоскутов. При этом компьютерное моделирование становится подобным творчеству скульптора. Людей, занимающимися моделированием и являющихся знатоками таких методов, часто называют скульпторами вершин. В 3D Studio MAX эта область называется моделированием подобъектов.

Если влияние оказывается на нечто меньшее целого объекта, в 3DS МАХ это называется моделированием подобъекта. Существуют две основных формы моделирования подобъектов: манипуляция самими категориями подобъектов и ограничение модификаторов до выборок подобъектов. При первой форме происходит активное вытягивание, масштабирование и вращение наборов вершин и, возможно, изменение топологии за счет добавления или удаления секций. При второй форме определяется выборка вершин с одним модификатором, после чего выборка передается вверх по стеку для обработки последующими модификаторами.

В этой главе рассматриваются следующие понятия моделирования подобъектов:

ПРИМЕЧАНИЕ

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

Редактирование на уровне подобъекта

Моделирование подобъекта происходит всякий раз при манипуляции дискретными сущностями или областями в рамках объекта. Для моделирования на уровне вершины, грани, ребра, сплайна, сегмента или лоскута необходимо добавить модификатор, предоставляющий доступ к необходимому уровню подобъекта. Подсущности объекта и модификатор, используемый для редактирования этих подсущностей изменяются в зависимости от геометрии объекта (см. рис. 12.1):

При работе с большинством программ моделирования редактирование дискретных секций модели практически всегда является постоянным решением. Таким был метод в 3DS для DOS - каждый раз при редактировании вершин и граней в модели делались явные изменения, которые было нелегко отменить. Этот метод очень похож на создание скульптуры из каменного блока. Решения следует планировать тщательно, а резцом бить уверенно, чтобы на скульптуре не было выемок или чтобы случайно не потерялся нос. Но в 3D Studio MAX подобного постоянства нет, если оно не требуется. Моделирование с объектом EditableMesh является явным, в то время как редактирование в рамках EditMesh и посредством модификаторов выборки является обратимым.

Использование модификаторов выборки

Может оказаться, проще думать, что в 3D Studio MAX существует только два типа модификаторов -определяющие выборки и действующие на них. В этой книге рассматриваются модификаторы выборки и модификатора, моделирования. Понимание основного отличия между ними позволит хорошо спланировать последовательность Edit Modifier Stack.

В настоящее время только несколько модификаторов 3DS МАХ определяют выборки и они называются модификаторами выборки. К ним относятся модификаторы Edit (EditMesh, EditSpline, EditPatch) и Volume Select. Эти модификаторы позволяют выбирать конкретные части модели для передачи их с целью манипуляции посредством остальных модификаторов. Исключение представляет новый объект EditableMesh, позволяющий определять выборку подобъектов без добавления модификатора. Для целей обсуждения EditableMesh будет считаться модификатором выборки, хотя он представляет собой класс объектов.

Есть уверенность в том, что разработчики будут добавлять другие модификаторы выборки ввиду их полезности. После введения эти модификаторы выборки, по всей вероятности, будут следовать тем же правилам, что и Volume Select и EditMesh.

Активная выборка стека

Edit Modifier Stack передает вдоль себя то, что называется активной выборкой. Эта выборка является геометрией, которую "видят" последующие модификаторы и применяют к ней свое действие. Содержимое активной выборки может изменяться во всем стеке за счет добавления других модификаторов выборки и при помощи воздействия на нее других модификаторов, которым она передается. Подобный факт может оказаться неочевидным при моделировании на уровне объекта, поскольку активная выборка является целым объектом, и кроме того, сам факт передачи выборки по стеку не является очевидным. Сила этого понятия состоит в том, что имеется возможность определения того, что модифицируется в любой точке стека путем добавления или настройки модификатора выборки.

ПРИМЕЧАНИЕ

Выборки подобъектов активны только в том случае, если кнопка Sub-Object модификатора Edit нажата и имеет желтый цвет (последний всегда предупреждает о том, что включен режим Sub-Object). В отличие от этого, модификаторы VolSelect активны всегда, поскольку их режим Sub-Object служит для манипуляции гизмо, а не уровней выборки.

Активная выборка стека может изменяться от модификатора к модификатору. Кубок, показанный на рисунке 12.2, иллюстрирует это понятие, поскольку стек начинался с примитива Tube и был результатом пяти сведений на конус, после чего были выполнены пять различных выборок объема. Каждая выборка заменяла предыдущую и определяла новую активную выборку для стека. EditMesh добавился в конце для завершения сглаживания и выполнения выпуклой рукоятки. Стек разрешает возвращаться к любой предыдущей выборке и изменять то, что является активной выборкой в данной точке стека. Последующие модификаторы, работающие над этой выборкой, мгновенно воздействуют на новую выборку. Можно видеть влияние последующих редактирований на регулировки выборки - совершенно уникальный и поразительный метод.

Модификаторы "Edit'

Невинные по внешнему виду простые кнопки с предшествующим словом "Edit" на панели Modifier обладают наибольшей силой. Каждый из трех модификаторов (EditMesh, EditSpline и EditPatch) выполняет в 3D Studio MAX две роли: они разрешают подобъектам редактировать соответствующую им геометрию и определяют выборки подобъектов для будущих воздействий на них модификаторов стека. Это следующие кнопки:

ПРИМЕЧАНИЕ

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

Для ветеранов 3D Studio единственный модификатор EditMesh является эквивалентом того, что было целым модулем 3D Editor, а модификатор EditSpline - эквивалентом целого модуля 2D Shaper. Все команды, использовавшиеся для охвата редактирования каркасов и редактирования сплайнов в 3DS для DOS, теперь погружены в эти два модификатора.

При работе с модификаторами Edit последние автоматически запрещают кнопку стека Show End Result (показать конечный результат), поскольку модификации на уровне Sub-Object должны выполняться в пространстве, определенном этим модификатором в данной точке истории. Результат можно анализировать посредством нажатия и удержания кнопки Show End Result, но видеть его во время моделирования нельзя. После отпускания кнопки она возвращается в выключенное состояние при возврате к редактированию в режиме Sub-Object.

Определение выборок с помощью Volume Select

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

ПРИМЕЧАНИЕ

Если Volume Select или модификатор Edit в качестве активной выборки определяют целый объект, последующие модификаторы выбирают свои центры в точке вращения объекта, а не в центре выборки.

СОВЕТ

При работе с выборкой подобъектов центр последующего модификатора можно расположить в центре вращения объекта за счет первоначального присвоения модификатора Volume Select, оставив его на уровне выборки объекта, и последующего присвоения модификатора. Теперь можно либо использовать модификатор Volume Select, либо удалить его и применить первоначальный модификатор Edit. Вновь добавленный модификатор будет согласовывать свое гизмо с новой выборкой, оставляя свой центр в точке вращения объекта.

Следует понимать, что модификаторы Volume Select не деформируются предшествующими в стеке моди-фикаторами. Хотя эту характеристику используют все гизмо модификаторов, она оказывает невероятное влияние в случае применения Volume Select. Скажем, например, что на верхушке цилиндра выполняется Volume Selection и затем на верхушке создаются конуса. Если затем перейти к основанию стека и изгибать весь цилиндр, гизмо Volume Select остаются неподвижными, а вершины изгибаются через объем выборки. Набор выборки для последующих конусов изменяется с увеличением изгиба. В этом случае следует добавить еще один модификатор Volume Select в конец стека для возврата выборки к целому объекту. Изгиб необходимо применить после обеспечения неизменности объема выборки при изгибе целого объекта. Эта характеристика не является уникальной для модификатора Volume Select - так фактически происходит со всеми гизмо модификаторов. Просто это влияние гораздо более заметно для модификатора выборки.

Механика модификаторов Edit

Модификаторы Edit совершенно поражают тем, что записывают каждое действие, выполняемое внутри них. Это не просто список аннулирования, но прогрессия каждого принятого решения. Хотя можно аннулировать только то, что доступно в текущем сеансе 3DS МАХ, все произведенное редактирование сохраняется посредством модификатора Edit в МАХ-файле сцены. Это позволяет возвращаться к более ранним частям стека, настраивать предыдущие модификаторы или параметры создания и распространять все примененное к объекту моделирование через новую историю. Это поразительно мощная возможность, но она имеет и свою цену - увеличение дискового пространства и объема ОЗУ.

Каждый добавляемый к стеку модификатор Edit добавляет и накладные расходы, связанные с памятью, поэтому все редактирование является интерактивным и изменяемым. Таким образом применение дюжины модификаторов Edit к объекту увеличивает требования к ОЗУ этого объекта более чем в 12 раз, хотя во всей своей истории объект может иметь одинаковое количество граней и даже значительно меньшее в конце. Поэтому модификаторы Edit следует применять очень осторожно и, возможно, в течение ограниченного периода времени.

ПРИМЕЧАНИЕ

Накладные расходы, связанные с использованием EditMesh, стали причиной того, что в Выпуске 1.1 был введен объект EditableMesh и, вероятно, вскоре появятся объекты EditableSpline и EditablePatch.

Каждый модификатор Edit записывает действия, выполняемые внутри него, несколько по-другому. EditMesh записывает дельту для каждой вершины, на которую оказано воздействие, поэтому модифицированный объект может удвоиться по размеру "только" в том случае, если выполняется трансформация всех вершин. EditSpline и EditPatch совершенно отличаются в том, как они записывают каждую одиночную операцию редактирования и сохраняют их в порядке применения. Благодаря такому хранению записей важные соотношения кривой и касаний для сплайновой геометрии корректно настраиваются при воздействии на элементы, находящиеся в стеке ранее. Такое обширное хранение записей также оказывает влияние на накладные расходы по памяти. При использовании EditSpline необходимо часто разрушать стек для уменьшения объема занимаемого ОЗУ и уменьшения размера файла.

Внутри каждого модификатора Edit имеется "DeleteObject" (удалить объект), который записывается все разрушения, причиненные объекту. Поэтому можно перейти на более ранние стадии в стеке и обнаружить целую модель или удалить модификатор и при этом повторно появляются "удаленные" части. Чтобы сделать удаления внутри модификатора Edit постоянными, его следует разрушить. Подобная характеристика сохранения записи удаленной геометрии также позволяет отсоединять и разбивать части на новые объекты и затем восстанавливать первоначальный объект путем удаления модификатора Edit.

ПРИМЕЧАНИЕ

Неплохой практикой является разрушение части Edit стека после завершения с ней работы, чтобы сохранить ОЗУ и размер файла. Многие занимающиеся моделированием выполняют Save Selected (сохранить выбранное) на объекте для сохранения копии перед разрушением - просто для того, если потребуется вернуться к ранним состояниям модели.

Уровни выборки внутри модификаторов Edit

Каждый модификатор Edit имеет отдельные и различные уровни выборки подобъектов для своих категорий. Каждый уровень выборки действует в качестве отдельного набора выборки и не влияет на другие уровни выборки (за исключением скрытых граней и вершин). Обычно каждый из модификаторов Edit обеспечивает три уровня выборки:

Поскольку модификатор Edit определяет активную выборку для данного момента времени, это оказывает огромное влияние на последующие модификаторы. Уровень выборки (например, вершина, грань или ребро для EditMesh) определяет содержимое и тип геометрии, которые "видит" следующий модификатор в стеке. Это может оказаться важным, поскольку некоторые модификаторы работают только на определенных типах геометрии. Например, модификатор Normal будет функционировать только на активной выборке граней, игнорируя выборки вершин и ребер.

Модификаторы Edit как наборы выборок

Модификатор Edit можно считать контейнером наборов выборок. Когда его уровень Sub-Object активен, определенная в данный момент выборка передается в качестве текущей для дальнейшего применения к ней модификаторов. Здесь может скрываться хитрость, поскольку текущее состояние выборки подобъектов может повлиять на будущие модификаторы. Изменение уровня EditMesh от вершины к грани, вероятно, резко изменит выборку и будущие результаты.

ПРИМЕЧАНИЕ

При помещении модификатора Edit в режим Sub-Object, и в случае, когда для текущего уровня выборки ничего не выбирается, будущие модификаторы в стеке результатов не отобразят, поскольку активная выборка пуста.

Модификаторы Edit используются для самостоятельного редактирования дискретных секций или определяют выборку, которая передается другим модификаторам в конвейере редактирования. Активная выборка остается активной до тех пор, пока в конвейер редактирования не добавляется другой модификатор выборки, например, модификатор Edit или Volume Select. До тех пор, пока при моделировании требуется использовать одну и ту же выборку, можно продолжать добавлять к ней модификаторы. Однако если необходимо изменить выборку, следует добавить другой модификатор выборки.

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

ПРИМЕЧАНИЕ

Помните, что при добавлении каждого модификатора Edit в стек появляются существенные накладные расходы, связанные с памятью и дисковым пространством.

Поименованные наборы выборок подобъектов

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

Каждый модификатор Edit (и объект EditableMesh) позволяет определять произвольное количество выборок на один уровень. Во избежание путаницы поименованные наборы выборок подобъектов нельзя увидеть между уровнями выборки. Это означает, например, что поименованная выборка вершин не появляется при работе на уровне граней. При удалении модификатора Edit или разрушении объекта EditableMesh также происходит удаление любых поименованных наборов подобъектов, которые могли быть созданы.

ПРИМЕЧАНИЕ

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

Другими методами сохранения выборок подобъектов является номер ID материала, превышающий 1 (для объектов, которым не присвоен материал Multi/Sub-Object), и присвоения сглаживающих групп (для объектов, которые полностью сглажены любым способом). Хотя сглаживающие группы и ID материала не являются наборами выборок, они обеспечивают возможность хранения выборок на уровне грани, которые видны всем последующим модификаторам в стеке, и продолжают существовать после разрушения стека.

Определение выборок подобъектов для других модификаторов

Как было описано выше, модификаторы действуют как активная выборка стека. Для определения правильной выборки в подходящей точке во время редактирования потребуется некоторое искусство. При модификации частей подобъекта в объекте наибольшая эффективность достигается в случае определения выборки для модификатора с использованием следующих приоритетов:

  1. Используйте Modifier Limits (пределы модификатора) при необходимости оказания влияния на целый объект, но воздействуя только на его часть (например, изогнутая соломинка).
  2. Если необходимо изменить выборку подобъектов так, чтобы она стала целым объектом, добавьте перед модификатором моделирования модификатор Volume Select (на уровне объекта).
  3. Используйте Volume Select при модификации выборок, определяемых посредством одного или нескольких прямоугольных, цилиндрических или сферических объемов. Это позволяет изменять ранее определенную топологию, но не работает, если предыдущая геометрия изменяет размеры.
  4. Используйте выборки EditMesh при модификации нерегулярных или несоприкасающихся выборок. Это позволяет изменять ранее определенные размеры, но не работает при изменении предыдущей топологии.

Настройка модификаторов при помощи выборок подобъектов

Модификаторы обрабатывают выборки подобъектов тем же способом, которым они обрабатывают множества объектов - за счет размещения их центров гизмо в центре тяжести выборки.

При модификации одиночного целого объекта центры гизмо размещаются только в точке вращения. Модификаторы согласовывают свои гизмо с экстентами активной выборки. Однако при изменении выборки центр гизмо не перемещается. Он остается там, где был в начале вместе с первоначальной выборкой, или там, где размещался позже.

Перемещение центра гизмо после применения модификатора к выборке под объектов - очень распространенный прием. Типовая процедура описана в последующем списке и показана на рисунке 12.4.

  1. Примените модификатор к выборке подобъектов.
  2. Увеличьте значение (значения) объема, чтобы увидеть эффект.
  3. Активизируйте режим Sub-Object модификатора и выберите Center.
  4. Выберите Move и ограничьте трансформацию соответствующей осью.
  5. Переместите центр гизмо в определенное положение. Например, для Bend или Taper этим положением часто является ребро выборки.
  6. Вернитесь к настройке и окончательно определите значения модификатора.

СОВЕТ

Для упрощения расположения центров гизмо нажмите на пробел для блокировки выборки на Center и продолжайте перемещать ее без предварительного выбора ее курсором. Отметим, что при переключении уровня выборки к гизмо и выходе из режима Sub-Object заблокированной выборкой окажется целый объект.

Использование выборок EditableMesh с другими модификаторами

При работе в рамках EditableMesh, вероятнее всего, принимаются постоянные решения о моделировании. Если это предпочтительный метод работы. Modifier Stack может выглядеть немного незнакомо. Для деформации только части объекта, например, посредством Bend или Taper, выбираются вершины, которые необходимо модифицировать внутри EditableMesh и модификатор применяется даже без выхода из режима Sub-Object. Модификатор воздействует на все, что является активной выборкой в конвейере и поскольку работа продолжается всегда в режиме Sub-Object, только что выбранные вершины теперь модифицируются. В отличие от других программ, например, 3DS для DOS, можно повторно вернуться к своей выборке, модифицировать ее и вернуться к модификатору. При выполнении явного моделирования общепринято применять следующую процедуру:

  1. Определите выборку подобъектов для вершин или граней (ребра фактически являются выборками вершин).
  2. Для воздействия на выборку добавьте к стеку модификатор и измените значение объема, чтобы эффект стал заметным.
  3. При необходимости, разместите соответствующим образом центр гизмо модификатора по отношению к выборке подобъектов.
  4. Настраивайте значения модификатора до получения удовлетворительных результатов.
  5. Возвратитесь к EditableMesh и настройте выборку, если это необходимо.
  6. После того, как выборка и модификатор становятся корректными, следует разрушить модификатор в стеке.
  7. Возвратитесь к EditableMesh для определения другой выборки (предыдущие выборки подобъектов по-прежнему хранятся) или примените другой модификатор.

Как видно из предыдущего метода, при моделировании с EditableMesh общий прием заключается в применении модификатора и частом разрушении стека. Стек чем-то напоминает уровень воды, который поднимается и падает в зависимости от количества выполняемых редактирований. Если необходимо принять много решений, уровень высокий. Если различные стадии кажутся удовлетворительными, их обычно разрушают и уровень понижается. При выполнении анимации с частями завершенных объектов часто требуется множество модификаторов, и всех их необходимо поддерживать. Следовательно, истории редактирования обычно флюктуируют по размеру.

Другим полезным методом при работе с EditableMesh является определение выборки и добавление Volume Select, экстенты которого автоматически охватывают выборку. Затем выборку можно очистить в EditableMesh и поместить между EditableMesh и Volume Select другие модификаторы. Последнее следует выполнять с некоторой предусмотрительностью, поскольку порядок в стеке переустановить нельзя, а выборки для их использования необходимо создавать в правильном порядке. Однако имеется возможность копирования трансформации и, таким образом, определенного объема выборки, модификаторов Volume Select между входами дорожек модификатора в Track View.

Расположение центров гизмо на выборках подобъектов

Для модификаторов, применяемых на уровне Sub-Object, местом расположения по умолчанию центров их гизмо является центр тяжести выборки. Однако подобное размещение может затруднить координацию нескольких модификаторов, поскольку при изменении выборки центры г^измо будут сдвигаться. Перекрытие места расположения по умолчанию - помещение центров гизмо в точку вращения вместо центра тяжести - облегчает координацию. Ниже приведены шаги, которые можно использовать для помещения центра гизмо модификатора в точку вращения вместо центра тяжести (рис. 12.5):

  1. Определите необходимую выборку подобъектов внутри модификатора Edit или с помощью модификатора Volume Select.
  2. Деактивизируйте режим Sub-Object модификатора Edit (кнопка Sub-Object больше не подсвечена желтым) или переключите модификатор Volume Select на уровень Object.
  3. Примените необходимый модификатор. Гизмо модификатора подгоняется к целому объекту, а центр гизмо расположен в точку вращения.
  4. Вернитесь к модификатору Edit, повторно войдите в режим Sub-Object и выберите подходящий уровень выборки для своей выборки. При использовании Volume Select переключитесь из уровня объекта на уровень вершины или грани.
  5. Вернитесь к модификатору, только что примененному в стеке. Гизмо модификатора подгоняется к активной выборке, но центр гизмо по-прежнему расположен в точке вращения.
  6. Продолжайте настраивать параметры модификатора.

Предыдущий метод наиболее надежен при размещении центра гизмо в точке вращения подобъекта. Подобный метод можно использовать со всеми модификаторами выборки, памятуя о том, что выключение их выборки подобъектов может разрешить другой выборке подобъектов вернуться в активное состояние. В этом случае между модификатором Edit и вашим модификатором необходимо добавить модификатор Volume Select на уровне объекта.

ПРИМЕЧАНИЕ

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

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

СОВЕТ

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

Основы моделирования подобъектов

Ранее обсуждалось как определенные с помощью EditMesh, EditableMesh и других модификаторов Edit выборки подобъектов передаются другим модификаторам. Но передача выборок является побочным продуктом того, для чего собственно предназначены модификаторы - для моделирования подобъектов. EditMesh и EditableMesh служат для манипуляции необработанным каркасом посредством его вершин, граней и ребер. При этом создаются новые части каркаса, а другие улучшаются или удаляются. В заключение характеристики влияющей на поверхности то, как она выглядит, как отражает свет, какой материал используется присваиваются через редактирование каркаса. Все это редактирование выполняется на уровне подобъектов.

На уровне вершины и грани имеется множество реалистического и эффективного моделирования. После создания объекта может потребоваться растягивать вершины, поворачивать или выравнивать грани и создавать дополнительные грани. На уровне Sub-Object также лучше совершенствуются сглаживающие группы и лучше анализируются нормали граней. Многие люди, занимающиеся моделированием, большую часть времени тратят на работу на уровне Sub-Object, используя инструменты редактирования каркаса и совершенствуя свойства поверхностей. В оставшейся части этой главы анализируются функции, манипулирующие этими конечными категориями и придающие моделям конкретный характер. Следующая глава использует эти основные принципы при исследовании деталей и методов применения каждого из инструментов моделирования подобъектов.

Общие понятия для модификаторов Edit

Модификаторы Edit имеют много общего, поскольку каждый из них манипулирует геометрией подобъек-та и работает в манере, которая обычно считается явной (при выполнении в других программах моделирования). По этой причине модификаторы Edit имеют множество одинаковых процедур. Сюда входит присоединение объектов для работы с ними, способ, при помощи которого точки вращения-центры работают с выборками различных типов, использование угловых порогов и принципы выполнения анимации с выборками подобъектов. Люди, занимающиеся моделированием, также используют ряд общих методов, увеличивающих удобство работы с модификаторами Edit, например, использование сеточных объектов, вспомогательные объекты точек и множество "горячих" клавиш. Если прочитать об этих общих методах, можно обнаружить, что EditMesh и EditableMesh имеют гораздо больше возможностей по сравнению с EditSpline и EditPatch.

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

Модификаторы Edit имеют одну функцию, которая не работает с выборками подобъектов: Attach (присоединить) (см. рис. 12.6). Эта функция соединяет два объекта, в результате чего один становится активным, а другой - присоединенным или элементом активного объекта. Эта операция соединения объектов используется в действиях, которые "сшивают" геометрию подобъектов, что чаще всего необходимо для объединения вершин различных объектов.

ПРИМЕЧАНИЕ

Единственный метод присоединения нескольких объектов к другому за один шаг заключается в использовании функции Attach Multiple из EditableMesh.

ПРИМЕЧАНИЕ

Присоединение следует выполнять осторожно, поскольку данный процесс разрушает стек присоединенного объекта. Если присоединенный объект является параметрическим или лоскутным, он разрушается до каркаса. Во время разрушения теряется любая анимация или информация Modifier Stack. При выполнении присоединения необходимо проанализировать, какую историю редактирования объекта и анимацию требуется сохранить, поскольку из активного объекта сохраняется только это.

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

Во время присоединения объектов принимается несколько решений в отношении присвоении материала и отображения. Если материал не присвоен ни одному из объектов, ничего не случится; но если материал присвоен одному или обеим объектам, может произойти следующее:

Странная ситуация возникает, когда присоединяемые объекты имеют ID материалов, которые не ссылаются на мультиматериал. Например рамки для удобства создаются с шестью различными ID материала (по одному для каждой стороны). При присоединении рамки к другим объектам различные ID внезапно приобретают значение и различные стороны рамки имеют различные материалы. Во избежании подобной ситуации присваивайте целому объекту Box один материал (посредством Material или EditMesh).

Усредненные точки вращения-центры для соприкасающихся выборок

К соприкасающимся выборкам относится несколько функций. Говорят, что выборка является соприкасающейся столько времени, сколько она содержит прилегающие грани или ребра, совместно использующие вершины. Прилегающие грани, принадлежащие отдельным элементам, не считаются соприкасающимися. Несоприкасающаяся выборка образуется при выборе отдельных несмежных областей каркаса или при выборе частей различных элементов. Во всех случаях когда выборка содержит прилегающие грани, ключом к тому, чтобы увидеть какая точка и ось активны в конкретный момент времени, является тренога осей. Трансформации перемещения, вращения и масштабирования очевидно подчиняются ориентации и расположению этих индивидуальных пиктограмм. Функции, используемые EditMesh, и наиболее очевидная среди них Extrude, опираются на эти пиктограммы для направления своего результата.

ПРИМЕЧАНИЕ

EditMesh и EditableMesh вычисляют центры вращения совершенно по-разному, при этом EditMesh обладает большей гибкостью. В таком контексте модификаторы EditSpline и EditPatch аналогичны EditableMesh.

При использовании EditMesh отдельным выборкам граней задаются собственные центры вращения в центре каждой грани. Ориентация центра зависит от текущей системы координат. Если система координат отлична от локальной, ориентация пиктограмм согласовывается с этой системой координат. Как показано на рисунке 12.7, если Pivot Point Center активна, оси отображаются для каждой выборки, в противном случае создается усредненная ось. Если используется локальная система координат, оси отображаются для каждой выборки независимо от выбора текущего центра трансформации. Ориентация пиктограммы Х всегда находится в мировой плоскости XY, ориентация Z совпадает с нормалью грани, a Y перпендикулярна осям Х и Z.

Для соприкасающихся выборок расположение каждого центра вращения усредняется с целью установления общей центральной точки (см. рис. 12.8). При использовании локальной системы координат направления отдельных нормалей усредняется в общий вектор нормали.

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

Предыдущее обсуждение опций центра трансформации относилось к EditMesh. Важно отметить, что EditableMesh, EditSpline и EditPatch значительно отходят от этих весьма гибких опций, которые бьыи только что описаны для EditMesh. Для EditableMesh причиной такого отличия от EditMesh было увеличение интерактивной скорости при моделировании подобъектов. Если необходима только что описанная гибкость трансформации, используйте EditMesh. Если требуется скорость, используйте EditableMesh. В настоящее время эквивалентные опции для EditSpline и EditPatch отсутствуют. Правила для способа расположения центров трансформации оставшихся модификаторов Edit, гораздо проще:

Подобное различие в вычислении точек центра трансформации может оказаться единственной серьезной причиной предпочтительного использования EditMesh по сравнению с EditableMesh. Если необходимо одновременно манипулировать отдельными выборками (например, одновременным вытягиванием или вращением), следует использовать EditMesh. При одновременном моделировании одиночных областей каркаса лучше применять EditableMesh.

Использование точек и сеток вместо точек вращения

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

СОВЕТ

Трансформацию вокруг точки вращения объекта можно выполнять посредством выбора объекта в качестве системы координат Pick и использования Coordinate System Center.

В режиме Sub-Object опция Pivot Point Center менеджера трансформации игнорирует точку вращения объекта и использует вместо нее центр выборки. Поэтому определены две опции - центр выборки и центр системы координат. Таким образом опция Pick менеджера трансформации становится очень важной, поскольку обеспечивает возможность использования в качестве центральной точки любого объекта. Для управления точкой манипуляции выберите объект, который не собираетесь использовать в качестве системы координат Pick, и поместите его туда, где требуется выполнять вращение и масштабирование (см. рис. 12.10).

СОВЕТ

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

Вспомогательные объекты Point, используемые в качестве центра координат, очень похожи на практику 3DS для DOS помещать Global Axis (глобальная ось) в 3D Editor. Вспомогательные объекты Point обеспечивают дополнительные преимущества множества точек, связывания, выравнивания и анимации. Для точного размещения вспомогательный объект Point можно помещать посредством 2.5D-(|mKcauHH вершин или функции Align. Для настоящей SD-^WKCBUHH вершин следует зафиксировать Point на необходимой вершине в двух перпендикулярных видовых окнах.

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

СОВЕТ

При настройке вспомогательных объектов можно сэкономить несколько шагов за счет закрепления стека (используя кнопку Thumb Tack), выхода из режима Sub-Object и последующей трансформации вспомогательного объекта.

Сетки представляют собой другой ценный инструмент моделирования подобъектов, поскольку подобно вспомогательному объекту Point, их точку вращения можно использовать в качестве центра координат трансформации. Кроме этого объекты Grid (сетка) обеспечивают настраиваемую сетку фиксации для создания вершин. Незаметной, но ценной характеристикой является Grid Nudging (подталкивание сетки) - возможность, присвоенная (по умолчанию) клавишам "+" и "-". Если сетка активна, нажатие на эти клавиши подталкивает сетку вдоль оси Z на заданное расстояние. По умолчанию расстояние перемещения составляет одну системную единицу, хотя можно установить любое значение через Grid Nudge, который расположен в закладке Preferences Viewports (глобальные параметры видовых окон).

Угловые пороги

Некоторые функции внутри EditMesh и EditableMesh основывают свою работу на углах, образованных между прилегающими гранями. Функции AutoEdge, AutoSmooth и Explode используют то, что называется значением углового порога, что относится к углу, образованному между гранями. Каждая пара граней, совместно использующих ребро, анализируется для определения угла между ними. Это делается путем сравнения смежного угла, образованного между нормалями граней. Хотя оговоримся, это может оказаться несколько трудным для визуализации. Вместо этого угол можно определить с помощью визуальной проекции одной стороны грани и фиксации смежного угла, образованного с другой гранью. Оба метода демонстрируются на рисунке 12.11.

На любую пару граней, смежный угол между которыми меньше значения углового порога, оказывает воздействие функция, использующая эту пару. Чем острее угол, тем выше должен быть угловой порог, чтобы его квалифицировать; меньшие угловые пороги работают на меньших углах. Грани, не попадающие в пределы диапазона, функция просто игнорирует.

Анимация трансформаций подобъектов

Несмотря на все свои возможности, ни один из модификаторов Edit не создает дорожки анимации в Track View. При работе с этими модификаторами либо принимаются явные решения по моделированию, либо определятся выборки подобъектов, которые передаются вверх по стеку для воздействия на них других модификаторов и для возможной анимации. Внутри модификаторов Edit анимация не выполняется - это один из нескольких случаев, когда кнопка Animated недоступна.

ПРИМЕЧАНИЕ

Модификаторы Linked XForm и XForm обеспечивают возможность выполнения анимации трансформацией на выборках подобъектов, которые им передаются.

Процедура выполнения анимации с вершинами, ребрами, элементами, лоскутами и сплайнами состоит в том, чтобы создать выборку и применить к ней последующий модификатор для манипуляции выборкой. Часто возникает желание выполнить анимацию с тем, что происходит в самом модификаторе Edit. Поскольку этим практически всегда является трансформация, для выполнения анимации с выборкой со стандартной трансформацией обычно применяется модификатор XForm. Если выборка, созданная внутри модификатора Edit, не квалифицирована как геометрическая, ее нельзя передать вверх по стеку и с ней нельзя выполнить анимацию. Общими примерами этого являются ручки управления структурой и вершиной, а также кривые области вершин. С ними нельзя выполнить анимацию непосредственно и они должны быть аппроксимированы с использованием другого метода.

Модификаторы, отличающиеся от XForm, например, Bend или MeshSmooth, будут действовать так, как они действуют на целый объект, за исключением ограничения своего эффекта на то, что было только что выбрано (как показано ранее в этой главе). Анимация с параметрами модификаторов будет выполнять анимацию с дискретной активной выборкой. Если выборка изменяется, то же самое происходит с результатом анимации модификатора. Хотя с выборкой модификатора Edit анимацию выполнить нельзя, можно использовать модификатор Volume Select и выполнять анимацию с тем, что определяет выборку по ее размеру и размещению.

Полезные "горячие" клавиши

При моделировании на уровне подобъекта внутри любого модификатора Edit вы обнаружите, что для выполнения некоторых наиболее употребимых функций самым эффективным является использование знакомых "горячих" клавиш:

Общие термины и понятия для каркасов

Сложность моделей, которые можно создавать в 3D Studio MAX, потрясает и может далее несколько обескуражить. Однако если пристально посмотреть на даже самые сложные модели, можно заметить, что они построены из простых дискретных частей, которые связаны вместе. В действительности 3D Studio MAX использует только несколько основных геометрических типов для определения множества создаваемых миров (см. рис. 12.12). При создании выборок EditMesh, EditableMesh и Volume Select используют одну и ту же геометрическую терминологию.

Редактирование каркасов основано на возможностях, содержащихся внутри модификатора EditMesh. За несколькими исключениями те же возможности имеются в определении объекта EditableMesh. Выбор того, что и когда следует использовать, обсуждается ниже.

В общем смысле каркас относится к каркасному объекту или к совокупности его граней. Термин "каркас" используется при обобщенной ссылке на геометрию и не является конкретным типом сущности. Каркасы состоят из треугольных граней, которые, в свою очередь, определяют плоские, искривленные или изогнутые поверхности. (Каркас является эквивалентом PFace или многогранного каркаса в AutoCad.)

Вершины определяют точки в трехмерном пространстве и являются самыми основными категориями. Вершины определяют не геометрию, но расположение точек в пространстве. У них нет ни собственной поверхности, ни собственных свойств. Вершины служат только для построения на них граней. Вершина, не соединенная с другими вершинами для образования каркаса, называется изолированной вершиной. 3DS МАХ сохраняет координаты отображения вместе с расположением вершин, поэтому при перемещении вершин связанное с ними отображение также перемещается вместе с ними.

Грани являются треугольными поверхностями, образованными за счет соединения трех вершин. Поскольку каждая грань имеет только три точки, она задает геометрическую плоскость, которая по определению является плоской. Каждая грань определяет нормаль-направление, перпендикулярное поверхности грани и указывающее от видимой стороны грани. Грани являются как бы "оболочкой" модели, придают ей форму и разрешают иметь материалы и отражать свет. При сборке граней последние определяют поверхности и идентифицируемые формы. (Грань эквивалентна 3DFace в AutoCAD, которая имеет всего три стороны. Обычная четырехсторонняя 3DFace эквивалентна двум граням в 3D Studio.)

Ребра являются линиями, соединяющими две вершины и образующими границу грани. Следовательно каждая грань имеет три ребра. О прилегающих гранях, которые совместно используют две вершины, также говорят, что они совместно используют ребро. Ребра непосредственно не создаются, а представляют собой результат создания граней. Ребра используются для манипуляции гранями или служат основой для создания новых граней. Грань всегда обладает тремя ребрами, и эти ребра могут быть видимыми или невидимыми. Видимость ребер влияет на скорость повторного рисования, четкость и границы выборок многоугольников. Видимые ребра в основном используются для четкости и влияют только на визуализацию каркаса при заданном материале проволочного каркаса.

Многоугольники являются копланарными наборами объединенных граней, которые образуют фасеты, стороны и концы каркасов. 3DS МАХ использует термин многоугольник для определения копланарных наборов граней внутри каркаса для целей выборки граней. Определение многоугольника останавливается на видимых ребрах или на планарном пороге. Многоугольники в 3DS МАХ представляют собой только инструменты для выборки граней, они не являются сущностями со специальными возможностями манипуляции. При выборе и трансформации многоугольников фактически выбираются и трансформируются выборки граней.

Элементы являются термином 3D Studio MAX для дискретного каркаса. Когда прилегающие грани построены на одинаковых вершинах, говорят, что они объединены вместе. О вершинах, использующих несколько граней, говорят, что это совместно используемые или объединенные вершины. Элемент распространяется до тех пор, пока каркас имеет объединенные грани. Часто элементы внутри одного и того же объекта кажутся непрерывными, но на самом деле они используют дублирующий набор вершин вдоль общих ребер. Такие вершины называются совпадающими вершинами, которые используются, когда в каркасе необходим отчетливый разрыв, но каркас по-прежнему должен выглядеть непрерывным. Элемент может быть очень большим или настолько маленьким, как одиночная изолированная грань. Один объект может содержать любое количество элементов. Несмотря на то, что элементы являются отдельными каркасами, с ними нельзя выполнить анимацию без модификатора.

Каркасные объекты содержат один или более элементов и их можно считать организацией элементов. В отличие от элемента объект не должен быть непрерывным каркасом. Объект обычно состоит из далеко отстоящих элементов и может содержать изолированные вершины (которые, в свою очередь, являются отдельными элементами). Объекты имеют имена и цвет и только они имеют трансформации, точки вращения, стеки истории данных и дорожки анимации.

Следовательно, внутри 3D Studio MAX существует геометрическая иерархия. Ниже эта иерархия приведена в порядке от младшего к старшему:

  1. Вершина (может быть изолированной)
  2. Грань (построена на трех вершинах)
  3. Ребро (результат создания граней и соединяет две вершины)
  4. Многоугольник (содержит копланарные объединенные грани)
  5. Элемент (содержит непрерывно объединенные грани)
  6. Объект (содержит элементы с непрерывными гранями и, возможно, изолированные вершины)

Объект EditableMesh

Объект EditableMesh был введен в Выпуске 1.0 в виде неполностью реализованной и скрытой характеристики, которая необходима для разрешения входа в файл 3dsmax.ini. В Выпуске 1.1 3D Studio МАХ появилась завершенная версия столь необходимого класса объектов в виде стандартной характеристики (см. рис. 12.13).

Из-за своей возможности редактирования и определения выборки EditableMesh попадает в категорию модификаторов выборки. Однако технически EditableMesh не является модификатором - он фактически представляет собой объектный класс для всех каркасных объектов. Интерфейс для EditableMesh выглядит как первый вход стека.

Любой объект, имеющий в качестве параметров создания необработанный каркас (мастер-объект), в Выпуске 1.1 является объектом EditableMesh. Это означает, что при импорте файла 3DS каждый объект импортируется как объект EditableMesh и можно сразу приступать к редактированию в режиме Sub-Object без применения модификатора (аналогично методу редактирования в 3DS для DOS).

Объекты, создаваемые в 3DS МАХ, можно преобразовывать в объекты EditableMesh за счет разрушения их стеков. Объекты без истории редактирования разрушить нельзя. Если объект является примитивом нового типа, loft-объектом или булевым объектом, для разрушения стека до EditableMesh необходимо добавить модификатор (т.е. любой модификатор, кроме EditPatch). Для лоскутного объекта необходимо добавить модификатор поверхности (Normal, Smooth, Material, UVW или EditMesh), чтобы стек изменил результат на каркас. Иначе объект разрушается до лоскутного.

ПРИМЕЧАНИЕ

Работа с EditableMesh подобна работе с программами без концепции истории редактирования (например, 3DS для DOS).

Использование EditableMesh по сравнению с использованием EditMesh

Так что же такое EditableMesh и зачем он здесь определяется? Во многих случаях моделирование выполняется в явном виде. Работа над моделью осуществляется на корневом уровне путем перетаскивания вершин, построения граней и разделения ребер. Если это все, что требуется, не требуется передавать выборки по стеку другим модификаторам или сохранять операции как индивидуальные и восстанавливаемые, можно просто использовать основную функциональность объекта EditableMesh.

В некоторой степени EditableMesh является шагом назад в компьютерном моделировании, поскольку теряется возможность принятия противоположных решений. При использовании EditableMesh на категориях внутри объекта выполняются явные деформации. В отличие от EditMesh история производимых действий в EditableMesh не записывается, поскольку действия являются явными (хотя опция аннулирования по-прежнему доступна). EditMesh записывает ваши действия и поэтому может распространять изменения от низа стека. Поскольку EditableMesh является мастер-объектом, ничего ниже него в стеке быть не может. Все, что делается с EditableMesh, можно считать постоянным, поскольку буфер Undo имеет конечный размер и не сохраняется между сеансами. Очевидно, что каждый метод имеет свои преимущества и недостатки. В приведенной ниже таблице отмечены наиболее важные аспекты каждого метода:
Модификатор EditMesh Объект EditableMesh
Полная функциональность редактирования каркаса
Возможность использования для выборок локальных центров координат
Может присоединять каждый раз по одному объекту
Полное аннулирование до текущего предела
Каждая выполненная операция запоминается модификатором и сохраняется в файле
Размер файла растет по мере редактирования и добавления модификаторов Edit
Отсоединенная и удаленная геометрия определяется внутри модификатора и сохраняется в файле
Удаление модификатора удаляет все изменения, даже удаление геометрии
Эффект модификатора можно выключить
Активную выборку можно определить в любом месте стека Полная функциональность редактирования каркаса Возможность использования в качестве центра выборок только центра системы координат Может присоединять одновременно множество объектов Полное аннулирование до текущего предела В файле сохраняется только результирующий каркас в конце сеанса На размер файла оказывает влияние только размер результирующего каркаса Отсоединенная и удаленная геометрия отбрасывается после достижения предела аннулирования Определения объектов нельзя удалить без удаления самого объекта Определения объектов нельзя выключить Активную выборку можно определить только в начале стека Модификатор EditMesh
Для каждого EditMesh в ОЗУ выполняется копия объекта вместе с обработкой всех шагов
Для случая больших каркасов отсоединение граней и вершин может оказаться очень медленным
Введение модификатора для больших каркасов требует некоторого времени Операции с большими каркасами могут показаться медленными
Предназначен для моделирования с анимацией
"Горячие" клавиши не определены В ОЗУ сохраняется только результат, являющийся мастер-объектом Даже для больших каркасов отсоединение выполняется достаточно быстро Вход в режим Sub-Object выполняется быстро Операции выполняются быстро Предназначен для статического моделирования Имеет клавиатурные эквиваленты, если они активизированы в файле Sdsmax.ini

ПРИМЕЧАНИЕ

Поскольку "горячие" клавиши для EditableMesh зафиксированы и могут вступать в конфликт с выборами, сделанными для самого 3DS МАХ, их разрешение выполняется через опцию файла 3dsmax.ini [EditableMesh] KeyAccelsEnabled=1 Сами "горячие" клавиши детализированы в файле readme, wri для 3D Studio MAX R1.1.

Графические компоненты каркаса

Помимо своих графических классификаций объекты стремятся иметь собственные графические характеристики, на которые часто ссылаются. Эта книга и документация на 3D Studio MAX ссылаются на одинаковую терминологию, что отображается на рисунке 12.14 и в последующем списке.

Определения каркасной поверхности

Внутри EditMesh и EditableMesh имеется возможность влиять на то, как будет выглядеть поверхность модели. Это выполняется путем присвоения сглаживающих групп, ориентации нормали грани и присвоения ID материала. Все это находится внутри свитка EditSurface уровня Face, показанного на рисунке 12.15.

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