Booleans Difference Options
Use these options to set what happens when you select Mesh > Booleans > Difference .
Note: You can extract multiple meshes from your first selected mesh in one Difference operation.
Use legacy Boolean algorithm
When on, performs the selected boolean operation using the legacy boolean algorithm.
Note: Scenes with boolean nodes that were created using Maya 2014 or earlier versions automatically use Maya’s legacy boolean algorithm.
Preserve Color When on, preserves color per vertex data on your meshes. See Assign colors to polygon vertices. Intersection Classification
Boolean operations are performed on intersections. When working with open meshes (planes or meshes with holes), Maya can calculate the intersection of the selected meshes in two different ways:
Edge Edge classification treats open meshes like closed volumes. For example, when Edge is selected, you can use the Difference operation to create craters or depressions in a flat plane.
Normal Normal classification treats open meshes like open volumes.

Related topics
- Booleans
- About booleans
- Combine polygon meshes using booleans
Combine polygon meshes using booleans
Tip: Before performing your boolean operation, view the normals on your mesh ( Display > Polygons > Face Normals ). If you want to produce predictable boolean results, make the normals uniform using Mesh Display > Conform .
To combine meshes using a Boolean operation
- Select your input objects.
- Do one of the following:
- Select Mesh > Booleans and select your boolean operation. For more information on each operation, see Boolean operations.
Click
in the Poly Modeling shelf.
Click
in the Modeling Toolkit . By default, clicking the button in the Poly Modeling shelf or the Modeling Toolkit performs a Difference (A-B) operation. You can also right-click the buttons and select another boolean operation.
Maya performs the boolean operation and the following occurs:
- A polyBoolean node is created
- The faces of the input meshes are connected and act as one single boolean result object named polySurface#
- polySurface# inherits the pivot of the first selected input object in the boolean operation.
- By default, boolean input meshes display as orange wireframes, differentiating them from other objects in your scene. See Customize the color of boolean input objects.

In the Attribute Editor , select the polyBoolean node to edit your boolean operation using the Boolean stack. See Work with the Boolean stack.
Note: polyBoolean replaces the polyCBoolOp and polyBoolOp nodes that were available in previous versions. polyCBoolOp and polyBoolOp have been deprecated.
Related topics
- Booleans
- Boolean stack
- Add input objects to an existing boolean node
- Customize the color and opacity of boolean input objects
- Troubleshoot booleans
Чем заместить софт для 3D-дизайна и геймдева в условиях санкций
В этой статье мы рассмотрим текущую ситуацию с инструментами для 3D-дизайна и игроделания и поищем возможные альтернативы.

Текущая ситуация
И так, что мы потеряли за последний месяц с небольшим:
- Всё что делал Autodesk, прежде всего 3ds Max, Maya, Mudbox (запрет продаж).
- Игровой движок Unity (неопределённая ситуация, но по-видимому запрет касается не всех).
- Всё что делали Adobe (запрет продаж). Наиболее используемым их софтом в 3D-отрасли были Photoshop и свежекупленный Substance Painter.
- Продукция Maxon, в частности пакет моделирования Cinema 4D (остановка продаж).
- CGTrader, маркетплейс 3D-моделей (запрет).
Под вопросом следующий софт и сервисы:
- Unreal Engine — запрета на продажи пока нет (пресс-релиз).
- ZBrush от Pixologic — отсутствие какой-либо информации о санкциях в блоге и соц. сетях.
- Sketchfab, хостинг интерактивных 3D-моделей — молчание.
- V-Ray — пока ничего не слышно.
Понятное дело, многие пытаются отмолчатся и переждать кризис, однако в социальных сетях имеется достаточное число активистов, выступающих за бойкот продукции компаний, проявляющих нейтралитет. В частности, среди GameDev-сообщества ходит коллаж следующего содержания (лозунги заретушированы):

