Конструктивная сплошная геометрия
Конструктивная твердотельная геометрия ( CSG ; ранее называвшаяся вычислительной бинарной твердотельной геометрией ) — это метод, используемый в твердотельном моделировании . Конструктивная твердотельная геометрия позволяет разработчику модели создавать сложную поверхность или объект, используя логические операторы для объединения более простых объектов. [1] потенциально создание визуально сложных объектов путем объединения нескольких примитивных объектов. [2] [3]
В 3D-компьютерной графике и САПР CSG часто используется при процедурном моделировании . CSG также может выполняться на полигональных сетках и может быть процедурным и/или параметрическим, а может и не быть.
Сравните CSG с моделированием полигональной сетки и моделированием коробки .
Работа [ править ]
Простейшие твердые объекты, используемые для представления, называются геометрическими примитивами . Обычно это предметы простой формы: кубоиды , цилиндры , призмы , пирамиды , сферы , конусы . [1] Набор допустимых примитивов ограничен каждым программным пакетом. Некоторые пакеты программного обеспечения позволяют использовать CSG для изогнутых объектов, а другие — нет.
Объект создается из примитивов с помощью допустимых операций , которые обычно представляют собой логические операции над множествами : объединение , пересечение и разность , а также геометрические преобразования этих множеств. [1]
Примитив обычно может быть описан процедурой , которая принимает некоторое количество параметров ; например, сфера может быть описана координатами ее центральной точки, а также значением радиуса. Эти примитивы можно объединить в составные объекты с помощью таких операций:
- Союз
Объединение двух объектов в один - Разница
Вычитание одного объекта из другого - Пересечение
Часть, общая для обоих объектов
Комбинируя эти элементарные операции, можно создавать объекты высокой сложности, начиная с простых.
Трассировка лучей [ править ]
Рендеринг конструктивной твердотельной геометрии особенно прост при трассировке лучей . Трассировщики лучей пересекают луч с обоими обрабатываемыми примитивами, применяют оператор к интервалам пересечения вдоль 1D-луча, а затем принимают в качестве результата точку, ближайшую к камере вдоль луча.
Приложения [ править ]
Конструктивная твердотельная геометрия имеет ряд практических применений. Он используется в тех случаях, когда желательны простые геометрические объекты. [ нужна ссылка ] или где важна математическая точность. [4] Почти все пакеты инженерных САПР используют CSG (где это может быть полезно для представления вырезов инструментов и элементов, в которых детали должны соответствовать друг другу).
Hammer ( ) родной редактор Эту систему используют движок Quake и Unreal Engine, а также уровней движка Source и Torque Game Engine / Torque Game Engine Advanced . CSG популярен, потому что моделист может использовать набор относительно простых объектов для создания очень сложной геометрии. [3] Когда CSG является процедурным или параметрическим, пользователь может пересматривать их сложную геометрию, изменяя положение объектов или изменяя логическую операцию, используемую для объединения этих объектов.
Одним из преимуществ CSG является то, что он может легко гарантировать, что объекты являются «твердыми» или водонепроницаемыми, если все примитивные формы водонепроницаемы. [5] Это может быть важно для некоторых производственных или инженерных вычислений. Для сравнения, при создании геометрии на основе представлений границ требуются дополнительные топологические данные или необходимо выполнять проверки согласованности, чтобы гарантировать, что данное описание границы указывает действительный твердотельный объект. [1]
Удобным свойством фигур CSG является то, что произвольные точки легко классифицировать как находящиеся внутри или снаружи формы, созданной CSG. Точка просто классифицируется по всем базовым примитивам и вычисляется результирующее логическое выражение. [6] Это желательное качество для некоторых приложений, таких как трассировка лучей . [6]
Преобразование сеток в CSG [ править ]
Поскольку модели CSG параметризуются по конструкции, они часто предпочтительнее обычных сеток , когда речь идет о приложениях, целью которых является изготовление индивидуальных моделей. Для таких приложений может быть интересно преобразовать уже существующие сетки в деревья CSG. Эта проблема автоматического преобразования сеток в деревья CSG называется обратной CSG .
Результирующее дерево CSG должно занимать тот же объем в трехмерном пространстве, что и входная сетка, при этом имея минимальное количество узлов. Предпочтительны простые решения, чтобы полученную модель можно было легко редактировать.Решение этой проблемы является сложной задачей из-за большого пространства поиска, которое необходимо изучить. Он сочетает в себе непрерывные параметры, такие как размерность и размер примитивных фигур, и дискретные параметры, такие как логические операторы, используемые для построения окончательного дерева CSG.
Дедуктивные методы решают эту проблему, создавая набор полупространств , описывающих внутреннюю часть геометрии. Эти полупространства используются для описания примитивов, которые можно объединить для получения окончательной модели. [7]
Другой подход разделяет обнаружение примитивных форм и вычисление дерева CSG, которое определяет окончательную модель. Этот подход использует способность современных инструментов синтеза программ находить дерево CSG с минимальной сложностью. [8]
Существуют также подходы, которые используют генетические алгоритмы для итеративной оптимизации исходной формы до формы желаемой сетки. [9]
с поддержкой CSG Известные приложения
языки моделирования и программное обеспечение Общие
и транспорт Трассировка лучей частиц
Компьютерное проектирование [ править ]
- Автокад
- Автодеск Инвентор
- Автодеск Фьюжн 360
- БРЛ-CAD
- КАТИЯ
- FreeCAD
- НХ САПР
- SolveSpace
- Форма
- OpenSCAD
- PTC Creo Parametric (ранее известный как Pro/Engineer )
- Реалсофт 3D
- Носорог
- Селфкад
- Солидный край
- Солидворкс
- Тинкеркад
- векторные работы
Игры [ править ]
- ЛиттлБольшаяПланета
- Мечты
- Годо [10]
- GtkRadiant
- Unity через бесплатные или платные плагины из Unity Asset Store .
- UnrealEd
- Редактор Valve Hammer
- Роблокс
Другие [ править ]
- 3Восторг
- Аксис (начиная с версии 0.6.0) [11]
- Blender — в первую очередь редактор поверхностной сетки, но способный создавать простые CSG с использованием метаобъектов и логических модификаторов для объектов-сетей.
- Clara.io
- Сумка4
- МКНП
- СкетчАп
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б с д Фоли, Джеймс Д. (1996), «12.7 Конструктивная твердотельная геометрия», Компьютерная графика: принципы и практика , Addison-Wesley Professional, стр. 557–558, ISBN 9780201848403 ,
- ^ Рот, Скотт (1982). «Лучевое моделирование для моделирования твердых тел». Компьютерная графика и обработка изображений . 18 (2): 109–144. дои : 10.1016/0146-664X(82)90169-1 .
- ↑ Перейти обратно: Перейти обратно: а б Блументаль, Жюль; Баджадж, Чандраджит (1997), «5.2.5 Пересечение с деревьями CSG», Введение в неявные поверхности , Морган Кауфманн, стр. 178–180, ISBN 9781558602335 .
- ^ Фоли (1996) , с. 559.
- ^ ван Россен, Сандер; Барановский, Мэтью (2011), «Конструктивная твердотельная геометрия в реальном времени», в Ансари, Марван (ред.), Инструменты разработки игр , CRC Press, стр. 79–96, ISBN 9781439867723 .
- ↑ Перейти обратно: Перейти обратно: а б Гласснер, Эндрю С. (1989), Введение в трассировку лучей , Морган Кауфманн, стр. 80, ISBN 9780122861604 .
- ^ Бучеле, Сюзанна Ф.; Кроуфорд, Ричард Х. (2004). «Построение дерева конструктивной твердотельной геометрии трехмерного полупространства на основе неявных граничных представлений». Компьютерное проектирование . 36 (11): 1063–1073. дои : 10.1016/j.cad.2004.01.006 .
- ^ Ду, Тао; Инала, Дживана Прия; Пу, Юэн; Спилберг, Эндрю; Шульц, Адриана; Рус, Даниэла; Солар-Лезама, Армандо; Матусик, Войцех (2018). «InverseCSG: автоматическое преобразование 3D-моделей в деревья CSG» . АКМ Транс. График . дои : 10.1145/3272127.3275006 .
- ^ Файоль, Пьер-Ален; Пасько, Александр А. (2016). «Эволюционный подход к извлечению деревьев построения объектов из трехмерных облаков точек» (PDF) . Компьютерное проектирование . 74 : 1–17. дои : 10.1016/j.cad.2016.01.001 .
- ^ Godot Engine - Godot получает поддержку CSG
- ^ Грегори, Пол (12 февраля 2002 г.). «Большой релиз» . Получено 20 мая 2020 г. - через SourceForge.