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’

В ответ на: Мелкие вопросы по моделированию

Добрый день.Такой вопрос. После переустановки Blender перестал нормально работать модификатор Boolean-> Difference. Не понимаю в чем проблема, до переустановки резал всем и вдоль, и поперёк, и Кубом и Plane, а сейчас нормально только кубом делает и то криво. А также спокойно отрезало нижнюю часть объекта, то есть не насквозь. В чем может быть проблема? Может быть какие-то Аддоны нужно включить или что-то ещё? Какие были включены аддоны в удалённом блендере хоть убейте не помню, все настройки скатились до заводских. Без этого модификатора дальше работать не представляет возможности.

Тема: boolean

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

В ответ на: фаски при булевых операциях

Есть и бесплатный вариант, в частности, для Blender 2.8. Правда еще «шлифуется», но уже кое-что может https://blenderartists.org/t/wip-bevel-after-boolean/693072/1072

В ответ на: Вопрос — Ответ

Модификатор Boolean пробовал?
А так вот тут сжато всё есть:
https://blender3d.com.ua/blender-basics/

В ответ на: Мелкие вопросы по моделированию

Существует ли возможность обьединить, на подобии того как это делает boolean => union, сразу несколько десятков перескающхся геометрией мешей в один меш разом? Нужна только видимая поверхность, никаких полигонов внутри быть не должно. Оригинальную геометрию можно убить, мне просто нужна быстрая ретопология с обьединением.

В ответ на: Как правильно сделать часть стены дома под углом?

Здравствуйте, вашу проблему можно решить — в мгновения ока :-).
И так:1. Почему не используете аддон Archimesh (проверьте — подключён ли он у вас). А оконные и дверные проёмы, так для этого лучше использовать модификатор «Boolean».

В ответ на: Проблемы c Curve

Может есть другие варианты как выдавить этот mesh на поверхности (полигоне) кроме boolean и intersect?

Тема: Проблемы c Curve

при создании меша с помощью кривых образуются лишние вершины, потом этот меш я использую для выдавливания в другом меше с помощью boolean, но из-за этих пересечений булеан плохо отрабатывает, можете подсказать как от них избавиться?

В ответ на: Мелкие вопросы по моделированию

Все сказанное про модификатор Mirror не есть истина. Все работает синхронно и как положено.

Странно, у меня после применения Mirror синхронности не наблюдается.

Еще интересует, после применения Boolean difference при вычитании тела 2 из тела 1, в результате, получается, как будто объединение этих тел, при том, что тело 3 в теле 2 имеет и грани, и вершины, а плоскости только с торцов.
При разных значениях параметра Overlap treshold, изменений нет.

В ответ на: Как из Archimesh сделать просто mesh

Ну а я на примере стен пробовал, там модификаторы есть. Они там везде. Даже когда окно врезаешь в стену, кликаешь там «avtohole», и аддон автоматически добавляет модификатор Boolean, который вырезает отверстие в wall этим самым CTRL_hole из твоего скрин-примера (надо только следить за толщинами wall и CTRL_hole).
Ну а насчет как сделать — просто удаляй нуль-объект (window-group) и ctrl-hole (который нужен лишь для вырезания булевого), и останется у тебя один лишь объект window, который и есть та самая простая сетка. Куча loose-parts. Даже стекло (одно) — состоит из двух плэйнов 🙂
Как по-мне — так то самое окно проще самому сделать, чем аддоном. 🙂

В ответ на: Курс по BGE от drdotmom

Глава 4.
Подробнее про синтаксис и сам процесс написания скриптов на bge python.

Как я понял — синтаксис был затронут слишком поверхностно. Попробую рассказать о нём подробно.

Подготовка пространства Blender 3D для работы с BGE
Во-первых — стоит заменить таймлайн на редактор логики. Таймлайн в процессе создания игрушки вам врядли пригодится. Вообще я настоятельно рекомендую создавать все объекты в другой сессии блендера. Это позволит вам сосредоточиться строго на объекте и не путаться в сцене.
Далее — окно 3D вида стоит разделить и в одном из получившихся открыть Text Editor для редактирования скриптов.
При желании можно так же потянуть за уголок, но с зажатым шифтом для того, что бы вместо разделения текущего окна создалось отдельное, которое можно в случае чего свернуть.
Тип рендера следует переключить на Blender Game, в n-панели 3D вида во вкладке Shading установить режим материала на GLSL.
В редакторе текста нажать Ctrl+T (появится T-панель) и во вкладке Proporties включить Line Numbers (нумерация строк), Word Wrap (перевод строк) и Syntax Highlight (подсветка синтаксиса)

Заповеди bge python.
1. Всё, что вы имеете в скрипте — можно присвоить переменной.
Это и значения, и имена объектов, и функции. При присвоении используется оператор ‘=’. При этом значение правой части присваивается переменной в левой части
x = y \\ x принимает значение y
color = [1.0, 1.0, 1.0] \\ color принимает набор значений
object = scene.objects [‘Empty’] \\ object принимает значение объекта Empty становясь «ссылкой» на него.
debug = bge.render.showProperties \\ debug принимает значение функции, показывающей переменные. Теперь для её активации достаточно написать debug = True для активации или debug = False для деактивации.

2. Всегда соблюдай табуляцию.
В текстовом редакторе Blender табуляция (Tab) по-умолчанию ровняется четырём пробелам, однако смысловая разница есть.
Табуляция используется под каждым логическим оператором.

