Главная

Диссертация

Ссылки

Библиотека

Министерство науки и образования Украины

Донецкий национальный технический университет

Магистерская работа

Методы и алгоритмы синтеза систем геометрического моделирования

Руководитель Карабчевский В.В.

Содержание

Общая характеристика работы
Содержание работы
1. Анализ существующих программных средств геометрического моделирования
1.1 Лицензируемые ядра
1.2 Частные ядра
1.3 Ядра, доступные в исходном коде
2 Структура базовой библиотеки для создания систем геометрического моделирования
2.1 Объекты ядра
2.1.1 Геометрические объекты
2.1.2 Вспомогательные объекты
2.1.3 Камеры и источники света
2.2 Блок виртуальной сцены
2.3 Блок внешних библиотек
2.4 Блок конфигурации
2.5 Блок визуализатора
2.6 Внешние интерфейсы и блок управления ядром
Выводы
Список литературы

 

Общая характеристика работы

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

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

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

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

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

Содержание работы

1 Анализ существующих программных средств геометрического моделирования

В настоящее время существует множество систем геометрического моделирования, различающихся как по функциональности, так и по области применения. Среди них можно отметить разработки фирмы Autodesk: AutoCAD, AutoCAD Mechanical Desktop, усовершенствование первого специально для инженерных целей, и включающего в себя различные расчеты и нормы механических систем и Autodesk Inventor, мощное средство, которое в некоторых аспектах охватило возможности первых двух. Также можно отметить всем известную систему 3DStudio Max, которая, однако, не является средством для точного моделирования, однако имеет широкие возможности для создания анимации.

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

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

Ядро - это библиотека основных математических функций CAD-системы, которая определяет и хранит 3D-формы, ожидая команды пользователя.

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

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

1.1 Лицензируемые ядра

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

1.2 Частные ядра

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

1.3 Ядра, доступные в исходном коде

Ядра, доступные в исходном коде подобны лицензированным ядрам. Они также разрабатываются и поддерживаются одной компанией и затем лицензируются другим компаниям для использования в CAD-приложениях.

2 Структура базовой библиотеки для создания систем геометрического моделирования

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

Рассмотрим следующую схему архитектуры ядра.

Структурная схема ядра

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

2.1 Объекты ядра

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

2.1.1 Геометрические объекты

Геометрические объекты – основополагающее звено во всем ядре. Без них невозможно говорить о графической системе или ядре. Существуют различные возможности представления геометрических объектов, однако при этом необходимо учитывать тот факт, что не все форматы данных позволяют создавать графические системы с необходимыми возможностями. Например, существует возможность задания объектов в виде полигональной модели, так называемой поверхностной сеткой. Этот формат очень простой в плане задания модели и алгоритмов, применяемых к ней. Однако он является трудоемким при обработке объектов, и к тому же сильно ограничивает возможности ядра в плане дальнейшего применения этих объектов в CAD/CAM/САЕ системах (например, построение чертежной проекции по готовой трехмерной модели, получение фасок и выполнения булевских операций). При рассмотрении некоторых CAD систем, таких как разработки компании Autodesk, можно было заметить, что наиболее удачным средством при работе с дву- и трехмерными объектами, является аналитическое описание объектов в виде сплайнов, а именно NURBS. Это мощное средство, без которого не обходится сегодня ни одна более или менее известная графическая система. Поэтому, в качестве базовой модели задания объектов было выбрано задание в виде NURBS поверхностей и кривых. Этот формат объектов является достаточно сложным и базируется на сложном математическом аппарате. Однако применение именно этого формата оптимизирует ядро во время работы системы трехмерного моделирования.

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

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

2.1.2 Вспомогательные объекты

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

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

2.1.3 Камеры и источники света

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

2.2 Блок виртуальной сцены

В этом блоке содержится информация обо всех используемых объектах. Кроме этого в этом блоке происходит управление объектами и самой сценой. Например, перемещение, вращение объектов и т.п. Сама сцена подразделяется на стандартную и проекционную. В проекционной сцене происходит так называемое построение только лишь проекций, в то время как в стандартной сцене участвуют уже готовые трехмерные объекты. Т.е. какой либо отрезок или дуга окружности будут считаться двумерными, если они принадлежат проекционной сцене и трехмерными объектами, если они находятся в стандартной сцене. При этом операции над проекционной сценой, а точнее камерой, ассоциированной с этой сценой, будут весьма ограничены.
Разделение сцены на стандартную и проекционную необходимо для двух целей: по двумерным проекциям создавать трехмерное изображение. При этом понимается полуавтоматизированное создание простейших объектов: точка, прямая линия (отрезок), участок плоскости. Задача автоматического распознавания двумерных проекций и создания по ним трехмерных изображений является достаточно сложной и выходит за рамки рассмотрения в данной работе. Вторая область применения данного разделения является создание двумерной проекции по трехмерному изображению. При этом необходимо сразу оговориться. Под проекцией в данном случае понимается не просто двумерное изображение объекта на плоскости, а изображение по правилам инженерной графики и начертательной геометрии. Эта задача также не является простой, однако решение ее все же существует. Для этого также необходимо использование параметрического задание поверхности в виде NURBS.
Весь математический аппарат, который базируется на матричных операциях, реализуется именно в этом блоке. Для этого каждый объект сцены представляет собой фактически узел сцены, с которым ассоциирована матрица, которая задает положение и ориентацию объекта в сцене или относительно родительского элемента. Подробного описания всех операций над матрицами здесь не приводится. Однако перечислим ниже базовые операции над узлами сцены:

  1. перемещение;
  2. вращение;
  3. масштабирование;
  4. добавление в иерархию;
  5. удаление из иерархии.

