Меню

Блендер ошибка установки значения

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

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

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

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

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

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

Current limitations are:

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

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

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

1.jpg

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

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

2.jpg

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

3.jpg

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

4.jpg

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

5.jpg

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

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

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

1. Remove Doubles

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

  1. WR Remove doubles
  2. Ctrl + N Recalculate normals

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

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

6.jpg

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

354 KB

GIFrecord_2016-05-15_231620.gifGIFrecord_2016-05-15_231620.gif

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

Решение проблемы: WR Remove doubles

2. Exactly overlapping faces.

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

8.jpg

Почему выводится ошибка? Все меши замкнуты, самопересечений нет. Но попробуйте построить линию пересечения 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).

15.jpg

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

14.jpg

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

16.jpg

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

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

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

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

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

12.jpg

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

18.jpg

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

11.jpg

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

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

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

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

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

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

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

Since you are new to Blender, here the «extended directors cut» of vklidus comment:

Klick on that little caret right of the two circles and it will open the viewport overlays dialog.

Check the «face orientation» checkbox.

enter image description here

In the viewport you will see now only blue and red colors.

Blue means good -> the face is facing outwards.
Red means evil -> the face is facing inwards.

Normally red is wrong, but of course, there are case where red is right. e.g. if you move with the camera inside a cube, of course the faces inside the cube will be red then (if the cube does not have a solidify modifier…).

So you can see that the sword has some red faces.

To fix this, select the sword, press TAB and then A to select all vertices and then click on Mesh -> Normals -> recalculate normals.

enter image description here

you will notice, that some red faces will turn to blue.

Repeat this for all red faces.

After that the boolean should work.

by the way, it is always a good idea to change the «viewport display» -> «display as» of the cutter to «bounds» so that you can see what the result of the boolean operation is.

enter image description here

Since you are new to Blender, here the «extended directors cut» of vklidus comment:

Klick on that little caret right of the two circles and it will open the viewport overlays dialog.

Check the «face orientation» checkbox.

enter image description here

In the viewport you will see now only blue and red colors.

Blue means good -> the face is facing outwards.
Red means evil -> the face is facing inwards.

Normally red is wrong, but of course, there are case where red is right. e.g. if you move with the camera inside a cube, of course the faces inside the cube will be red then (if the cube does not have a solidify modifier…).

So you can see that the sword has some red faces.

To fix this, select the sword, press TAB and then A to select all vertices and then click on Mesh -> Normals -> recalculate normals.

enter image description here

you will notice, that some red faces will turn to blue.

Repeat this for all red faces.

After that the boolean should work.

by the way, it is always a good idea to change the «viewport display» -> «display as» of the cutter to «bounds» so that you can see what the result of the boolean operation is.

enter image description here

Most of the common problems people experience with the Boolean modifier are generally down to only 2 or 3 things: Normals, Doubles (or overlapping geometry), Non-Manifold geometry.

Normals

Faces have a direction, it may seem like a weird idea but it’s necessary in computer graphics to give a polygon (different word for face) a direction.

enter image description here

The fact that faces have a direction is included in the word «face», for English speakers: «what direction is it facing? it’s facing that direction». Blender will give the new faces you create a direction that corresponds to the faces around it, it’s up to you as a modeler to be aware of this.

The direction of the Normals determines how the objects combine when using a Boolean Modifier:

On the first image the cube and the torus have their normals facing out:

enter image description here

On the second image the Torus has the normals facing in:

enter image description here

On the third image both objects have their normals facing in:

enter image description here

What are Difference, Union, and Intersect supposed to produce?

  • Difference: The result will be those parts of the mesh which do not share volume in 3D space. see here a good expose on how to do this, and what to expect
  • Union: Returns the two meshes joined as one, the two meshes do need to have at least some common volume in 3D space. If they don’t you can use the Join command (Ctrl+j) instead of a boolean.
  • Intersect: will return the shared 3d volume of the two meshes.

Quote from the manual:

  • Difference

The modified mesh is subtracted from the target mesh.

If the target Mesh has inverted normals, Blender will Intersect the modified mesh.

If the modified Mesh has inverted normals, Blender will add both meshes (Union).

If both Meshes use inverted normals, Blender will Intersect the target Mesh.

  • Union

The target mesh is added to the modified mesh.

If the target Mesh has inverted normals, Blender will Intersect the target Mesh.

If the modified Mesh has inverted normals, Blender will subtract the target Mesh.

If both Meshes use inverted normals, Blender will Intersect the modified Mesh.

  • Intersect

The target mesh is subtracted from the modified mesh.

If the target Mesh has inverted normals, Blender will subtract the target Mesh.

If the modified Mesh has inverted normals, Blender will intersect the target Mesh.

If both Meshes use inverted normals, Blender will add both meshes (Union).

Fixes for problems caused by normals in boolean operations are generally easy: Faces of both objects should all be outward facing with no exceptions.

To recalculate normals enter Edit Mode (Tab).

Select all faces and press CtrlN To have the normals face out

Or CtrlShiftN to have normals face inside the mesh.

To flip a single face, select it and use Mesh>Normals>Flip Normals.

enter image description here

You can toggle the display of normals in the Properties Panel (right panel N): enter image description here

Doubles

Doubles are multiple vertices which share the same 3d location. These are problematic for the boolean modifier if they occur in one object, because they’re a sign of degenerate geometry (zero area faces, hidden duplicated edges) or simple geometry which isn’t fully connected as you might be led to believe by how it looks.

To Remove doubles

  1. Enter edit mode (Tab).
  2. Select everything (A.
  3. Presss W and select Remove Doubles.

( insert images of example tell-tale signs of doubles )

  • Overlapping geometry between objects:
    If you’ve removed doubles and flipped normals the right way, then a third cause of Boolean Failure is that some of your edges are shared by more than 2 faces. Inspect your Objects closely.
    Multiple vertices in the same location will often cause the boolean modifier to act up.
    In addition to Double geometry on Object A or B, object B should also not share any duplicated geometry with A. You can always prevent this by adjusting one of your Objects to comply with this limitation of the Boolean Algorithm.
    From this bug report:

    this is a known bug in Carve upstream (a library we’re using for boolean operations)

Non-Manifold Geometry

Boolean operations will fail when using Non-manifold objects.

For all intents are purposes manifold means ‘is it air-tight’, meaning it has no holes. Examples of non-manifold objects could be objects like planes with no thickness, or objects that are self-intersecting or that have Zero-area faces or have Open volumes.

For some operations it helps if you use the Outliner to hide the object you are doing the boolean operation with from view/render so you can see clearly the effect of the operation before applying the modifier (apply at the last possible moment!)

Other cases where boolean operations can fail:

  • Using Curve objects instead of Mesh objects

    Blender doesn’t let you use a curve objects for boolean operations. That inlcudes Text objects, as they are considered curves as well. Those objects would need to converted to mesh by pressing ⎇ AltC.

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Блейд энд соул ошибка установки 400
  • Блейд энд соул ошибка 100 неверный пароль