Объектом данного НИРС является процесс моделирования, который подразумевает под собой определённую группу действий или событий. Целью исследования является построения систем визуализации моделей раскроя и их модификации.
При выполнении данной работы необходимо: проанализировать способы и методы создание универсального хранилища данных, на примере построения динамически формируемого информационного файла или же другими словами - метафайл. Исследовать основные графические возможностей языка высокого уровня С#, а также рассмотреть возможность построения криволинейных поверхностей, основываясь на графической библиотеке GDI+.
В дальнейшем необходимо будет изучить и реализовать систему интерактивного конструирования моделей одежды, разработать возможность изменять модель на усмотрение пользователя.
ХРАНИЛИЩЕ, ГРАФИКА, СПЛАЙН, МЕТАФАЙЛ, ШАБЛОН, OPENGL
СОДЕРЖАНИЕ
Введение
1. Способы и методы создание хранилищ данных
2. Выбор библиотеки визуализации
2.1. Библиотека Direct3D
2.2. Библиотека OpenGL
2.3. Библиотека GDI+
3. Обзор языков высокого уровня
3.1. Язык высокого уровня С++
3.2. Язык высокого уровня С#
4. Построения криволинейных поверхностей
4.1. Сплайн Безье
4.2. Кубические сплайны
Выводы
Список использованных источников
ВВЕДЕНИЕ
Цель НИРС – исследование построения систем визуализации моделей и их модификации. В связи с поставленной целью необходимо выполнить следующие главные задачи.
1. Исследовать методы построения чертежей выкроек.
2. Изучить существующие системы визуализации.
3. Проанализировать способы реализации выкроек моделей одежды для создания системы индивидуального пошива.
Одним из наиболее популярных направлений разработки программного обеспечения на сегодняшний день является разработка систем поддержки принятия решений. Как известно, структурно любая СППР состоит из базы данных, базы моделей и средств визуализации. База данных содержит начальную информацию о решаемой задаче и результаты выполнения промежуточных шагов поиска решений. База шаблонов содержит правила и ограничения, по которым входная информация преобразуется в выходную. Средства визуализации позволяют пользователю в интерактивном режиме задавать начальную информацию о решаемой задаче, контролировать процесс выполнения реализуемых методов и алгоритмов, а также оценивать полученные решения. СППР на сегодняшний день применяются практически во всех областях знаний. В данной работе проводятся исследования возможности построения СППР для решения задачи интерактивного конструирования моделей одежды, когда пользователь по выбранному шаблону проектирует модель, добавляя к шаблону выбранные детали и преобразовывая её в соответствии с заданными размерами.
1. СПОСОБЫ И МЕТОДЫ СОЗДАНИЕ ХРАНИЛИЩ ДАННЫХ
Работая с графикой, рано или поздно возникнет задача в передаче информации от одной программы к другой. Для того чтобы наша программа могла быстро и с наименьшими трудностями сохранить данные, необходимо воспользоваться стандартом Windows - WMF. WMF - аббревиатура от "Windows Metafile Format"(Метафайл Windows). Используется для обмена графической информацией между приложениями, а также для компактного хранения информации рисования. Поддерживает векторую и растровую графику. В метафайле записаны команды интерфейса графических устройств (GDI-команды), каждая из которых описывает одну графическую функцию. Для того, чтобы отобразить метафайл, программа передает эти команды специальной функции, которая воспроизводит изображение. Метафайлы обеспечивают независимые от устройства средства хранения и выборки графической информации. В отличие от растровых файлов, хранящих графическую информацию непосредственно, а в виде пикселов, метафайлы идеально подходят для таких изображений, как карты, диаграммы, архитектурные чертежи и другие рисунки, состоящие из перекрывающихся фрагментов. Так, например, в САПР, метафайлы могут применяться для запоминания данных. Они также полезны при передаче изображений в их собственных форматах в системный буфер, для использования их другими приложениями. Если изображение может быть нарисовано с помощью команд GDI, оно может быть передано другой программе как метафайл. При этом подразумевается, что программа знает, как интерпретировать команды метафайла. Все наиболее популярные приложения используют WMF-файлы для хранения графической информации. Исходя из выше описанного, можно сказать, что для реализации универсального хранилища данных, необходимо применить метафайл-структуру, которая формируется динамически в процессе создания и дальнейшей модернизации моделей одежды. Процесс формирования можно разбить на два этапа: формирование в процессе создания шаблона, и дополнение или корректировка в дальнейшем. Первый подразумевает под собою создание некоторой информации для рисования, после того как будет создан шаблон модели по указанным размерам. Второй этап, это корректировка уже существующей информации в метафайле, т.е. когда необходима визуальная модернизация, или же дополнение новой как следствие присоединения новых, некоторых отдельно заданных деталей.
2 ВЫБОР БИБЛИОТЕКИ ВИЗУАЛИЗАЦИИ
OpenGL и Direct3D - две основные на сегодняшний день аппаратно-ускоряемые библиотеки для создания компьютерной трехмерной графики, а также библиотека GDI+ (дополненная GDI), предназначенная для работы в рамках Microsoft .NET Framework, также основанная на OpenGL и Direct3D, и представляет собою набор классов. Эти классы инкапсулируют поведение объектов и инструментов, предназначенных для рисования. Рассмотрим более подробно каждую из них.
2.1 Direct3D
Фундаментальная задача аппаратно-ускоряемого графического API — дать возможность прикладным программистам использовать последние достижения быстро развивающейся технологии ускорителей трехмерной графики и в то же время добиться хоть какой-то совместимости и унификации решений на разных аппаратных платформах.
В DirectX 9.0 функциональность DirectDraw и Direct3D объединена в единый API, названный DirectX Graphics. Direct3D — часть этого компонента и будет в центре нашего внимания. Microsoft Direct3D предоставляет программисту выбор из двух вариантов: использовать конвейер стандартных функций (fixed-function pipeline) или программируемый конвейер (programmable pipeline). Первый полагается на существующие алгоритмы, стандартизированные в Direct3D. Стандартные функции (fixed functions) предоставляются через фиксированный набор перечислимых значений по аналогии с OpenGL. Это подразумевает, что конвейеры стандартных функций и в Direct3D, и в OpenGL используют внутренние операторы switch. Некоторые из блоков case, соответствующих перечислимому значению в операторе switch, могут выполняться с аппаратным ускорением в зависимости от функциональности (возможностей) графической платы, с которой имеет дело исполняющая среда (runtime). При использовании конвейера стандартных функций в Direct3D программист сначала проверяет через исполняющую среду, поддерживает ли данная графическая плата конкретную функциональность.
Поскольку некоторые графические платы поддерживают не все функции, доступные через Direct3D, предусмотрен механизм проверки возможностей аппаратного обеспечения. Если данная функция не поддерживается аппаратно, проверка заканчивается неудачей, что позволяет программисту переключиться на другой алгоритм с аппаратным ускорением. Главное — помнить, что Direct3D-конвейер стандартных функций предоставляет доступ к аппаратной функциональности. Хотя в Direct3D есть режим чисто программной эмуляции (software-only emulation mode), также называемый эталонным устройством (reference device), он предназначен только для отладки и тестирования.
Другой, более интересный подход к проблеме параллельной эволюции аппаратного и программного обеспечения — применение программируемого конвейера. В этом случае вместо выбора предопределенного перечислимого значения и запроса к Direct3D на выполнение соответствующего алгоритма программист определяет собственный алгоритм. Исполняющая среда Direct3D динамически компилирует этот алгоритм для нижележащего аппаратного обеспечения, взаимодействуя с JIT-компилятором, который является частью драйвера устройства. За создание JIT-компиляторов для конкретных графических устройств отвечают поставщики оборудования. Таким образом, Direct3D выступает в роли графической виртуальной машины (graphics virtual machine), которая фактически виртуализирует графический процессор (GPU) на основе пользовательского набора команд для графических операций.
Хотя оба программных уровня Direct3D (управляемый и неуправляемый) предоставляются через группы объектов, не следует считать их инфраструктурой программирования прикладного уровня. Основная роль архитектуры Direct3D — обеспечить доступ к базовой функциональности решениям более высокого уровня, например API игровых движков. Чтобы упростить реализацию таких решений, библиотека расширений Direct3D (Direct3D extension library) явным образом предоставляет дополнительную функциональность. Для лучшего понимания архитектуры Direct3D вы должны разобраться не только в абстрагируемой функциональности, но и в том, как эта функциональность структурирована и как к ней обращаться. В нескольких следующих разделах мы дадим обзор основных элементов архитектуры Direct3D и обсудим, каким образом организован доступ к ним из неуправляемого COM API и управляемого уровня абстракции .NET. Как это нередко бывает в архитектурах компьютерного аппаратного обеспечения, в архитектурах аппаратного ускорения трехмерной графики применяются два способа оптимизации: конвейеризация (pipelining) и параллелизация (parallelizing). Алгоритмы, доступные через Direct3D, логически организованы в конвейер.
Конвейер Direct3D следует рассматривать как набор алгоритмов, выполняющих операции над трехмерными геометрическими величинами (3D geometric quantities), каковыми в случае Direct3D являются предопределенные вершины (vertices) и примитивы (primitives). Основное предназначение конвейера — преобразование геометрических данных в изображение, формируемое на экране. Этап тесселяции в Direct3D — разбиение на треугольники фиксированного набора предопределенных примитивов более высокого порядка, в том числе треугольных (triangle patches), прямоугольных (rectangle patches) и полигональных участков поверхностей (N patches) (хотя треугольные участки поверхности остаются наиболее распространенной формой). В настоящее время этап тесселяции нельзя программировать, поэтому Direct3D не предоставляет никаких механизмов для генерации геометрических данных на основе программируемых процедур. А такая возможность позволила бы резко уменьшить объемы данных, пересылаемых по шине. Аппаратная поддержка программирования этапа тесселяции, видимо, появится в ближайшем будущем [4].