3dsMax. Урок № 15. Булева операция ProBoolean

3dsMax. Урок № 15. Булева операция ProBoolean

Булевы операции

До определенного времени в программе 3ds Max имелась только одна команда для выполнения булевых операций — это команда Boolean. Она в ней сохранилась и сейчас. Однако в последних версиях программы появились две более совершенные команды: ProBoolean и ProCutter. Первая из них целиком перекрывает возможности команды Boolean и добавляет к ней намного больше функциональности, поэтому на команде Boolean мы останавливаться не будем.

Для начала уточним сущность команды ProBoolean (Булева операция). Откройте файл Duck.max из архива Duck.rar и рядом с имеющимся там объектом постройте параллелепипед Box001. Каждому объекту в редакторе материалов назначьте свой цвет. Вдвиньте объект Duck наполовину в параллелепипед. Выделите объект Box001, перейдите на вкладку Create  и из списка типов объектов выберите Compound Objects (Составные объекты). Активизируйте команду ProBoolean.

В свитке Pick Boolean (Указать операнд) отметьте флажком вариант Move, и тогда после выполнения булевой операции вспомогательный параллелепипед исчезнет с экрана (во всех остальных случаях он по-прежнему останется на экране). Далее в свитке Parameters установите выполняемую булеву операцию (выберите вариант Subtraction), в области Apply Material (Применить материал) отметьте вариант Apply Operand Material (Применить материал операнда), щелкните на кнопке Start Picking (Начать выбор) и укажите на объект Duck. Результат выполнения булевой операции Subtraction приведен на рис. 1.

Рис. 1. Результат операции Subtraction: слева — исходные операнды; справа — результат вычитания

Обратите внимание, что в данном случае выдавленная часть поверхности приобрела цвет операнда Duck (см. файл Duck1.max в архиве Duck1.rar). Если в области Apply Material отметить вариант Retain Original Material (Cохранить исходный материал), то булев объект приобретет цвет первого операнда.

Команда ProBoolean

Команда ProBoolean поддерживает выполнение следующих булевых операций: Union (Объединение), Intersection (Пересечение), Subtraction (Вычитание), Merge (Слияние), Attach (Присоединение), Insert (Вставка), Imprint (Оттиск) и Cookie. При этом в одной команде ProBoolean могут выполняться разные булевы операции. Кроме того, ProBoolean может разбивать результат выполнения операции на четырехугольные грани, которые хорошо сглаживаются применением операций Meshsmooth и Turbosmooth.

  • Операция Union (рис. 2, а) объединяет обе модели в единую модель, а операция Intersection (рис. 2, б) сохраняет в новой модели только общую часть операндов.
Рис. 2. Результат выполнения операций Union (а) и Intersection (б)
  • Команда Merge объединяет сетки двух моделей без удаления исходных полигонов (многоугольников), создавая новые ребра там, где объекты пересекаются (рис. 3).
Рис. 3. Команда Merge после применения модификатора Editable Mesh: выделены созданные ребра
  • Операция Attach объединяет два или несколько объектов в один объект без изменения их топологии.
  • Операция Insert сначала вычитает границу первого операнда из второго, а затем замещает вырезанную часть первым операндом.
  • Операции Imprint и Cookie представляют собой варианты выполнения некоторых предыдущих операций:
  • Imprint вставляет ребра, возникающие при пересечении операндов, между операндом и исходной сеткой без удаления или добавления новых граней, создавая отпечаток операнда на исходной сетке (рис. 4, а).
  • Cookie выполняет специфическую булеву операцию и не добавляет грани из операндов в исходную сетку. Но эта операция может быть полезна, чтобы вырезать отверстие в сетке или получить часть сетки внутри другого объекта (рис. 4, б и в).
Рис. 4. Варианты булевых операций: а — Intersection+Imprint; б — Union+Cookie; в — Intersection+Cookie

Создание модели кружки с использованием булевых операций

Создайте сцену из четырех объектов: капсулы Capsule001 (Capsule), конуса Cone001 (Cone), бака OilTank001 (OilTank) и тора Torus001 (Torus) — и расположите их, как показано на рис. 5 (см. файл ProBoolean.max из архива ProBoolean.rar), — всем объектам программа случайным образом назначила определенный цвет. На рисунке показаны параметры конуса.

Рис. 5. Исходные операнды

Сперва выполним операцию Union с объектами Capsule001, Cone001 и Torus001. Для этого выделите базовый объект — пусть им будет капсула, и на командной панели в категории Create  | Geometry  раскройте список объектов типа Compound Objects. Активизируйте команду ProBoolean. В свитке Parameters выберите операцию Union. Кроме того, в свитке Pick Boolean установите один из вариантов выполнения булевой операции: Reference, Move, Copy или Instance. Остановимся на варианте Move (в этом случае операнд становится частью булевой операции и более недоступен как отдельный объект). В том же свитке нажмите кнопку Start Picking и укажите на конус — конус присоединится к капсуле (рис. 6, а). Команда Start Picking останется активной. Поэтому никаких дополнительных действий выполнять не нужно и можно просто указать на тор (рис. 6, б).

