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

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

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

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

Работы [ править ]

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

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

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

  • Союз
    Слияние двух объектов в один

  • Отличие
    Вычитание одного объекта из другого

  • Участок пересечения,
    общий для обоих объектов

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

Трассировка лучей [ править ]

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

Приложения [ править ]

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

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

Quake двигатель и Unreal двигателя и использовать эту систему, так же как и молот (родной слэшеры редактор уровней) и 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 [ править ]

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

  • HyperFun
  • PLaSM

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

  • PhotoRealistic RenderMan
  • Пов-луч

Компьютерный дизайн [ править ]

  • AutoCAD
  • BRL-CAD
  • CATIA
  • FreeCAD
  • NX CAD
  • SolveSpace
  • OpenSCAD
  • Профи / Инженер
  • Реалсофт 3D
  • Носорог
  • SelfCAD
  • Solid Edge
  • SolidWorks
  • Vectorworks

Игры [ править ]

  • Мечты
  • Годо [10]
  • GtkRadiant
  • Unity через бесплатные или платные плагины из Unity Asset Store .
  • UnrealEd
  • Редактор Valve Hammer
  • Роблокс

Другое [ править ]

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

Ссылки [ править ]

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