Конструктивная сплошная геометрия
Конструктивная блочная геометрия, КБГ (англ. Constructive Solid Geometry, CSG) — технология, используемая в моделировании твёрдых тел[англ.]. Конструктивная блочная геометрия зачастую, но не всегда, является способом моделирования в трёхмерной графике и САПР. Она позволяет создать сложную сцену или объект с помощью битовых операций для комбинирования нескольких иных объектов. Это позволяет более просто математически описать сложные объекты, хотя не всегда операции проходят с использованием только простых тел. Так, часто с помощью конструктивной блочной геометрии представляют модели или поверхности, которые выглядят визуально сложными; на самом деле, они являются немногим более чем умно скомбинированные или декомбинированные простые объекты. В некоторых случаях конструктивная блочная геометрия исполняется с помощью полигональных сеток (англ. polygonal mesh), и может быть процедурной и/или параметрической.
Простейшие тела, используемые в конструктивной блочной геометрии — примитивы (англ. primitives), тела с простой формой: куб, цилиндр, призма, пирамида, сфера, конус. Набор доступных примитивов зависит от программного пакета. Так, некоторые программы позволяют создание конструктивной блочной геометрии на основе кривых объектов, а некоторые нет.
Построение более сложного объекта происходит путём применения к описаниям объектов булевых (двоичных) операций на множествах — объединение, пересечение и разность.
Примитив, как правило, может быть описан процедурой, которая принимает некоторые значения параметров, например, для построения сферы достаточно знать её радиус и положение центра.
Примитивы могут быть скомпонованы в составные объекты с помощью таких операций:
Применение
правитьКонструктивная блочная геометрия имеет ряд практических применений. Она используется там, где необходима простота (игровой движок, например, Unreal Engine и Source Engine) или математическая точность (САПР, например, определение водонепроницаемости конструкции).
Программы
править- Технология Geo Mod построена на использовании CSG
- BRL-CAD
- Feature Manipulation Engine
- FreeCAD (Juergen Riegel’s)
- GtkRadiant
- POV-Ray
- sgCore (C++/C# библиотека)
- SolidWorks (САПР)
- UnrealEd
- 3D World Studio
- Vectorworks
- OpenSCAD
Литература
править- ГОСТ Р ИСО 10303-515-2007. Системы автоматизации производства и их интеграция. Представление данных об изделии и обмен этими данными. Часть 515. Прикладные интерпретированные конструкции. Конструктивная блочная геометрия
- Martti Mantyla, «An Introduction to Solid modeling», 1988
- Christoph M. Hoffman, «Geometric and Solid modeling», 1989
- Philip M. Hubbard, «Constructive Solid Geometry for Triangulated Polyhedra», 1990
- Michael Muuss & Lee Butler, Глава «Combinatorial Solid Geometry, B-Reps, and n-Manifold Geometry» из книги «State of the Art in Computer Graphics», 1991
Ссылки
править- Leadwerks Software 'What is Constructive Solid Geometry?' — объяснение терминов, уравнений и применений.
- GNU Triangulated Surface library — библиотека с открытым кодом (LGPL), которая содержит возможности CSG на сетках из треугольников.
- Computational Geometry Algorithms Library — библиотека с открытым кодом (LGPL, QPL), которая содержит, помимо прочего, возможности CSG.
- The CSG rendering library — библиотека с открытым кодом, которая производит ориентированный на изображения CSG-рендеринг с использованием OpenGL.
- HyperFun Project — простой функциональный язык для геометрического моделирования, способный исполнять CSG-операции на различных типах объектов.
- Overview of CSG in avoCADo — программа 3D CAD с открытым исходным кодом.
- SimpleGeo — интерактивное твердотельное моделирование для симуляции перемещения частиц по методу Монте-Карло.
- FMEpedia CSGBuilder example — wikipedia CSG binary tree as replicated using FME (Feature Manipulation Engine).
- SolidKit Library — программная библиотека для программ с 3D/2D-графикой, разработанная на C++ с использованием OpenGL, содержит способности CSG на сетках из треугольников.