Конструктивная твердотельная геометрия - Constructive solid geometry

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

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

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

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

Работы

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

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

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

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

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

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

Приложения

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

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

Quake двигатель и Unreal двигателя и использовать эту систему, так же как и молот (родной слэшеры редактор уровней) и Torque Game Engine / Torque Game Engine Advanced . CSG популярен, потому что разработчик моделей может использовать набор относительно простых объектов для создания очень сложной геометрии. Когда CSG является процедурным или параметрическим, пользователь может изменить сложную геометрию, изменив положение объектов или изменив логическую операцию, используемую для объединения этих объектов.

Одним из преимуществ CSG является то, что он может легко гарантировать, что объекты являются «твердыми» или водонепроницаемыми, если все примитивные формы являются водонепроницаемыми. Это может быть важно для некоторых производственных или инженерных вычислительных приложений. Для сравнения, при создании геометрии на основе представлений границ требуются дополнительные топологические данные или должны выполняться проверки согласованности, чтобы гарантировать, что данное описание границы указывает допустимый твердый объект.

Удобное свойство фигур CSG состоит в том, что произвольные точки легко классифицировать как находящиеся внутри или вне фигуры, созданной CSG. Точка просто классифицируется по всем базовым примитивам, и вычисляется результирующее логическое выражение. Это желаемое качество для некоторых приложений, например для трассировки лучей .

Конвертация из сеток в CSG

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

Результирующее дерево CSG должно занимать тот же объем в трехмерном пространстве, что и входная сетка, при минимальном количестве узлов. Для упрощения редактирования итоговой модели предпочтительны простые решения. Решение этой проблемы является сложной задачей из-за большого пространства поиска, которое необходимо исследовать. Он сочетает в себе непрерывные параметры, такие как размер и размер примитивных форм, и дискретные параметры, такие как логические операторы, используемые для построения окончательного дерева CSG.

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

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

Существуют также подходы, которые используют генетические алгоритмы для итеративной оптимизации начальной формы до формы желаемой сетки.

Известные приложения с поддержкой CSG

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

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

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

Игры

Другие

  • 3Delight
  • Aqsis ( начиная с версии 0.6.0)
  • Blender - в первую очередь редактор поверхностных сеток, но способный к простому CSG с использованием метаобъектов и использования модификатора Boolean для объектов сетки.
  • Clara.io
  • Geant4
  • MCNP
  • SketchUp

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