Почему не работает булеан

Не используйте операции Boolean (ProBoolean)

‘), array(«string» => ‘‘), ); if (!isset($_COOKIE[‘rek’])) < print($banners[$GLOBALS["banner_num"]]["string"]); >elseif ($_COOKIE[‘rek’] == «rek1») < print($banners[0]["string"]); >elseif ($_COOKIE[‘rek’] == «rek2») < print($banners[1]["string"]); >?>

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

Отвечу на все из них. сразу.

Для начала примите к сведению, что в развитых странах Boolean вообще запрещен. Поэтому, чтобы самим не мучиться, других не мучить и не тратить время на дальнейшее чтение этой статьи, с целью выяснения причин «почему же оно не вырезается?» — прекратите использовать Boolean!

Вы спросите «Почему запрещен?». Отвечу. После этих операций меш (сетка) превращается в уродство. Так что время, которое Вы потратите на ее вычищение, эквивалентно (но часто больше) времени потраченному на НЕиспользование Boolean.

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

Логика нижеследующих советов применима к любому 3d-редактору, НО техническая сторона рассмотрена для 3ds Max (и кое где для Maya).

Значит, во-первых: продумайте ВСЕ операции Boolean, которые Вам нужны и сделайте их за одно вычитание.

Что это значит? Это значит, что если Вам нужно сделать 13 дырочек, то не стоит их делать одна за другой. Нужно эти 13 объектов (которыми Вы собрались вырезать 13 дырочек) объединить в один (Attach). А потом уже проделать операцию “Ы”.

Во-вторых: если у Вас возникли проблемы с Boolean, то возможно их избежать, используя ProBoolean (и наоборот).

В-третьих: эта операция очень чувствительна к сетке. Желательно, чтобы та область, которую Вы будете вырезать, была четко окружена ребрами:

Подготовка меша для операции Boolean

4. (надоело писать в-четвертых) Оператор А и оператор B должны быть редактируемым мешем Editable Poly/Mesh без кучи модификаторов в стеке (и прибитой историей если это Maya).

5. Если Вы уже успели наделать кучу (большую или маленькую) вычитаний Boolean, а после этого решили сделать еще одну операцию, но она никак не получается, то в 99% случаев нужно почистить меш.

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

Никогда не сдавайтесь!

P.S. Генри Форду два года твердили все его инженеры, что V-образный двигатель сделать невозможно. А он, несмотря на бесконечные неудачные попытки, достиг своей цели.

Похожие статьи:

  • Видео урок: как работать с DynaMesh и кистями Mesh Insert в… Обновление 3: записал продолжение — кисти на основе кривых в ZBrush 4R2. Обновление 2: в целях эксперимента выложил этот видео…
  • Наука создания фотореалистичного 3D. Читать желательно ВСЕМ (неважно, профессионал вы или новичок – полезное для себя найдут многие), кто хоть как-то связан с компьютерной…
  • @3. ZBrush подсказки: значение значков на сабтулсах Все используют SubTools, но не все знают, как на всю мощь использовать вот эти значки (перекрывающиеся круги, кисточка, глаз) рядом…
  • Обзор интернета на 3D вкусности. Выпуск 6 Новые вкусности по 3D со всего интернета. Вот предыдущий выпуск №5, а другие выпуски читайте там — Обзор 3D полезностей.…
  • #17. 3ds Max подсказки: как оригинально выделять… В предыдущей статье я рассказал о секретных методах выделения объектов, а в этой расскажу об оригинальных и зачастую редко используемых…
  • Результат теста: вы новичок в 3ds Max. Вывод: вы только приобщаетесь к миру создания компьютерной графики с помощью 3ds Max. Это хорошо, что вы прошли этот тест.…
  • Что нового в ZBrush 4R8 Скоро выйдет новая версия пакета для скульптинга, который стал промышленным стандартом в CG индустрии — ZBrush 4R8. Но уже известно,…

Вам понравилась статья ? Хотите отблагодарить автора? Расскажите о ней друзьям.
Или подпишитесь на обновление блога по E-Mail.

Источник

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

Существует мнение, что модификатор « 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 вершины созданы, как бог на душу положил.

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

Источник

Читайте также:  Как настроить костыли подмышечные по росту
Оцените статью