2.3 Блок внешних библиотек

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

Библиотеки подразделяются на следующие виды:

  1. Библиотека стандартных примитивов;
  2. Библиотека расширенных примитивов;
  3. Библиотека динамических примитивов;
  4. Библиотека составных объектов;
  5. Библиотека внешних форматов файлов.
  6. Библиотека пользовательских примитивов.

Библиотека стандартных примитивов включает простейшие базовые объекты, такие как: сфера, параллелепипед, конус, призма, пирамида, цилиндр. В библиотеку расширенных примитивов попадают объекты, которые в общем случае можно было бы отнести к стандартным примитивам, однако из-за того, что они являются более сложными, их отнесли в отдельную библиотеку. К таким объектам относятся: труба (полый цилиндр), тор, усеченный конус, капсула др.
В библиотеке динамических примитивов создаются объекты методом кинематического вращения кривой вокруг некоторой оси и методом протягивания кривой вдоль некоторой направляющей.
Библиотека создания составных объектов включает создание булевских объектов, при поддержке стандартных операций: объединение, пересечение, вычитание.
Взаимодействие библиотек с ядром основывается на внутреннем интерфейсе, разработанным специально для этих целей.

2.4 Блок конфигурации

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

2.5 Блок визуализатора

Блок визуализатора является, по сути, конечным звеном в работе ядра. Он является необязательным в том смысле, что фактически работа ядра могла бы проходить и без него, например, при выполнении булевской операции над цилиндром и сферой можно было с помощью двух функций создать два объекта (цилиндр и сферу в нашем случае) и с помощью третьей функции выполнить операцию вычитания или пересечения. Затем результат можно было бы сохранить в файл, и таким образом мы бы не пользовались услугами визуализатора. В нашем случае мы имеем встроенное средство для отображения, и таким образом снижаем трудоемкость создания среды геометрического моделирования. Блок визуализатора может в зависимости от возможностей операционной системы, на которой реализуется данное ядро и сама система настраиваться на определенные средства визуализации, например, OpenGL или DirectX.
Для того чтобы ускорить воспроизведение объектов на экран необходимо предварительно произвести оптимизацию. Оптимизация может заключаться в адаптивном аппроксимировании объектов полигонами, в зависимости от расстояния до камеры.

2.6 Внешние интерфейсы и блок управления ядром

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

  • Между ядром и внешней системой;
  • Между ядром и внешними библиотеками;
  • Между внешней системой и библиотеками.

В последнем случае связь осуществляется посредством того же ядра, однако, необходимы другие средства, которые бы позволяли внешней среде вызывать функции заложенные внутри внешних библиотек. Так как внешняя библиотека предоставляет неизвестные ядру функции, то использовать стандартный механизм вызова функций ядром попросту нельзя. Здесь на выручку приходит так называемый скрип-язык. Это в свою очередь требует наличие в ядре так называемого интерпретатора функций и скрипт-языка.
Интерфейс между внешними библиотеками также заслуживает особого внимания. Для создания гибкого ядра необходимо чтобы ядро имели между собой минимальную привязку, т.е. удаление какой либо из библиотек из набора не сказывалось никаким образом на работу самого ядра. Значит, необходим такой базовый интерфейс, который бы понимали все библиотеки. С другой стороны, во всех библиотеках будут свои функции, которые не известны ядру. Для этого в ядре предусмотрено получение количества, имен, и параметров всех функций, которые присутствуют во внешней библиотеке. При вызове из внешней среды какой-либо функции внешней библиотеки по имени мы сможем всегда найти эту функцию, имея в своем распоряжении список этих функций.
Интерфейс между ядром и внешней средой в свою очередь также можно подразделить на следующие группы функций:

  • Инициализация ядра и визуализатора;
  • Управление конфигурацией;
  • Управление сценой и объектами.

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

Выводы

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

Список литературы

  1. Метаинструментальная система автоматизированного проектирования "СПРУТ", http://www.informika.ru/text/friends/sprut/descript/sprut.html
  2. Carole Blanc, Christophe Schlick, "More Accurate Representation of Conics by NURBS ", LaBRI 1, 351 cours de la lib'eration, 33405 Talence (FRANCE), 1996
  3. Обзор ядер геометрического моделирования
    http://www.cad.dp.ua/stats/karnel.html

Главная

Диссертация

Ссылки

Библиотека