Почему не работает boolean blender

Blender — проблемы с булевыми операциями

Я работаю в Blender, создаю персонажей для «Тайны мира». У меня «послереволюционный» Blender (версия выше 2.5), если кому-то это важно.
Постоянно натыкаюсь на проблемы с модификатором «Boolean». То просто высвечивается «Cannot execute Boolean operation», то вместо меша получается непонятно что. Что необходимо сделать, чтобы модификатор Boolean работал? Влияет ли на результат, если один из мешей сам образован этим модификатором?

Etyuhibosecyu
> У меня «послереволюционный» Blender (версия выше 2.5)
Было бы странно, если бы это было не так. С версией 14:11, 18 фев. 2017

Несколько замечаний.
1. У меня компьютер 2011 года, оперативная память 1.93GB, и видео загружалось полчаса, пока я просмотрел его. Вы, конечно, могли не знать этого, но теперь знаете, и в следующий раз будьте осторожны, предлагая мне видео. Не думайте, что я обвиняю вас во флуде, просто я пишу на будущее.
2. Это видео объясняет основы, которые я знаю. А мне нужен список причин, по которым этот модификатор может работать некорректно. Например, если нужно из куба вычесть часть торуса, затем из еще одного меша вычесть часть этого, где в этом процессе могут быть ошибки, приводящие к некорректной работе модификатора Boolean?

Нашел в Google вот это.
Может кто-то объяснить, куда именно должны быть направлены нормали — внутрь или наружу, если из выпуклого меша вычитается невыпуклый? И что такое пустые грани, как их распознать и удалить? С учетом того, что всего граней у меня десятки-сотни тысяч.

Читайте также:  Как починить шпонированную дверь

Не использую булевы операции совсем, давно, и никогда. За ненадобностью. И из экономии своего времени.

да, булеан всё равно корячит сетку. учитесь моделить без него.) ещё и если для персонажей — вообще не нужен.О_о

Источник

Заставь булеан работать

Существует мнение, что модификатор « Boolean» плохо работает и что его лучше по-реже использовать, или, еще лучше, совсем отказаться от него. Конечно, булеан не панацея, но в некоторых случаях незаменим.

Некоторые пишут, что булеан « работает через раз», поскольку, действительно бывает, что им выдается такое сообщение:

Если « Boolean выдает ошибку» или « булеан не работает верно» эта статья поможет вам. Если вы не хотите вдаваться в подробности следуйте сразу к этой части, где описываются решения проблем. Статья описывает стандартный модификатор Boolean, но применима и к команде булевской операции ( Mesh → Faces → Intersect ( Boolean)), добавленной в 2.77 так и к аддонам, посторенным на модификаторе.

Как работает Boolean

Как я понимаю, не многие пытаются разобраться, а в чем ошибка, почему blender в одних случаях хорошо и быстро режет сложнейшие модели, в других отказывается сделать булеан-операцию даже с самыми, казалось-бы простыми? Чтобы это понять, нужно иметь хотябы небольшое представление, а как работает этот модификатор. На самом деле булеан Блендера — безотказная вещь, но требующая хороший исходный материал. Гарантирую, если Вы сможете разобраться и исправить модель, Blender справится с булеаном даже в самых сложных случаях ( ну… если хватит оперативки).

Итак, чтобы начать, посетим сайт blender.org, и отыщем, а что-же там написано про булеан:

  • Exactly overlapping faces cause errors.
  • Self-intersecting geometry on either side of the operation ( which also intersects the other side) causes errors.

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

В первой стадии, определяется линия пересечения двух объектов. Вот, например линия пересечения двух кубов:

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

В результате два объекта разделяются на 4 части, от линии пересечения теперь отходят по четыре плоскости и чтобы завершить операцию, в зависимости от типа ( вычитание, пересечение или объединение) Blender удаляет лишние 2 плоскости.

Например, мне нужно вычесть из куба, отмеченного красным, синий. Нужно взять часть меша № 1 и часть синего куба, которая находится как-бы « внутри» красного № 3, а остальное удалить. Но как Blender узнает, какая часть находится « внутри», а какая « снаружи»? По нормалям. Действительно, мешу необязательно быть замкнутым, главное — чистая линия пересечения и верные нормали. Рассмотрим на примере: я взял сюзанну и плейн:

Затем я добавляю булеан к сюзанне и вычитаю плейн:

Хоть плейн и не замкнут, но у него есть нормаль, по которой часть обезьянки находится « внутри», а часть « снаружи». Но почему пропал глаз? Глаз сюзанны сделан отдельным мешем. В этом легко убедиться, попробовав нажать L на любой части сюзанны. Поэтому совершенно не понятно находится глаз внутри или снаружи, ведь плейн незамкнут. Попробуем так-же развернуть нормали плейна:

Теперь область « внутри» поменялась местами с областью « снаружи». Так ошибки в нормалях могут приводить в ошибках с булеаном, проверяйте, в правильную ли сторону они направлены и используйте Ctrl + N

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