Рис. 6. Результат выполнения операции ProBoolean: Capsule+Cone (а); + Torus (б); – OilTank (в)

Теперь установите операцию Subtraction и укажите на бак — в результате получится единый объект, показанный на рис. 2.70, в (см. файл ProBoolean1.max из архива ProBoolean1.rar). Щелкните правой кнопкой мыши в любой свободной части видового окна, чтобы закончить выполнение операции ProBoolean.

Предварительно никакой материал операндам назначен не был. Поэтому результат выполнения операции ProBoolean будет иметь тот цвет, который был первоначально назначен программой базовому объекту — капсуле.

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

Вся история применения операндов и операций, использованных при создании булева объекта, приводится на вкладке Modify  в иерархическом списке в нижней части свитка Parameters (рис. 7). Эту историю, а также другие инструменты из области Sub-object Operations (Подобъекты, участвующие в операции), можно использовать, чтобы изменить результат выполнения операции ProBoolean.

Рис. 7. История создания булева объекта

В указанном списке выделите название OilTank001 и задайте операцию Union. Затем в области Sub-object Operations щелкните на кнопкеChange Operation (Заменить операцию) — результат операции ProBoolean изменится. После этого в списке операндов выделите название конуса, задайте операцию Sudtraction и снова щелкните на кнопке Change Operation. Мы получим новую модель, показанную на рис. 8, а (см. файл ProBoolean2.max из архива ProBoolean2.rar), и ей будет соответствовать своя история (рис. 8, б).

Рис. 8. Применение истории построения булева объекта

Можно также менять порядок выполнения операций, который повлияет на конечный результат, — в истории построения булева объекта выделите название конуса и в поле напротив Reorder Ops (Переопределить порядок) задайте ему значение 3. Это будет означать, что конус  станет вычитаться последним. Щелкните кнопкой Reorder Ops — название конуса переместится в нижнюю часть списка, и результат операции ProBoolean снова изменится (рис. 9). Этому состоянию соответствует файл ProBoolean3.max из архива ProBoolean3.rar.

Рис. 9. Конус вычитается последним

Редактирование параметров операндов

Откройте файл ProBoolean1.max и выделите полученный булев объект. Обратите внимание, что верхний край кружки имеет зазубрины (рис. 10), и их надо удалить.

Рис. 10. Зазубрины на краю кружки

Раскройте стек модификаторов. В нем будет только один объект ProBoolean (рис. 11, а). Раскройте его, щелкнув на значке , — появится указание на операнды Operands (рис. 11, б).

Рис. 11. Стек модификаторов

Выделите это название. Затем в свитке Parameters укажите название операнда (можно одновременно указывать на несколько операндов), параметры которого предполагается корректировать, — в нашем примере им будет OilTank001 (рис. 12, а). В результате название типа этого объекта появится в стеке модификаторов (рис. 12, б).

Рис. 12. Выделение названия операнда для корректировки его параметров

Если теперь щелкнуть на этом названии, то на вкладке Modify появится свиток с его параметрами, дающий возможность прямого доступа к их редактированию (рис. 13).

Рис. 13. Получен доступ к редактированию параметров объекта типа OilTank

Задайте значение параметра Sides равным 36. Аналогичным образом установите такое же значение параметра Sides для капсулы. Теперь в стеке модификаторов щелкните на ProBoolean и получите объект с ровными краями.

При редактировании булева объекта его операнды можно перемещать, поворачивать и масштабировать. Переместим основание кружки (Cone001) немного вверх, чтобы сделать его меньшей высоты. Для этого в стеке модификаторов выделите строку Operands (рис. 14, а), а в истории построения кружки — строку 1:Union-Cone001 (рис. 14, б).  Затем в области Display пометьте вариант отображения операнда Operands (рис. 14, в).

Рис. 14. Подготовка к трансформации операнда

Теперь активизируйте команду Select and Move  и сместите конус вверх, но не выше основания капсулы, иначе она будет выступать ниже основания кружки. В области Display снова установите режим отображения Result (Результат). В стеке модификаторов щелкните на строке ProBoolean, чтобы завершить построения (см. файл ProBoolean4.max из архива ProBoolean4.rar).

Команда Extract Selected

Команда Extract Selected (Извлечь выделенное) применяется  к операциям, которые выделены в иерархическом списке истории создания булева объекта. Существуют три режима извлечения: Remove, Copy и Inst:

  • в режиме Remove выделенный операнд (кроме базового) удаляется из булева объекта и становится самостоятельным объектом (рис. 15);
  • в режиме Copy выделенный операнд извлекается из булева объекта, но по-прежнему остается его частью;
  • в режиме Inst выделенный операнд также извлекается из булева объекта. Если после этой операции выполнить какие-либо изменения в выделенном объекте, то они отразятся на булевом объекте.