Чем заменить 3ds Max, Maya, Mudbox, ZBrush, Cinema 4D
Переводим всех на Blender. Blender это комбайн, заменяющий массу инструментов для моделирования, анимации, скульптинга и текстурирования. Он также неплохо подходит для обрабоки видео. В плане политики всё тоже более-менее нейтрально. На призывы ряда пользователей запретить скачивать софт пользователям из России, руководитель проекта Тон Розендаль выступил с чётким заявлением, что этого не будет. Но даже если Blender в итоге запретят, его как открытый проект всегда можно будет скачать с других мест (или с помощью VPN).
К плюсам Blender можно также отнести то, что он отлично работает под Linux, в частности, входит в штатную поставку отечественных дистрибутивов, таких как Alt Linux, Astra Linux, Rosa.
Чем заменить 3D-движки Unity, Uneal Engine
В России делают два движка, которые с успехом могут заменить Unity и Unreal. Это Verge3D, разрабыватываемый московской командой Soft8Soft и UNIGINE, детище программистов из Томска. Оба движка платные, но имеют бесплатную ознакомительную версию.
К плюсам первого решения, Verge3D, можно отнести более простой пайплайн для разработки приложений и игр, возможность создания браузерных приложений, встроенные средства для разработки e-commerce и обучающих приложений, а также совместимость с Blender из коробки.
Движок UNIGINE подходит для разработки симуляторов, масштабных визуализаций (вплоть до планетарных), а также протяжённых игровых миров.
Чем заменить V-Ray, ARNOLD и другие рендеры
Альтернатив нет, это рейтресинг-движок Cycles, входящий в состав Blender.
Чем заменить Sketchfab
Зависит от того, с какой целью он применяется. Если речь идёт о демонстрации моделей, в частности на собственном сайте, подойдет Verge3D Network, сервис основанный на одноимённом отечественном движке. Если речь идёт о продаже готовых моделей, нужно следить за новостями. Насколько мне известно, отечественных аналогов CGTrader и TurboSquid пока не существует.
Чем заменить Substance Painter
Имеется неплохой открытый аналог — ArmorPaint.
Чем заменить Photoshop
GIMP (ну а куда деваться!) для обработки изображений, Blender для текстурирования.
Чем заменить продукт или сервис «NAME»
Попробуйте поискать открытый аналог «NAME» на сайте AlternativeTo.
BOOL или BOOLEAN — вот в чем вопрос?
Я как-то никогда не задумывался над тем, что лучше использовать BOOL или BOOLEAN? Конечно же, BOOL — это и короче и во всех учебниках по Windows встречается именно BOOL. Как бы не так! Буквально вчера я битый час занимался поиском ошибки там, где ее не должно было быть.
Оказалось, что единственно истинный тип, впрямую связанный с типом bool, который определен стандартами языка С++, это именно BOOLEAN. А BOOL это не что иное, как «typedef int BOOL;» и находится в windows.h (точнее в WinDef.h, но это неважно)
Рассмотрим подробнее исходный код функции, сравнивающий два числа:
#include #include bool CompareInt(int i1, int i2) < if (i1==i2) return true; //UPD1: было TRUE else return false; //UPD1: было FALSE >typedef BOOL (*CallBack)(int, int); void main(void)
После компилирования Visual Studio и запуска, имеем: Equals
Тогда поменяем BOOL на BOOLEAN:
typedef BOOLEAN (*CallBack)(int, int);
Компилируем, запускаем, получаем: Not equals (что и должно было получиться с самого начала)
Вывод: никогда не пользуйтесь BOOL, только BOOLEAN.
UPD1: Поправил в возврате функции, было TRUE/FALSE стало true/false для чистоты эксперимента.
UPD2: Раскрываю «черную магию». Возврат bool идет в типе char (регистр CPU al), так как bool в Visual Studio приравнен к char (и BOOLEAN там тоже приравнен к char поэтому замена BOOL на BOOLEAN убирает ошибку).
А вот тип BOOL приравнен к int (регистр eax), поэтому, когда функция возвращает false (он же FALSE), то при этом в нуль устанавливается только младший байт al, а старшие байты (ah и прочий eax) — там будет ненулевой мусор, на который BOOL, вобравший в себя результат bool, среагирует как на eax!=0 и возникнет ошибка.
Мы должны были бы внутри последнего if перейти на ветку с eax==0 (Not equals), а перешли на ветку с eax!=0 (Equals), потому что функция CompareInt вернула нам только al равным 0, а старшие (мусорные) байты в eax внутри функции CompareInt при этом (ошибочно?) не были установлены в 0.
UPD3: Кстати, скомпилировал этот код древним (2006 г.) Borland Builder C++, все биты eax при возврате false внутри функции CompareInt явно устанавливаются в 0 путем xor eax,eax — поэтому ошибки нет.
