Вторник, 22 Февраль 2011 16:44

CSG - твердотельное моделирование 1 Избранное

Автор Alexander
Оцените материал
(0 голосов)

Подход к представлению тел

Один из подходов описания трехмерных объектов называется Constructive Solid Geometry (CSG) или по русски: твердотельное моделирование.
Идея подхода проста: тела можно представлять в виде комбинации других тел при помощи операций объединения, пересечения, вычитания и т.д.

Новое тело = Тело1 ОП Тело2

, где ОП это некоторая логическая операция, например, объединение.

Так, объединив два шара, можно получить молекулу:


BallORBall
На рисунке 1 показано объединение двух шаров одинакового размера.


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

Будем использовать следующие логические операции:

  • Объединение - OR
  • Пересечение - AND
  • Вычитание - SUB
  • Отрицание - NOT

Для дальнейшего понимания введем некоторые понятия.

Все наши тела будут размещаться в некотором трехмерном пространстве. Можно считать, что это пространство состоит из пустоты. С другой стороны, все наши тела будут состоять из НЕ пустоты - материала. Формально можно считать, что все тела состоят из одного и того же однородного материала, скажем, алюминия или пластика. Именно это и определяет понятие "твердотельный" в названии подхода в отличие от моделирования поверхностей.

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

Объединение - OR

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

Новое тело = Тело1 OR Тело2

Пример объединения двух шаров мы уже видели на предыдущем рисунке. Для этого случая имеем:

Новое тело = Зеленый_шар OR Синий_шар

Если мы начнем последовательно добавлять новые шары, то можем получить сложные молекулы.

DNK
Рисунок 2. Модель ДНК

Пересечение - AND

Тело полученное путем пересечения двух других, состоит из материала, каждая точка которого попадает и в первое и во второе тело.
В случае пересечения формула принимает следующий вид:

Новое тело = Тело1 AND Тело2

В случае наших двух шаров при пересечении получим следующее тело - чечевицу.

BallANDBall
Рисунок 3. Пересечение двух шаров.

На изображении хорошо видно, что в результирующее тело попали только те точки шаров, которые попадают в оба шара одновременно.

Чечевица = Зеленый_шар AND Синий_шар

Если в случае объединения из двух непустых тел всегда получается что-то непустое, то в случае пересечения двух непустых тел можно получить пустое множество.

Вычитание - SUB

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

Новое тело = Тело1 SUB Тело2

Если из зеленого шара вычесть синий, то получится что-то типа звезды смерти из кинофильма Звездные войны:

BallSubBall

Рисунок 4. Зеленый шар без кусочка от синего

Таким образом, получаем формулу Звезды смерти:

Звезда смерти = Зеленый_шар SUB синий_шар

Отрицание - NOT

Отрицание самая непонятная операция. Во-первых, в ней учавствует только одно тело. Во-вторых, после этой операции новым телом будет являться все пространство, кроме тех точек, которые раньше принадлежали исходному телу.

Новое тело = NOT Тело1

Если применить эту операцию к шару, то получится пространство, заполненное материалом шара, а внутри него шарообразная дырка.

Дырка в сыре = NOT Синий шар

Это как дырки в сыре. Их не видно пока не разрежешь. Чтобы увидеть эту дырку можно разрезать (например, пересечь) пространство красным полупространством, образованным, проходящей через центр шара плоскостью:

NotBall
Рисунок 5. К синему шару применено отрицание, после чего результат разрезан пополам через центр исходного шара.

Конечно, это изображение можно воспринимать двояко, как углубление в плоскости или как выпуклость над плоскостью. Если бы можно было сделать стереоскопическим, то восприятие было бы однозначным.

Формула для вычисления дырки имеем вид:

Дырка от шара = (NOT Синий шар) AND Красное полупространство

Для чего необходима такая странная операция? Оказывается она бывает необходима и полезна при конструировании сложных конструкций. Ну и для полноты перечня логических операций, конечно же!

На этом обзор операций завершен. В следующей главе поговорим о строительных "кубиках" для твердотельных моделей.

Прочитано 12644 раз Последнее изменение Суббота, 03 Август 2013 04:38
Авторизуйтесь, чтобы получить возможность оставлять комментарии