Стандартизация в машинной графике направлена на обеспечение мобильности и переносимости прикладных программ, унификацию взаимодействия с графическим устройствами и обеспечение возможности обмена графической информацией между различными подсистемами. Использование стандартов позволяет сократить сроки разработки графических систем и увеличить их жизненный цикл. Сегодня в практике использования средств МГ применяется большое количество стандартов, различающихся по назначению и функциональным возможностям. Они имеют разную степень официальности - от фактических до международных стандартов. В статье производится попытка классификации графических стандартов и сравнения их функциональных возможностей.
Отправной точкой в работах по стандартизации графических средств следует считать 1976 год. Именно тогда во французском городе Сейлак собралось первое совещание по обсуждению графических стандартов. С этого момента графическими стандартами занимаются в различных национальных и международных организациях по стандартизации, связанных с использованием компьютеров: ISO, ANSI, NBS, DIN, ANFOR, ЕСМА и др. Кроме того, большое влияние на стандартизацию оказывают крупнейшие фирмы производители аппаратуры и программного обеспечения. С 1987 года деятельность по графическим стандартам возглавляет и координирует 24-й подкомитет первого объединенного технического комитета - ISO/IEC JTC1/SC24.
Эволюция графических стандартов естественно отражает процесс развития средств МГ - от векторной графики до систем виртуальной реальности. Перечислим проекты, оставившие наиболее заметный след в двадцатилетней истории графических стандартов:
В основе разработки графических стандартов лежит принцип виртуальных ресурсов, позволяющий разделить графическую систему на несколько слоев - прикладной, базисный и аппаратнозависимый. При этом каждый слой является виртуальным ресурсом для верхних слоев и может использовать возможности нижних слоев с помощью стандартизованных программных интерфейсов. Кроме того, графические системы могут обмениваться информацией с другими системами или подсистемами с помощью стандартизованных файлов или протоколов. В соответствий с этими соображениями первоначально были выделены три основных направления стандартизации - базисные графические системы, интерфейсы виртуального устройства, форматы обмена графическими данными.
Стандартизация базисных графических систем направлена на обеспечение мобильностй прикладных программ и основана на концепции ядра, содержащего универсальный набор графических функций, общих для большинства применений.
Наиболее известными проектами по стандартизации базисных систем являются Core System, GKS, GKS-3D, PHIGS, PHIGS+. Основное направление развития этих проектов заключалось в усилении изобразительных возможностей для визуализации геометрических объектов (2D, 3D, удаление скрытых линий и граней,полутоновая закраска, текстурирование и пр.). Стандарт на базисную графическую систему включает в себя функциональное описание и спецификации графических функций для различных языков программирования.
Концепция виртуального устройства начала разрабатываться с момента появления аппаратно-независимых графических систем. Интерфейс виртуального устройства разделяет аппаратно-зависимую и аппаратно-независимую части графической системы. Он обеспечивает заменяемость графических устройств (терминальную независимость), а также возможность работы с несколькими устройствами одновременно. Интерфейс виртуального устройства может существовать в форме программного интерфейса и/или протокола взаимодействия двух частей графической системы.Наиболее четко концепция виртуального устройства представлена в проекте CGI.
Развитие этой концепции совпало с активным перемещением графических средств на персональные компьютеры и графические станции. При этом основными интерактивными устройствами стали растровые дисплеи, а устройствами для получения твердых копий - растровые принтеры. Это привело к необходимости выделения отдельного набора растровых функций, позволяющих использовать функциональные возможности растровых устройств.
Дальнейшее развитие растровых функций связано с появлением многооконных графических систем Х Window и MS Windows (а также NeWS и Display Postscript), обеспечивших удобные средства для манипулирования растровыми изображениями. Эти средства явились основой для развития систем обработки изображений и для организации эффективного многооконного пользовательского интерфейса с использованием меню, диалоговых панелей, полос просмотра и пр. Отметим, что традиционные средства вывода геометрических примитивов (линий, дуг, многоугольников) и текстов также имеются в этих системах.
Сегодня, наиболее развитые проекты РЕХ и OpenGL неплохо совмещают основные достижения как геометрического так и растрового направления.
GKS - стандарт ISO на базисную графическую систему. Впервые опубликован в 1982 году. Принят в качестве международного стандарта в 1985 году. Разработаны спецификации GKS для языков С, Fortran, Pascal, Ada. В соответствии или с учетом стандарта GKS разработано большое количество графических систем, например GKS-3D и PHIGS.
- Функции управления обеспечивают работу с несколькими логическими рабочими станциями ввода/вывода. Одной из категорий рабочих станций является метафайл. Поддерживается таблица состояния системы, а также таблицы конфигурации и состояния рабочих станций. Имеется более 100 функций опроса возможностей и текущего состояния системы.
- Функции вывода поддерживают шесть примитивов - ломаная линия, набор маркеров, заполненная область, текст, массив ячеек и обобщенный графический примитив. Более 30 функций управления атрибутами (линий, маркеров, заполнения и текста) обеспечивают индивидуальное изменение атрибутов и объединение их в группы, связанные с рабочими станциями. Преобразование координат двухступенчатое - нормализация и преобразование рабочей станции.
- Поддерживается сегментация. Атрибуты сегментов - видимость, укайуемость, выделенность, приоритет, преобразование. Сегменты могут копироваться на рабочую станцию, удаляться, включаться в другие сегменты.
- Растровые функции отсутствуют. Используемая цветовая модель - индексированная таблица RGB (Red-Green-Blue).
- Функции ввода поддерживают логические устройства ввода координат, линий, чисел, текстовых строк, а также устройства выбора и указания. Устройства ввода могут работать в режимах запроса, опроса и обработки событий.
MGKS или MiniGKS - сокращенные варианты GKS без сегментации и с минимальным количеством функций опроса. Эти проекты прошли мимо внимания разработчиков стандартов но были поддержаны многими разработчиками конкретных графических систем.
GKS-N или New GKS, проект обсуждавшийся в ISO (1989 год) направлен на улучшение функциональных характеристик GKS. Заметно явное влияние проекта CGI. Последующих публикаций не было.
PostScript (Adobe Systems, 1985) - язык описания страниц для растровых печатающих устройств. Отличительная особенность - широкие изобразительные возможности при минимальном наборе графических функций. Множество графических систем и настольных издательских систем поддерживают PostScript. Некоторые производители лазерных принтеров обеспечивают его аппаратную поддержку. PostScript использован для выполнения графических функций в многооконных системах NeWS и Display PostScript. Привлекательные свойства этого языка способствовали появлению его трехмерных расширений.
Широкие изобразительные возможности языка PostScript обеспечены понятием траектории (path), которая может быть составлена из линий, дуг, сегментов кривой Безье и текстовых символов. В процессе вывода траектории могут подвергаться произвольным линейным преобразованиям. Замкнутые траектории могут быть закрашены, заполнены растровым образцом (pixmap) или заштрихованы другими траекториями. Заполнение может производится по различным правилам (even-осЫ, nonzero-winding-number). Линии могут быть различного типа, переменной толщины и иметь скругления в точках соединения. Работа с текстами происходит на основе богатой библиотеки шрифтов. Поддерживается несколько цветовых моделей - RGB, CMY (CyanMagenta- Yellow) и HSV (Hue-Saturation-Value).
CGI - проект стандарта (ISO, 1986) на интерфейс виртуального устройства. На стадии обсуждения этот проект фигурировал в публикациях под названием VDI. CGI ориентирован не на прикладных, а на системных программистов, занимающихся разработкой графических систем. Функциональные возможности CGI сформированы с учетом разработанных ранее проектов GKS и CGM (Computer Graphics Metafile). Заметно влияние проектов PostScript и Х Window System.
- Функции вывода поддерживают работу с линиями, многоугольниками, прямоугольниками, маркерами, текстами, дугами, секторами и сегментами круга и эллипса, а также замкнутыми фигурами, составленными из этих примитивов. Замкнутые объекты могут закрашиваться, заштриховываться или заполняться растровым образцом. Набор атрибутов CGI аналогичен набору атрибутов GKS. Конвейер преобразования ограничен преобразованием рабочей станции.
- Функции сегментации аналогичны имеющимся в GKS.
- Растровые функции поддерживают работу с отображаемыми и виртуальными битовыми картами. Первые являются частью видеопамяти устройства. Вторые могут быть полноцветными или двухцветными матрицами пикселов в неотображаемой памяти. Двухцветные виртуальные битовые карты могут служить в качестве маски для операции заполнения областей, а также для задания символов, маркеров, курсоров и пр. Атрибутами карт являются прозрачность, основной и фоновый цвет. Введены различные режимы наложения цветов при выводе пикселов (and, or, xor, ...).
- Функции ввода аналогичны имеющимся в GKS с некоторыми дополнениями. Введено понятие триггера, позволяющего установить режим срабатывания отдельных устройств в зависимости от некоторого события. Более четко, определены понятия подсказки, эха и подтверждения. Введены два новых логических устройства ввода - растровая область и обобщенное устройство ввода.
Х Window System - многооконная графическая система, разработанная в Массачусетском Технологическом институте. Первые публикации появились в 1986 году. Одна из основных целей разработки - обеспечение сетевой прозрачности и возможности использования широкого спектра цветных и монохромных графических станций.
- Система разделена на две части, клиент и сервер, взаимодействующие с помощью Х-протокола. Прикладному программисту предоставлена библиотека базисных функций Х Lib и надстроенная над ней библиотека инструментальных средств Х Toolkit. Функции управления обеспечивают возможность манипулирования системой окон и контроля за действиями пользователя. Параметры графических функций включают в себя идентификаторы дисплея и окна, а также графический контекст, содержащий значения атрибутов и другие параметры отображения.
- Функции вывода обеспечивают изображение точек, линий, дуг, окружностей, прямоугольников, а также заполнение многоугольников, секторов, сегментов и прямоугольников. Аналогично языку PostScript имеются атрибуты, определяющие способ скругления ломаных линий и правило заполнения. Функции вывода текстов поддерживаются богатой библиотекой шрифтов. Конвейер преобразования координат отсутствует.
- Структуризация или сегментация данных не поддерживается.
- Растровые функции обеспечивают широкие возможности для манипулирования с битовыми и пиксельными матрицами (Bitmap, Pixmap). Кроме того, пиксельные матрицы могут использоваться в качестве образца заполнения, а битовые - в качестве маски отсечения. Используемая цветовая модель - RGB.
- Функции ввода на базисном уровне обеспечивают развитый механизм обработки событий, от мыши и клавиатуры. Функции более высокого уровня (Х Toolkit и библиотека виджетов) обеспечивают работу с меню, диалоговыми панелями, полосами просмотра и пр.
Microsoft Windows - многооконная надстройка над операционной системой MS DOS на IBM РС. Версия Windows NT трансформировалась в полноценную операционную систему. Обеспечивает многозадачный режим. Графические функции системы аналогичны имеющимся в Х Window, однако в параметрах функций нет идентификатора дисплея. Поддерживается метафайл.
NeWs (Sun Microsystems, 1987) и Display Postscript (Adobe Systems,1990) - многооконные графическиесистемы, в основе которых лежит PostScript. Обладают эффективными графическими возможностями, унаследованными от языка PostScript. В системе NeWS появились 3D траектории.
Core System - первый проект (ANSI) по стандартизации базисной графической сиетемы. Функциональное описание было опубликовано в 1977 году. На этот проект были замкнуты усилия многих разработчиков графических средств в течение последующих 5 лет. Построен на концепции рисующего элемента (2D и 3D) и обеспечивает работу только с линиями, маркерами и текстами. Для управлениями параметрами проектирования используется аналогия с камерой. Поддерживается сегментация. После появления стандартов GKS-3D и PHIGS проект Core System потерял свою актуальность.
GKS-3D - расширенный вариант GKS (ISO, 1987), позволяющий работать с трехмерными графическими объектами. В этот проект включены следующие дополнительные (по отношению к GKS) возможности:
- Функции вывода дополнены семью 3D-примитивами - те же, что в GKS с приставкой 3D и набор заполняемых областей 3D. Для последнего примитива введены атрибуты контура, аналогичные атрибутам линий. Введен атрибут для управления алгоритмами удаления скрытых линий и граней. Введены 3D-преобразования 3D-нормализация, видовое преобразование, 3D-преобразование рабочей станции. Видовое преобразование позволяет производить параллельное и центральное проецирование.
- Функции сегментации расширены возможностью работы с 3D-сегментами. Введено преобразование 3D-сегментов.
- Функции ввода дополнены двумя логическими устройствами для ввода координат 3D и линий 3D.
XGKS, GEX - проекты объединения систем Х Window и GKS/GKS-3D. Обсуждались в литературе по стандартизации, но не получили дальнейшего развития.
PHIGS - альтернативный по отношению к GKS-3D стандарт (ANSI-1986, ISO-1989), обеспечивающий возможность интерактивных манипуляций с иерархически структурированными графическими объектами. Получил дальнейшее развитие в проектах PHIGS+ и РЕХ. Сравнительные с GKS-3D характеристики следующие:
- Набор примитивов и атрибутов аналогичен имеющимся в GKS-3D. Поддерживается несколько цветовых моделей - RGB, CIE (Commission Internationale de l'Eclairage), HSV (Hue-Saturation-Value), HLS (Hue-Lightness-Saturation). Вместо 3D преобразования нормализации введено модельное преобразование.
- Вместо сегментов введены иерархические структуры данных. Структуры могут включать в себя примитивы, атрибуты, преобразования, неграфические данные, а также ссылки на другие структуры. Средства редактирования позволяют удалять и копировать элементы структур. Включен механизм фильтрации, осуществляющий выборочное отображение элементов, их выделение и пр.
PHIGS+(или PHIGS-PLUS) - проект расширения PHIGS (ISO/ANSI Draft 1990), направленный на обеспечение основных требований прикладных программ в области - освещения, полутоновой закраски и эффективного описания сложных поверхностей. Для этих целей в PHIGS+ включен следующий набор примитивов:
Примитивы, имеющие суффикс "с данными" позволяют включить дополнительную информацию, являющуюся частью определения примитива. Например, в случае набора треугольников для каждой грани и/или вершины можно задать комбинации цвета, нормаль и прикладные данные. Далее, существует механизм управления, позволяющий определить, какие данные следует использовать, а какие пропустить во время отображения. PHIGS+ различает переднюю и заднюю поверхности грани на основе геометрической нормали. Различные значения цвета и другие атрибуты могут быть определены для передней и задней граней. Для вычисления освещенности кроме геометрических характеристик задаются отражательные свойства поверхности, а также расположение источников цвета и их характеристики.
РЕХ (MIT Х Consortium) - проект расширения системы Х Window для поддержки PHIGS+. Первоначальная версия XPHIGS 1.0 - 1987 год, последняя версия PEX 6.0 - 1992 год. Одна из двух систем (другая - OpenGL), обеспечивающих наиболее развитые на сегодняшний день инструментальные средства для построения реалистичных изображений. Суть проекта РЕХ состоит в описании механизма расширения Х-протокола и Х-сервера для обеспечения функций PHIGS+, что, в первую очередь, предназначено для системных программистов. С точки зрения прикладного программиста функциональные возможности РЕХ в части изображения пространственных объектов соответствуют системе PHIGS+. Однако, начиная с версии 5.2 в РЕХ появились новые возможности, обеспечивающие устранение ступенчатости (antialiasing) и текстурирование поверхностей. Средства работы с растровыми изображениями поддерживаются с помощью Х Window и дополнительных расширений.
OpenGL - стандарт, предложенный компанией Silicon Graphics в 1993 году, регламентирующий интерфейс прикладного программиста. Предшественником этого проекта является IRIS GL (SGI 1988 г.). Изначально ориентирован на работу в системе Х Window. О поддержке OpenGL сообщали почти все ведущие фирмы-производители, в частности ОС Windows NT имеет этот стандарт в своем комплекте. По функциональным возможностям OpenGL примерно соответствует системе РЕХ последних версий, но несколько отличается по стилю программирования. Кроме того, в отличие от РЕХ, имеет собственные развитые средства для работы с растровыми изображениями.
Стандарты обмена графическими данными можно условно разделить на сдедующие группы:
Графический метафайл представляет собой описание изображения в функциях виртуального графического устройства (в терминах примитивов и атрибутов). Он обеспечивает возможность запоминать графическую информацию единым образом, передавать ее между различными системами и интерпретировать для вывода на различные устройства. Характеристики метафайла определяются его функциональными возможностями и способом кодирования информации.
Метафайл обычно разрабатывается как составная часть какой либо графической системы. При этом его функциональные возможности однозначно соответствуют возможностям этой системы. Способ кодирования выбирается в по с одному из следующих критериев:
В зависимости от выбранного способа кодирования метафайл может использоваться в качестве средства хранения и передачи изображений, протокола взаимодействия отдельных подсистем, языка описания изображений.
GKSM - стандарт de-facto на графический метафайл в рамках системы GKS (приложение "Е" к стандарту GKS). По функциональным возможностям GKSM полностью соответствует системе GKS, поэтому он легко интерпретируется в соответствующих стандарту системах GKS. Кодирование в GKSM текстовое, что позволяет просматривать и редактировать метафайл GKS.
CGM - стандарт ISO на графический метафайл. Функционально CGM соответствует стандарту CGI. В CGM предусмотрены три способа кодирования - символьное, двоичное и текстовое. Символьное кодирование наиболее компактно и предназначено для хранения и транспортировки информации. Двоичное кодирование требует минимальных усилий по кодированию/декодированию и предназначено для внутрисистемного использования. Текстовое кодирование наиболее наглядно и обеспечивает возможность визуального просмотра и редактирования графических файлов.
NAPLPS - стандарт на представление графических данных в сетях VIDEOTEX. Основными требованиями при разработке этого протокола были следующие: возможность передачи графической информации в потоке алфавитно-цифровых данных, минимальность объема передаваемых данных, минимальность усилий для интерпретации и возможность вывода изображений на простейшие устройства. Обеспечение этих требований привело к тому, что был разработан эффективный способ упаковки графической информации в семи- или восьмибитные коды ASCII. Эти же требования привели к ограничению функциональных возможностей протокола, что не позволяет получить высокое качество изображений при использовании. современных графических устройств.
HPG - стандарт компании Hewlett-Packard на протокол взаимодействия с графическими устройствами (в первую очередь графопостроителями), выпускаемыми этой фирмой. Он содержит небольшое количество графических функций, легко читается и интерпретируется. В некоторых графических системах на персональных компьютерах HPGL используется в качестве графического метафайла.
PostScript - является языком описания страниц для электронных печатающих устройств, в первую очередь лазерных принтеров. Он обеспечивает возможность получения высококачественных документов на устройствах разного разрешения. PostScript обладает широкими возможностям для описания сложных изображений. Естественно, что вследствие наглядности PostScript, как и другие языки программирования, неоптимален в смысле минимальности кодирования информации. Поэтому его использование в качестве графического метафайла представляется нецелесообразным. Однако он становится незаменим при передаче тексто-графических документов, предназначенных для воспроизведения на печатающих устройствах с высоким разрешением.
WMF, GEM, PIC, SLD и др. - это локальные стандарты на метафайл в рамках соответствующих программных систем. Прикладные или проблемно-ориентированные графические протоколы обеспечивают наиболее эффективный способ хранения и передачи графических данных в прикладных системах. Кодирование информации в этих протоколах производится без потери семантики и в наиболее сжатой форме, что обеспечивает минимальность объема хранящейся или передаваемой информации и допускает свободу в выборе различных способов графического представления данных.
Сегодня в части стандартизации прикладных графических протоколов наиболее проработанной является область машиностроительных и электронных САПР. Здесь уже имеется ряд отраслевых и международных стандартов:
В других отраслях существуют пока только локальные стандарты, используемые в рамках одной или нескольких организаций.
Растровые графические файлы стали активно применяться для хранения и транспортировки графической информации, в системах обработки данных и подготовки научно-технической документации, использующих персональные компьютеры, а также лазерные и струйные печатающие устройства. Основными характеристиками растровых файлов являются метод упаковки (сжатия) информации и тип поддерживаемой цветовой модели.
Первоначально растровые файлы содержали только статические изображения.- В последнее время появились проекты по стандартизации форматов динамических (анимационных) изображений. Сегодня используется уже большое количество разнообразных форматов растровых файлов. Некоторые из них (например GIF, TIFF, РСХ) получили широкое распространение и поддержку., другие ждут общественного признания, третьи поддерживаются только их разработчиками.
AVI - Microsoft Animation VIdeo GIF формат разработан в CompuServe Incorporation для хранения и транспортировки растровых изображений. Поддерживаемая цветовая модель - индексированные цветные изображения. Использует метод кодирования LZW (Lempel, Ziv & Welch), дающий высокий коэффициент сжатия. Позволяет содержать в одном файле несколько изображений, не связанных между собой. Поддерживается многими разработчиками графических систем. TIFF разработан фирмами Aldus и Microsoft главным образом для настольных издательских систем. Распространенность этого формата обусловлена его гибкостью в части поддерживаемых способов кодирования и цветовых моделей изображения. TIFF поддерживает двух-уровневые (bi-level), монохромные (gray-scale), индексированные цветные (paletted color), и полные цветные (full RGB) изображения. Для кодирования различных изображений или его частей могут применяться различные методы, в частности LZW. Кроме того TIFF содержит метрические характеристики изображения - размер, плотность и пр. Предусмотрена возможность записи в один файл нескольких изображений и/или копий одного изображения с различными метрическими характеристиками. РСХ формат распространен на ПК и поддерживается множеством графических редакторов и настольных издательских систем. В РСХ используется попутное или потоковое сжатие на основе учета повторяющихся серий. Этот метод, по сравнению с LZW, дает более низкий коэффициент сжатия, однако время, требуемое для чтения/записи упакованного таким способом файла, практически равно времени чтения/записи исходного файла. Это дает преимущества при использовании РСХ формата в интерактивных системах с быстрой сменой изображений.
JPEG - стандарт ISO, ориентированный на цифровое описание (сжатие и кодирование) фотоизображений. Он предусматривает возможность частичной потери информации без визуального ухудшения качества изображения.
MPEG - стандарт ISO, предназначенный для кодирования динамических изображений и связанной с ними звуковой информации.
ВМР, LBM, PIC, IMG, CUT, FLC и множество других форматов являются локальными стандартами на представление растровых изображений в рамках соответствующих программных систем.
Рассмотренные графические стандарты отражают процесс развития машинной графики от векторных систем к системам генерации реалистичных изображений. Следующее поколение стандартов будет связано уже с развитием систем мультимедиа, гипермедиа и виртуальной реальности, в которых графическая информация объединяется с любой другой.
[1] D.B. Arnold, D.А. Duce, "ISO Standards for Computer Graphics - The First Generation", Buttenoorths (1990).
[2] K.W. Brodlie, F.R.A. Hopgood, D.A. Duce, "Second Generation Computer Graphics Standards", RAL 89-097, Rutherford Appleton Laboratory (1989).
[3] D.B. Arnold and P.R. Bono, "CGM and CGI - Metafile and Interface Standards for Computer Graphics", Springer-Verlag (1988).
[4] G. Enderle, К. Kansy, and G. Pfaff, "Computer Graphics Programming, GKS - The Graphics Standard", Springer-Verlag (1987).
[5] R.J. Hubbold, W.T. Hewit, "GKS-3D and PHIGS - Theory and Practice", Tutorial, Zurographics'88 (1988). [6] Jones Oliver, "Introduction to the X Window System", Prentice-Hall (1989).
[7] W. Roberts, М. Slater, К. Drake, А. Simmins, А. Davison, Р. Williams, "First Impression of NeWS", Computer Graphics Forum, v.7, n.1, 1998.
[8] S.W. Thomas, "X and РЕХ Programming", Tutorial Note, Eurographics '90 (1990).
[9] Jan Hardenbergh, "РЕХ Programming. А Mixture of PHIGS, PZXlib, Х and Motif", EG92 TNI, Zurographics Technica/ Report Series.
[10] Randi Л. Rost, "Comparing OpenGL and РЕХ, Tutorial Notes, Eurographics '94 (1994).
[11] G.L.Graef, "Grnphics formats", Byte, 305-310 (Sept. 1990). [12] P.R.Wilson, "A Short History of CAD Data Transfer Standarts", ЕЕ CG&A, Jun 1987 рр.64-67.