stringtranslate.com

Конструктивная сплошная геометрия

Объекты CSG могут быть представлены в виде двоичных деревьев, где листья представляют примитивы, а узлы представляют операции. На этом рисунке узлы помечены для пересечения , для объединения и для различия .

Конструктивная твердотельная геометрия ( CSG ; ранее называвшаяся вычислительной бинарной твердотельной геометрией ) — это метод, используемый в твердотельном моделировании . Конструктивная твердотельная геометрия позволяет разработчику модели создавать сложную поверхность или объект, используя логические операторы для объединения более простых объектов, [1] потенциально создавая визуально сложные объекты путем объединения нескольких примитивных объектов. [2] [3]

В 3D-компьютерной графике и САПР CSG часто используется при процедурном моделировании . CSG также может выполняться на полигональных сетках и может быть процедурным и/или параметрическим, а может и не быть.

Сравните CSG с моделированием полигональной сетки и моделированием коробки .

Работает

Простейшие твердые объекты, используемые для представления, называются геометрическими примитивами . Обычно это предметы простой формы: кубоиды , цилиндры , призмы , пирамиды , сферы , конусы . [1] Набор допустимых примитивов ограничен каждым программным пакетом. Некоторые пакеты программного обеспечения позволяют использовать CSG для изогнутых объектов, а другие — нет.

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

Примитив обычно может быть описан процедурой , которая принимает некоторое количество параметров ; например, сфера может быть описана координатами ее центральной точки, а также значением радиуса. Эти примитивы можно объединить в составные объекты с помощью таких операций:

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

трассировка лучей

Рендеринг конструктивной твердотельной геометрии особенно прост при трассировке лучей . Трассировщики лучей пересекают луч с обоими обрабатываемыми примитивами, применяют оператор к интервалам пересечения вдоль 1D-луча, а затем принимают в качестве результата точку, ближайшую к камере вдоль луча.

Приложения

Операции CSG применяются в контексте лучей в трассировщике лучей

Конструктивная твердотельная геометрия имеет ряд практических применений. Он используется в тех случаях, когда желательны простые геометрические объекты или когда важна математическая точность. [4] Почти все пакеты инженерных САПР используют CSG (где это может быть полезно для представления вырезов инструментов и элементов, в которых детали должны соответствовать друг другу).

Эту систему используют движок Quake и Unreal Engine , а также Hammer (родной редактор уровней движка 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

Общие языки моделирования и программное обеспечение

Трассировка лучей и транспорт частиц

Системы автоматизированного проектирования

Игры

Другие

Рекомендации

  1. ^ abcd Фоли, Джеймс Д. (1996), «12.7 Конструктивная твердотельная геометрия», Компьютерная графика: принципы и практика, Addison-Wesley Professional, стр. 557–558, ISBN 9780201848403,
  2. ^ Рот, Скотт (1982). «Ray Casting для моделирования твердых тел». Компьютерная графика и обработка изображений . 18 (2): 109–144. дои : 10.1016/0146-664X(82)90169-1.
  3. ^ аб Блументаль, Жюль; Баджадж, Чандраджит (1997), «5.2.5 Пересечение с деревьями CSG», Введение в неявные поверхности, Морган Кауфманн, стр. 178–180, ISBN 9781558602335.
  4. ^ Фоли (1996), с. 559.
  5. ^ ван Россен, Сандер; Барановский, Мэтью (2011), «Конструктивная твердотельная геометрия в реальном времени», в Ансари, Марван (ред.), Инструменты разработки игр, CRC Press, стр. 79–96, ISBN 9781439867723.
  6. ^ ab Glassner, Эндрю С. (1989), Введение в трассировку лучей, Морган Кауфманн, стр. 80, ISBN 9780122861604.
  7. ^ Бучеле, Сюзанна Ф.; Кроуфорд, Ричард Х. (2004). «Построение дерева конструктивной твердотельной геометрии трехмерного полупространства на основе неявных граничных представлений». Системы автоматизированного проектирования . 36 (11): 1063–1073. дои : 10.1016/j.cad.2004.01.006.
  8. ^ Ду, Тао; Инала, Дживана Прия; Пу, Юэн; Спилберг, Эндрю; Шульц, Адриана; Рус, Даниэла; Солар-Лезама, Армандо; Матусик, Войцех (2018). «InverseCSG: автоматическое преобразование 3D-моделей в деревья CSG». АКМ Транс. График . дои : 10.1145/3272127.3275006 .
  9. ^ Файоль, Пьер-Ален; Пасько, Александр А. (2016). «Эволюционный подход к извлечению деревьев построения объектов из трехмерных облаков точек» (PDF) . Системы автоматизированного проектирования . 74 : 1–17. doi :10.1016/j.cad.2016.01.001.
  10. ^ Godot Engine - Godot получает поддержку CSG
  11. Грегори, Пол (12 февраля 2002 г.). «Большой релиз» . Получено 20 мая 2020 г. - через SourceForge.