Рис. 15. Тор извлечен из булева объекта

Сглаживание вдоль линий сопряжения операндов

В местах сопряжения поверхностей операндов получились резкие переходы. Чтобы их сгладить, примените к модели модификатор Edit Poly, раскройте список подобъектов этого модификатора с помощью значка ► и перейдите на уровень выделения ребер (Edge). Скорее всего, все линии сопряжения поверхностей операндов выделятся автоматически и отобразятся в сцене красной линией. Если этого не произошло, то в свитке Selection нажмите кнопку Get Stack Selection (Выбрать выделение из стека) — все линии сопряжения операндов будут выделены. Затем в свитке Edit Edges справа от команды Chamfer (Фаска) нажмите кнопку Settings  и в открывшемся Caddy-интерфейсе установите значения соответствующих параметров (рис. 16).

Рис. 16. Параметры сглаживания сопряжения операндов

Итак, сгладим нижние ребра в основании кружки. Для этого перейдите в режим выделения Polygon и выделите основание кружки. Затем нажмите клавишу <Ctrl> и в свитке Selection щелкните по значку Edge  —  выделятся все ребра основания. После этого снова примените команду Chamfer с соответствующими параметрами, чтобы скруглить край основания. Построение модели кружки закончено (рис. 17). Этому  состоянию соответствует файл ProBoolean5.max из архива ProBoolean5.rar.

Рис. 17. Модель кружки

Операция Insert

Проиллюстрируем эту специфическую булеву операцию на примере. Откройте файл Insert.max из архива Insert.rar. В рассматриваемой сцене создана модель ведерка с водой. Модель воды представляет собой простой цилиндр, на который наложен полупрозрачный материал. На кружку, опущенную в воду, наложена текстурная карта. Кружка наклонена таким образом, чтобы в нее попала вода (рис. 18).

Рис. 18. Кружка опущена в воду

Выделите объект Water, активизируйте команду ProBoolean и в свитке Parameters выберите команду Insert. В области Apply Material выберите опцию Apply Operand Material, нажмите кнопку Start Picking и укажите на кружку. Щелкните правой кнопкой мыши в любом свободном месте, чтобы отменить действие команды ProBoolean. В результате создается впечатление, что вода заполнила кружку (рис. 19).

Рис. 19. Результат операции Insert: а — булев объект в режиме Default Shading; б — он же в режиме Wireframe

Отмените предыдущие действия и поверните кружку так, чтобы вода не могла в нее попасть. Снова выполните команду Insert. Обратите внимание, что теперь воды в кружке нет (рис. 20). Этому состоянию соответствует файл Insert1.max из архива Insert1.rar.

Рис. 20. Кружка повернута

Создайте цилиндр небольшого диаметра и с помощью команды ProBoolean и варианта построения булевого объекта Subtraction сделайте отверстие сбоку кружки. Поместите кружку так, чтобы отверстие находилось ниже уровня воды, а края кружки находились над водой. Снова выполните команду Insert. Теперь вода снова появилась в кружке, как будто бы она попала туда через отверстие в ней (см. файл Insert2.max из архива Insert2.rar).

Команда Insert не моделирует поведение жидкости, и все размеры первого операнда сохраняются без изменений.

Дополнительные опции ProBoolean

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

Откройте файл ProBoolean4.max из архива ProBoolean4.rar, выделите кружку и перейдите на вкладку Modify . Нажмите клавишу <7>, чтобы в видовом окне отобразить число полигонов и вершин объекта. Раскройте свиток Advanced Options (Дополнительные опции) (рис. 21).

Рис. 21. Дополнительные опции команды ProBoolean

В поле Decimation введите число 30 и нажмите клавишу <Enter>. Обратите внимание, что число полигонов и вершин сократилось. Введите в это поле число 60. Число полигонов снова сократится, и сетка станет треугольной (рис. 22).

Рис. 22. Число полигонов и вершин сократилось

В области Quadrilateral Tessellation (Квадратичное разбиение) можно включить опцию Make Quadrilaterals (Создать квадратичное разбиение). Тогда полигонов вновь станет значительно больше, и они превратятся в квадратные. Благодаря этому сетка модели станет более пригодной для сглаживания поверхности и для преобразования в формат Edit Poly. Параметр Quad Size (Размер квадратичных полигонов) определяет размер квадратичных полигонов в процентах от длины булева объекта.

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

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

3dsMax. Урок № 15. Булева операция ProBoolean: 1 комментарий

  1. Здравствуйте,
    спасибо за материал. Вы не знайте, что означает иконка справа от ProBoolean и Operands в стеке, два прямоугольника?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *