ИСМ-06-2:

назад

7. б) Методы визуализации булевых операций

Методы визуализации булевых операций

Методы визуализации булевых операций делятся на математические и графические.

При математическом методе необходимо:

  1. выявить видимые и  невидимые сектора поверхности
  2. решить задачу триангуляции между реальной частью поверхности и контуром (РИС)

Графические методы – алгоритмы, работающие в пространстве кадра. . К этой категории принадлежат алгоритмы Goldfeather, алгоритм слоев Goldfeather и SCS-алгоритм (последовательного вычитания выпуклых оболочек) [19].

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

Все эти алгоритмы реализованы в библиотеке OpenCSG. Однако, непонятно, как можно интегрировать данную библиотеку в разрабатываемую САПР.

 Структура модуля визаулизации

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

Помимо перечисленных свойств, такая структура позволяет выполнять простое добавление и уничтожение отдельных объектов. Рассмотрим простую деталь «кронштейн» (рис. 1) в структурном представлении системы.


Структурно эта деталь будет выглядеть, как показано на рис. 2.


Верхний узел графа (агрегаты) представляет собой сборку – совокупность деталей. Ниже по иерархии находятся детали, которые, в  свою очередь, подразделяются на поддетали и примитивы.

Рассмотрим реализацию данной структуры на языке C++ (листинг 1).

class VDTree {     //Класс дерево

private:

VDTree *Parent;                //Указатель на родителя

VDTree **Childs;              //Массив элементов – потомков

unsigned int ChildCount; //Количество потомков

public:

                VDTree();                             //Конструктор

                ~VDTree();                           //Деструктор

 

                void SetParent(VDTree *parent);   //Установить родителя

                VDTree *GetParent();                       //Получить родителя

 

unsigned int GetChildCount();       //Получить количество потомков

void AddChild(VDTree *Child);     //Добавить потомок

VDTree *GetChild(unsigned int ChildIndex); //Получить потомка по индексу

void DeleteChild(unsigned int ChildIndex);               //Удалить потомка по индексу

};

 

class VDObject: public VDTree {  //Класс графический объект

private:

                unsigned int ObjectType;                 //Тип графического объекта

                void *Parameters;              //Параметры графического объекта

public:

                VDObject();          //Конструктор

                ~VDObject();       //Деструктор

};

 

Листинг 1. Реализация структуры модуля визуализации.

К модулю визуализации САПР предъявляются требования, суть которых сводится к следующему:

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

Выбор объектов в OpenGL (Silicon graphics) реализован с помощью специального «буфера выбора» [13]. При этом, каждому графическому элементу присваивается уникальное имя – идентификатор. Все поименованные объекты хранятся в стеке имен. При рендеринге сцены включается режим «выбора» и все объекты, находящиеся под курсором, попадают в буфер выбора.


Препроцессор графического ядра выполняет предподготовку для вывода геометрии: 1) перевод данных в собственный «внутренний» формат представления; 2) генерализация (оптимизация) «сложных» поверхностей и деталей; 3) визуализация булевых операций. Как говорилось выше, наиболее подходящей структурой данных для модуля визуализации является структура в виде графа, именно к такой организации приводятся поступающие данные. Про оптимизацию и визуализацию булевых операций речь пойдет ниже.

Любой трехмерный объект в компьютерной графике, как известно, представляется в виде сети треугольников, представляющей собой триангуляцию (триангуляция – планарный граф, все конечные грани которого являются треугольниками) [3]. Суть методов оптимизации заключается в перестроении триангуляции и формирования сети треугольников большего размера, либо построения квадриангуляции (сетка прямоугольников) [6]. На рис. 4 изображен пример построения квадриангуляции (слева – триангуляция).


[редактировать]

назад

© ism-06-2.ru