Пятница, 01 Апрель 2011 16:10

CSG - твердотельное моделирование 3

Автор Александр Бушмелев
Оцените материал
(0 голосов)

Особенности твердотельного моделирования

benzolПоговорим об особенностях твердотельного моделирования. Напомним, что речь идет о конструировании трехмерных объектов при помощи набора элементарных примитивов используя операции объединения, пересечения и вычитания. Сравнивать твердотельное моделирование будем с другим, на сегодняшний день более распространенным методом: моделирование при помощи поверхностей. Например, для моделирования можно использовать поверхности Безье (http://ru.wikipedia.org/wiki/Поверхность_Безье).

bezier_surface

Иногда этот способ называют 2.5D моделированием. Объекты описываются набором 2D поверхностей в 3D пространстве, поэтому и 2.5D, то есть где то между. Сложную поверхность из одного элемента, представленного на изображении выше, сделать сложно. Используют несколько прямоугольных кусочков. Если применять этот метод для описания трехмерных тел, то поверхности должны стыковаться друг с другом так, чтобы полностью ограничить объем. Это важно, например, для различных вычислений. Если есть не состыкованные поверхности, то в этом месте появляются "дыры" и понятие объема теряет смысл.

В отличие от моделирования при помощи поверхностей все объекты, входящие в CSG-модель заведомо являются трехмерными телами, поэтому результат операций над ними гарантированно будет так же трехмерным телом. В этом мы убедились в первой части статьи. В случае же, 2.5D моделирования необходимо каждый раз убеждаться, что отсутствуют "дыры" между стыками поверхностей. И никогда нельзя быть уверенным, что "дыр" нет.

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

benzol

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

link

CSG-модели отличаются компактностью хранения и представления. Как мы видели в предыдущих статьях пересечение двух шаров представляет из себя набор из 8 чисел (два центра и два радиуса). В случае 2.5D представления объем данные будут значительно большим. Даже предположив, что пересечение двух шаров (Чечевица) представлена в виде двух поверхностей Безье, то объем данных будет равен как минимум 96 числам (16 вершин в пространстве на каждую из поверхностей). Даже в этом простейшем случае размер хранимых данных для 2.5D на порядок больше, чем в CSG представлении. Конечно же, в современном мире большой объем памяти не является критическим параметром.

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

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

В середине 80х Кузьмным Е. был предложен алгоритм удаления невидимых линий для случая твердотельной модели в виде CSG представления, который не требует явного вычисления линий пересечений тел и построения поверхностей. Фактически, на экране непосредственно отображается CSG дерево. Кроме того, этот алгоритм позволяет производить "объемные" вычисления такие как: нахождения центра тяжести и объем с определенной точностью. У этого алгоритма есть еще одно полезное свойство: вычисления можно полностью распараллелить.

Все приведенные изображения получены при помощи алгоритма, реализованного на основе идеи Кузьмина Е.
В данной реализации рисование изображения требует некоторого времени. При нажатии кнопки перерисовки на моем компьютере требуется пара секунд, чтобы перерисовать изображение. Но следует учесть, что перерисовка происходит без использования какого либо ускорителя, пересчитывается каждая точка изображения, а сам алгоритм в данной реализации выполнен на совсем не быстром JavaScript.
В перспективе HTML5 предполагает интеграцию с OpenCL. Когда наступит этот удивительный миг, можно будет переписать алгоритм визуализации CSG-моделей, распараллелив расчет изображения, используя ресурсы графического ускорителя. Надеюсь, что эта реализации позволит просматривать CSG-модели в реальном времени в обычном браузере.

 

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

Строительные "кубики" - элементарные тела
Прочитано 6984 раз Последнее изменение Пятница, 01 Апрель 2011 16:43
Авторизуйтесь, чтобы получить возможность оставлять комментарии