Табуляция — способ разделения условия от операции, производимой при соблюдении этого самого условия.
Кстати говоря — вы можете записать операции и в одну строку, разделив их знаком ;
if x == t: y = 4; g = 2; e = 0
Но это уже вопрос читабельности — вариант с записью в одну строку читать намного труднее. Я мог бы и промолчать про эту возможность для того, что бы вы так не делали, но это было бы не проффесионально. Так что знайте, но не используйте, пожалуйста =)
3. Помни про регистр.
«String» не равен «string»!

4. Держи скрипт в чистоте и порядке.
Это не обязательно и на работу скрипта не влияет, но очень даже желательно. Даже если никому не собираешься показывать код — тебе самому, возможно, придётся в нём ползать, искать ошибки и добавлять \ менять функции.
Два скрипта ниже абсолютно одинаковые по функциям, но со вторым работать приятнее

5. Не путай сравнение и равенство!
Для логических операторов используется только «==»
Для присваивания только «=»

Также не забываем про двоеточие в конце вопроса.

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

Глава 5.
Процессируем в Text Editor на пальцах.

Код, указанный выше довольно простой, а потому хорошо подойдёт для разогрева.
Итак, по коду — он управляет освещением автомобиля. Это стоп-сигналы, лампы заднего хода и фары. Альтернатива — только анимация, что намного жирнее по ресурсам выйдет. Бонусом придётся забить кирпичиками ноды всех объектов и страдать при попытке что-то подрегулировать.

Посмотреть полную версию скрипта можно в последнем обновлении.

О процессе создания.

Этап первый — подготовка.
Первым делом было написано :

Это что-то вроде базовых функций, которые используются чаще всего. Их стоит знать в глаза.
Грубо говоря я на этом этапе заранее утаптывал почву для того, что бы начать строить скрипт.

Этап второй — планирование.
Самое время задуматься о том, что требуется от скрипта.
Из обязательного — включение\выключение ламп заднего хода и тормоза без использования анимации.
Смотрим на наши возможности — открываем python reference и вводим в поиск «light»
Она нам выдаёт внушительный список, но нас интересует только bge.

В списке в первой позиции имеется bge.types.KX_Scene.lights — читаем и видим A list of lights in the scene, (read-only).
Это нам не подходит т.к. функция позволяет лишь получить список ламп в сцене. Возвращаемся в поиск.

Листаем ниже и находим bge.types.KX_LightObject. Под ним находим переменные этого LightObject — дистанция, энергия, цвет, тип источника света — то, что нужно. Значит, это функция отвечает непосредственно за источник освещения.

Смотрим в пример:

Из примера становится ясно, что управляется источник света через Объект.функция света = (значение)
Потому как bge.logic.getCurrentController().owner равнозначно текущему объекту. Это хорошо потому, что вместо текщего объекта можно поставить любой другой. Значит, можно уместить код на одном объекте без сложностей указав лампы из кода и накинуть скрипт куда-нибудь на пустышку, объединяющую все лампы.

Наличие переменной цвета нам очень даже пригодится — мы можем те же задние лампы использовать и в качестве ламп заднего хода, что хорошо — сэкономим на кол-ве источников света.

Этап третий — пишем код.
Если мы хотим расположить скрипт на одном объекте — нужно указать все лампы.

База у нас уже была, а потому дописываем:

Мы присвоили этим двум переменным значение объектов-ламп тормоза.
Теперь можно задуматься о способе включения ламп.

Из очевидного — включать лампы когда нажата клавиша S, но это не то т.к. лампы будут работать и при заднем ходе. Идём в объект-автомобиль и попутно открываем Powertrain. В планах переключать переменную только тогда, когда констреинт будет использовать торможение.
Находим в Powertrain.py блок, отвечающий за торможение — def Brakes()
В нём нас интересует только # brake и # no brakes потому, что # emergency это ручной тормоз, а # emergencyD — копипаста ручника при смерти, которая клинит колёса.

сам скрипт я немного модифицировал т.к. старый не работал. Он проверял разные состоряния нажатия клавиши тормоза (brake.positive == True) и клавиши занего хода (reverse.positive == False), хотя это была одна клавиша — ‘S’.
Я добавил проверку скорости и состояния клавиши газа. Таким образом, тормоза срабатывали [при скорости выше 0 и при нажатом тормозе] или [при скорости ниже 0 и при нажатом газе ]

Конструкция проверки уже имеется и нам остаётся только дописать под функциями присвоение нашей переменной.
Состояние записывается в пееременную BrakeBool (True или False). Записана она в виде «own[‘BrakesBool’]» потому, что находится в N-панели редактора логики и, соответственно, сперва приходится указывать объект, на котором скрипт уже будет искать переменную.
Нам осталось только получить состояние этой переменной в скрипте освещения.

Всё, что было сделано в Powertrain.py — чисто для определения состояния тормоза. ну, за исключением правки скрипта. Таким образом на выходе мы имеем переменную, которая имеет значение

Содаём объект-пустышку и родительской связью привязываем его к фонарям. У пустышки создаём через редактор логики сенсор Always (всегда), включаем обновление (кнопочка с тремя точками сверху) и соединяем с контроллером «python» с указанием нашего скрипта.

Далее идём в скрипт и собираем всю необходимую информацию от объекта-автомобиля:

Далее просто собираем всю информацию в код.

По тормозам вроде всё. Для наполнения скрипта я ещё добавил фары и в кирпичики поставил переключение boolean переменной при нажатии клавиши H

Весь скрипт в основном состоит из той самой конструкции проверки:

Если условие выполнено:
выполняем действие

Источник

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

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

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

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

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

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

Источник

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