Коротко
- BooleanUnion обрезает общие области выбранных объектов и создаёт единую polysurface из оставшихся частей.
- В BooleanDifference сначала выбирают объекты, из которых нужно вычесть геометрию, затем — режущие объекты.
- Противоположный ожидаемому результат может быть связан с нормалями; их направление можно проверить и изменить с помощью команд Dir и Flip.
- При неудачных операциях Boolean Rhino может разместить текстовые точки, указывающие на проблемные области.
Что вы узнаете из этого руководства?
Команды Boolean в Rhino ускоряют моделирование, определяя, какие части пересекающейся геометрии нужно сохранить. Однако у разных операций разные задачи: для объединения объектов в единую polysurface, вычитания одной части из другой, сохранения только общей области или разделения геометрии на отдельные части используются разные команды.
В этом руководстве мы рассмотрим принцип работы команд BooleanUnion, BooleanDifference, BooleanIntersection и BooleanSplit, описанных в документации Rhino 8. Также мы разберём команду Boolean2Objects, которая позволяет переключаться между возможными результатами для двух объектов, варианты Planar Boolean для плоских поверхностей и проблемы с геометрией, которые стоит проверить, если операция завершается неудачно.
Требования
ПО и версия: Документация по рассматриваемым командам относится к Rhino 8. В ней не указаны конкретный номер обновления или требования к дополнительному ПО.
Геометрия: Команды Boolean можно применять к поверхностям и polysurface. Для mesh-объектов используются похожие действия; результатом в любом случае будет mesh.
Учётная запись или лицензия: В документации не указаны отдельные требования к учётной записи или лицензии для этих операций.
Перед началом решите, какую часть нужно сохранить. Особенно важно соблюдать порядок выбора в BooleanDifference: сначала выбираются объекты, из которых нужно вычесть геометрию, а затем — режущие объекты. Если перепутать порядок, результат может оказаться противоположным ожидаемому.
Boolean-операции: пошаговое руководство
1. Объединение объектов: BooleanUnion
Команда BooleanUnion убирает общие области нескольких объектов и создаёт единую polysurface из оставшихся частей.
Выберите поверхности или polysurface, которые нужно объединить.
Запустите команду и нажмите Enter.
В результате объекты объединятся в одну polysurface.
Параметр DeleteInput определяет, будут ли удалены исходные объекты. Вариант DeleteInput=No поддерживает запись History. Если после объединения нужно свести смежные копланарные поверхности в одну, используйте параметр MergeCoplanarFaces.
2. Вычитание одного объекта из другого: BooleanDifference
BooleanDifference используется, например, для создания полости или выемки в объёмном объекте. Операция состоит из двух этапов выбора:
Выберите поверхности или polysurface, из которых нужно выполнить вычитание, и нажмите Enter.
Выберите поверхности или polysurface, которые будут использоваться как режущие объекты, и нажмите Enter.
Параметр DeleteInput определяет, будет ли удалена исходная геометрия. Если выбрано DeleteInput=Yes, параметр DeleteCutters управляет удалением режущего объекта. В документации также отмечено, что в рамках подхода Rhino к моделированию поверхностей нельзя создать полое тело с толщиной стенки, похожее на теннисный мяч, просто поместив сферу внутрь другой сферы. Поэтому не следует рассчитывать, что нужный результат получится только за счёт размещения режущего объекта внутри модели.
3. Сохранение общей части: BooleanIntersection
BooleanIntersection обрезает области объектов, не являющиеся общими, и оставляет пересекающуюся часть.
Выберите первую группу объектов или пересекающиеся объекты и нажмите Enter.
Если на первом этапе вы выбрали только одну группу, выберите вторую группу объектов и нажмите Enter.
После выполнения операции общая область останется в виде результирующей геометрии.
Параметр DeleteInput определяет, нужно ли сохранять исходную геометрию. Поскольку порядок выбора задаёт, какие группы объектов будут участвовать в вычислении пересечения, перед операцией полезно проверить группы.
4. Разделение на отдельные объекты: BooleanSplit
BooleanSplit разделяет общие области и создаёт отдельные polysurface из общих и не общих частей.
Выберите первую группу объектов, которые нужно разделить, и нажмите Enter.
Выберите режущие объекты и снова нажмите Enter.
Режущие объекты могут совпадать с объектами, которые нужно разделить.
Параметр DeleteInput управляет удалением или сохранением исходной геометрии. Команда полезна, когда после Boolean-операции нужно редактировать получившиеся части отдельно.
5. Выбор результата для двух объектов: Boolean2Objects
Команда Boolean2Objects позволяет выбирать между возможными результатами Boolean-операции для двух объектов. После выбора объектов щёлкайте во viewport, чтобы переключаться между результатами. В документации перечислены объединение, вычитание B из A, вычитание A из B, пересечение и обратное пересечение. Перебирайте варианты, пока не появится нужная геометрия. В этой команде также доступен параметр DeleteInput.
Для плоских поверхностей предусмотрены отдельные команды PlanarUnion, PlanarDifference и PlanarIntersection. Они соответственно объединяют наложенные друг на друга плоские поверхности, выполняют вычитание или создают поверхность по результату пересечения. Результат наследует свойства первой выбранной поверхности.
Распространённые ошибки и способы их устранения
Если Boolean-операция даёт неожиданный результат, в первую очередь проверьте нормали поверхностей. При определении сохраняемых областей операции учитывают направление нормалей. У открытого объекта внутренняя и внешняя стороны не всегда очевидны. Проверьте направление нормалей командой Dir; если оно не соответствует ожидаемому, измените его командой Flip и повторите операцию. Когда геометрия полностью замкнута, Rhino может определить внутреннюю и внешнюю стороны; в этом случае направления поверхностей устанавливаются так, чтобы указывать наружу модели.
При неудачном выполнении операции Rhino может разместить текстовые точки, указывающие на область с открытым краем или проблемным пересечением. Найдите эти точки и проверьте раздел Secondary text в их свойствах — это может дать более подробную информацию об ошибке.
Другие возможные причины:
Совпадающие контрольные точки: Если контрольные точки на краю поверхности находятся в одной и той же позиции, это может нарушить работу операции, особенно если точки сингулярности попадают в область пересечения.
Наложение поверхностей: Если два объекта имеют общую область поверхности, это может помешать выполнению BooleanDifference или BooleanIntersection. Для коробок, соприкасающихся по грани, объединение может сработать, а вычитание и пересечение — нет.
Неманифолдные рёбра: Если к одному ребру примыкают более двух поверхностей, это может вызвать проблемы с polysurface или mesh.
Недостаточная подготовка поверхностей: Перед Boolean-операцией рекомендуется попробовать применить к поверхностям команду Join.
Если Boolean по-прежнему не срабатывает, геометрию можно разделить другим способом: при необходимости примените Explode, чтобы разделить polysurface на отдельные поверхности, создайте кривые пересечения с помощью Intersect, затем используйте эти кривые в операциях Trim или Split и снова объедините части командой Join.
Влияние на рабочий процесс архитектуры и визуализации
Команды Boolean — это инструменты моделирования для архитекторов, дизайнеров интерьеров и 3D-художников, которые, например, создают проёмы в объёмных моделях, объединяют поверхности или разделяют пересекающиеся части. Правильный выбор команды может сократить объём ручной доработки результата. Однако результат зависит от того, замкнута ли геометрия, а также от направления нормалей и характера пересечений.
Если в производственных файлах важно сохранить исходную геометрию, проверьте параметры DeleteInput; в некоторых Boolean-командах вариант DeleteInput=No поддерживает запись History. В источнике нет информации о требованиях к аппаратному обеспечению или совместимости с другим ПО, поэтому делать особые предположения по этим вопросам не следует. При работе с mesh учитывайте, что результатом будет mesh, а результаты Planar Boolean наследуют свойства первой выбранной поверхности.
Что делать дальше
Для начала попробуйте каждую команду отдельно на простой замкнутой геометрии и заранее определите, какие части должны сохраниться. Если результат обратный ожидаемому, проверьте нормали; если операция не сработала, изучите текстовые точки и область пересечения. Для проблемных пересечений рассмотрите ручной вариант с командами Intersect, Trim или Split, а затем объедините части с помощью Join.
Источник и лицензия
Это руководство подготовлено на основе документации McNeel по Boolean-командам Rhino 8 и устранению проблем с Boolean-операциями. Источник предоставлен по свободной лицензии; материал переведён на турецкий язык и отредактирован.
Источники
Источников: 2Тексты источников не перепечатываются; короткие цитаты отмечены, остальное — наш пересказ и комментарий.
Инструменты Boolean в Rhino напрямую решают часто возникающую при моделировании архитектурных объёмов и деталей задачу — аккуратно объединить или разделить пересекающуюся геометрию. Для офисов и студентов в Турции главное — не столько запомнить названия команд, сколько понять порядок выбора объектов и подготовку геометрии. Это может сократить количество повторных попыток исправить результат.
Однако не стоит ожидать автоматического результата для любой модели: на операцию влияют открытые поверхности, направление нормалей и проблемные пересечения. Источник не содержит информации о стоимости лицензии и оборудования, поэтому перед покупкой потребуется дополнительная проверка. Также стоит заранее выяснить, подходят ли рабочему процессу результат в формате mesh и параметры сохранения исходной геометрии.
Частые вопросы
Как использовать BooleanDifference в Rhino?
Сначала выберите поверхности или polysurface, из которых нужно выполнить вычитание, и нажмите Enter. Затем выберите режущие объекты, чтобы завершить операцию.
Почему Boolean-операция в Rhino завершается неудачно?
Проблемы могут возникнуть из-за неожиданного направления нормалей, совпадающих контрольных точек, наложения областей поверхностей или неманифолдных рёбер. Текстовые точки, размещённые Rhino, могут помочь найти и изучить проблемную область.
Работают ли Boolean-команды Rhino с mesh-объектами?
Согласно источнику, для mesh-объектов используются похожие действия. Результатом команды будет mesh независимо от типа исходного объекта.