Методы борьбы с ошибками boolean

1. Remove Doubles

Самое первое что вы должны сделать — попробовать старое доброе:

  1. W → R Remove doubles
  2. Ctrl + N Recalculate normals

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

Например, вы сделали объемный текст или кривую и пытаетесь вычесть ее:

Чтобы сделать острое ребро, обычно в 3D-графике на его месте делается разрез. С виду меш цельный, но на самом деле он надрезан по границам букв. Это легко увидеть, если поставить дисплейс без текстуры:

Точно так-же работает и модификатор Edge Split, создающий острые углы. Если вы попробуйте вычесть объект с Edge Split, булеан, возможно, не сработает

Решение проблемы: W → R Remove doubles

2. Exactly overlapping faces.

« Exactly overlapping faces cause errors» — написано в документации Blender — что это значит? Рассмотрим на примере. Я вычитаю один объект из Text и из Cube, а затем пытаюсь объединить их:

Почему выводится ошибка? Все меши замкнуты, самопересечений нет. Но попробуйте построить линию пересечения Text и Cube. Сверху, где мы вычитали куб, некоторые полигоны одного объекта совпадают с полигонами другого. В результате там не получится провести линию, поскольку там не линия, а скорее плоскость пересечения. Blender тоже не может построить линию пересечения и пишет сообщение об ошибке.

Решение проблемы: Следите за порядком булеанов ( сделайте сначала объединение, а потом вычитайте) или примените Boolean и чуть сдвиньте один объект. Новый тип булеана B-mesh ( 2.78) может обойти эту проблему. Попробуйте сменить тип операции

3. Примените масштаб

При отрицательном масштабе объект становится вывернутым, что может отразится на операции. Преверьте нет ли у вас отрицательного масштабирования, если есть примените его Ctrl + A → Scale. Затем, нужно будет пересчитать нормали Tab , Ctrl + N

4. 3D-print toolbox.

На сложных моделях иногда трудно найти дыры в объекте, или другие косяки, аддон « 3D-print toolbox» укажет вам на них. Он входит в стандартный набор аддонов, нужно только лишь активировать его в настройках File → User Preferences ( Ctrl + Alt + U ).

Далее в Toolbox 3D-вида ( T ) появится новая вкладка:

Войдите в Edit Mode и нажмите Checks: → Solid. Внизу появится сообщение с количеством « неправильных ребер». Нажмите соответствующую кнопку, и Blender выделит эти ребра, указав на неточности в модели:

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

Вторая кнопка указывает на проблемы с нормалями

Решение проблемы: с помощью 3D-print toolbox исправьте меши так, чтобы Checks: → Solid выдавал нули

5. Самопересечение.

Самопересечение — это когда полигоны объекта пересекают полигоны этого-же объекта. Это бывает, например, когда вы используете Bevel у текста или кривой:

Bevel расширяет область вокруг кривой, поэтому во внутренних углах образуются области самопересечения:

Решение проблемы: нужно вручную склеить вершины ( Alt + M ) или с помощью привязки, таким образом, чтобы область пересечения исчезла:

Часто бывает и другое: объект с самопересечением проходит операцию булеана, но на месте самопересечения образуется дырка. Такой объект застопорится уже на следующем булеане, что вводит в заблуждение ( один булеан прошел, второй — нет, значит блендер-баг)

6. Сложные полигоны.

В особо редких случаях бывает проблема, связанная с N-gon. Она настолько редкая, что мне не удается ее повторить, чтобы сделать скриншот. Так-же я не уверен можно ли ее словить в новых версиях Blender. Суть проблемы в том, что иногда в результате многочисленных булеанов создается N-gon такой сложной формы, что при операции булеана он может буквально самопересечься.

Решение проблемы: разбить N-gon на более мелкие полигоны. Или подразделить большой исходный полигон, который участвует в операции булеана с более мелким или детальным объектом

Подводим итог.

Если булеан вывел ошибку, или выполнил операцию частично или неверно, попробуйте сделать следующее:

  1. W → R Remove doubles, затем Ctrl + N Recalculate normals
  2. Проверьте не накладываются ли фейсы, например, в результате неправильного порядка булеанов.
  3. С помощью 3D-print toolbox проверьте меш ( Checks: → Solid)
  4. Найдите область самопересечения и исправьте ее.
  5. Если ничего не помогло — напишите в комментариях, может, я что-то пропустил? Сделаем эту статью лучше!

Источник

Почему модификатор Boolean работает так из рук вон плохо?

Собственно, кто-нибудь объяснит, почему модификатор Boolean (Логический), в версии Блендера 2.8 (да и в 2.79b также, не поменялось здесь ничего) так плохо соединяет/разнит и пересекает?

То есть, при применении не менее трети ожидаемых вершин в пересечениях рёбер двух мешей — натурально нет от слова совсем! Зато создаются совершенно левые вершины. Или ещё как вариант: вершины проставляются где-то в стороне от пересечений и подтягивают на себя рёбра, искажая первоначальную геометрию. На скрине (где простой меш в виде бруска квадратного сечения объединяется с простым же мешем-цилиндром — и в результате столько багов) всё это отображено:

Где, повторюсь, пересекаемые рёбра что одного меша, что другого — лежат строго на одной высоте по координате Z! Всё выверяется мной многократно, в данном случае перепроверены все координаты всех вершин в концах этих рёбер! Но на пересечениях, указанных красными стрелками — этих вершин модификатором НЕ создано. Зато созданы 3 абсолютно левые вершины, не привязанные вообще ни к чему. От балды. Модификатор на 30% работает от балды. Куда кривая выведет!

И на скрине: 5 вершин созданы правильно, 3 вершины не созданы совсем, 3 вершины созданы, как бог на душу положил.

И такая картина с этим модификатором, изрядно поднадоевшая — ибо безмерно усложняет, а точнее, добавляет ещё немерено работы и затраты времени по выправке этих багов, когда заместо такой, в кавычках, «работы» этого глючного мода делаю его работу за него практически вручную — наблюдается постоянно. А потому и написан этот гневный пост.

Источник

Blender — проблемы с булевыми операциями

Я работаю в Blender, создаю персонажей для «Тайны мира». У меня «послереволюционный» Blender (версия выше 2.5), если кому-то это важно.
Постоянно натыкаюсь на проблемы с модификатором «Boolean». То просто высвечивается «Cannot execute Boolean operation», то вместо меша получается непонятно что. Что необходимо сделать, чтобы модификатор Boolean работал? Влияет ли на результат, если один из мешей сам образован этим модификатором?

Etyuhibosecyu
> У меня «послереволюционный» Blender (версия выше 2.5)
Было бы странно, если бы это было не так. С версией 14:11, 18 фев. 2017

Несколько замечаний.
1. У меня компьютер 2011 года, оперативная память 1.93GB, и видео загружалось полчаса, пока я просмотрел его. Вы, конечно, могли не знать этого, но теперь знаете, и в следующий раз будьте осторожны, предлагая мне видео. Не думайте, что я обвиняю вас во флуде, просто я пишу на будущее.
2. Это видео объясняет основы, которые я знаю. А мне нужен список причин, по которым этот модификатор может работать некорректно. Например, если нужно из куба вычесть часть торуса, затем из еще одного меша вычесть часть этого, где в этом процессе могут быть ошибки, приводящие к некорректной работе модификатора Boolean?

Нашел в Google вот это.
Может кто-то объяснить, куда именно должны быть направлены нормали — внутрь или наружу, если из выпуклого меша вычитается невыпуклый? И что такое пустые грани, как их распознать и удалить? С учетом того, что всего граней у меня десятки-сотни тысяч.

Не использую булевы операции совсем, давно, и никогда. За ненадобностью. И из экономии своего времени.

да, булеан всё равно корячит сетку. учитесь моделить без него.) ещё и если для персонажей — вообще не нужен.О_о

Источник

Модификатор Boolean

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

В Blender доступ к модификаторам осуществляется через редактор свойств (Properties).

Навигационная панель Properties состроит из вкладок в виде иконок. Модификаторы находятся там, где изображен гаечный ключ. При переходе в заголовке будет название выделенного объекта. Именно к нему будет применяться модификатор. Ниже находится раскрывающийся список Add Modifier. В Blender модификаторов много, у каждого из них свои особенности и настройки. В этом уроке будет рассмотрен Boolean.

Отметим, к объекту можно применять несколько модификаторов.

Булевые, или логические, операции (boolean operations) являются предметом математической логики. Однако они нашли широкое применение в компьютерной графике, не только в Blender. Используются три операции Boolean:

  • Пересечение – Intersect
  • Объединение – Union
  • Разность – Difference

Результатом пересечения двух mesh-объектов является область их перекрытия. При объединении происходит соединение объектов в один. В случае вычитания один объект вырезает из другого ту область, которую перекрыл.

Объединение в результате применения модификатора Boolean и в результате Ctrl+J (или добавления одного меша в режиме редактирования другого) – не одно и тоже. Если объекты перекрывались, то в случае простого объединения грани в области пересечения сохраняются. В случае булевого объединения – нет.

Меши слева объединены с помощью Ctrl+J, а справа использовался модификатор Boolean. Включен режим отображения каркаса (Z → Wireframe, или через группу кнопок типов затенения, находящихся справа в заголовке 3D Viewport).

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

Поэтому перед выбором модификатора надо выделить главный mesh-объект. После добавления Boolean в главном регионе редактора Properties появится панель с настройками:

С помощью переключателей Intersect, Union, Difference выбирается операция. В поле Object вставляется имя второго объекта. Сделать это можно либо кликнув на кубик, либо на пипетку, после чего указать нужный объект.

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

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

Практическая работа

Создайте модель полой внутри колбы.

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

Курс с инструкционными картами к части практических работ:
android-приложение, pdf-версия

Источник

Оцените статью