Сегодня мы стоим на пороге новой волны стандартизации в машинной графике. В ответ на требования новых презентационных технологий, включающих мультимедиа и ее предельное состояние - виртуальную реальность, появились две спецификации, регламентируюшие различные аспекты работы с графическими образами. Первая - это язык Virtual Realily Modeling Language (VRML), предлагаемый в качестве средства для описания процесса интерактивного взаимодействия множества субъектов, накодящихся в виртуальном пространстве, распределенном, благодаря возможностям Internet, по всему миру. Второй является спецификация ISO/IEC JTC1/SC24 PREMO, PResentation Environment for Multimedia 0bjects, получившая свое развитие из стандартов CAD/CAM.
История создания VRML
Всю историю развития глобальной сети Internet можно разделить на три фазы. Первая, разработка стандарта TCP/IP, позволившего создавать и распространять различного рода документы независимо от используемой аппаратуры. Это дало возможность добиться необходимого уровня независимости между наборами данных и их обработкой на компьютерах. Но кроме явной пользы такое абстрагирование несло в себе определенное неудобство - без ясного представления о том, что и где лежит на сети Internet, его сокровища были доступны лишь узкому кругу системных администраторов, имеющих необходимые средства навигации. Вторая, в ЦЕРНе была разработана гипертекстовая система, получившая название World Wide Web [1], которая добавила следующий уровень абстракции к существующим сетевым структурам. С помощью предложенной схемы адресации или уникального идентификатора URL (Universal Resource Locator) можно было узнать, куда требуется зайти, чтобы взять информацию - страницу Web. Однако и здесь пользователей подстерегали определенные трудности - при всей своей прогрессивности новая схема организации доступа к Internet не позволяет получать рельефное представление о взаимосвязях различных частей информации. Иными словами, указание, как взять одну страницу, например "http//www.ibm.com/", еще достаточно далеко от нормального человеческого восприятия. Фактически пользователь должен прикладывать дополнительные усилия по навигации в море Web-страниц, постоянно контролируя свое текущее местоположение.
Еще одна из самых последних тенденций - персонификация работы с данными в Internet, при которой информация становится все более осязаемой. Спецификации VRML являются одной из первых попыток разместить человека в Центре Internet и создать все условия для удовлетворения любых его запросов. Сделать это немыслимо без соответствующих стандартов, регламентирующих возможности и пути реализации систем, формирующих восприятие информации человеком. Универсальный описательный язык Virtual Reality Modeling Language как раз и может стать таким стандартом, специфицирующим диалог многих субъектов.
Все три компонента - хранение, воспроизведение и персонификация - аналогичны процессу человеческого мышления. Как только произошло какое-либо событие, информация о нем записывается в память, где на основе уже имеющихся данных формируются новые ассоциации, а после сравнения с аналогичными событиями уточняется общая картина мира.
Впервые речь о VRML зашла весной 1994 года, когда в Женеве проходила первая конференция по World Wide Web. Отец WWW Тим Бернерс-Ли и его коллеги организовали тогда диспут по виртуальным интерфейсам, включающим уже существующие к тому времени проекты встраивания трехмерной графики в страницы Web. Естественным вопросом, возникшим во время дискуссии было создание открытого, общепринятого языка, позволяющего описывать трехмерные сцены и увязывать их с гиперсвязями, принятыми в WWW - что-то типа HTML [2], но применительно к виртуальной реальности. Так возник термин Virtual Reality Markup Language (VRML), где слово 'Markup' было позднее заменено на 'Modeling' для того, чтобы подчеркнуть графическую сущность VRML. После серии сетевых консультаций осенью того же года появилась первая версия VRML.
Естественно, что VRML создавался не на пустом месте и после анализа существующих технологий из многих претендентов был выбран формат Open Inventor ASCII File Format (IFF) фирмы SGI. Данный формат поддерживает полное описание трехмерных сцен с полигональными объектами, механизмом освещения, заданием свойств материала и различных дополнительных свойств, придающих изображению максимальную реалистичность. Подмножество IFF, расширенное сетевыми возможностями, было положено в основу базовых форм VRML. После некоторых дополнений формата со стороны SGI он был опубликован как открытый стандарт.
Требования к VRML
Основными требованиями к стандарту VRML было обеспечение аппаратной независимости, расширяемость и способность работы с низкоскоростными сетями. Необходимо заметить, что VRML не является расширением HTML, который предназначался для работы исключительно с текстовой, а не графической информацией. Кроме этого, VRML более приспособлен к работе в сетевом окружении в предположении, что типичная сцена VRML составлена из множества включаемых (inline) объектов, размещенных на серверах, число которых намного превышает количество, типичное для документа HTML. К тому же HTML получил признание как стандарт для работы с уже существующими приложениями, что сильно повлияло на его структуру. Как сетевой язык VRML будет развиваться полностью независимо от HTML.
Первая версия VRML пока не содержит интерактивного режима - это было сделано сознательно, чтобы не создавать конфронтации между существующими языками описания интерактивного диалога, которая грозила бы вылиться в месяцы и годы взаимных согласований. С точки зрения разработчиков, разумнее сконцентрировать усилия на создании средств межобъектного взаимодействия типа CORBA или OLE, до сих пор отсутствующих внутри WWW.
Объекты виртуального мира, созданного с помощью VRML, могут содержать объекты из других миров, документов HTML или типов MIME [3]. При выборе объекта загружается либо соответствующий визуализатор MIME, либо программа просмотра VRML.
Описание языка
В стандарте содержится определение шести разделов спецификации языка VRML основные конструкции, базовая координатная система, поля, узлы, размножение, расширение.
Основные конструкции
На верхнем уровне абстракции в VRML размещаются объекты, которые можно считывать и записывать. Теоретически объекты могут содержать все допустимые в языке сущности: трехмерную геометрию, образы JPEG и т.п. Объекты, используемые для представления трехмерной графики, называются узлами, иерархическая совокупность которых образует граф сцен, каждая из которых является не просто набором узлов, а определяет еще и условия их визуализации путем задания нотации состояния, определяемой ранее созданными узлами сцены. Например, узлы Rotation или Material задают условия поворота и характеристики материала для всех последующих узлов сцены.
Все узлы могут иметь имя, тип (Cube, Sphere, Texture, Transformation и т.п.) и поля, задающие характеристики узла, отличающие его от другого узла того же типа (радиус, шаблон, текстуры). Узлы могут образовывать иерархическую совокупность, при которой один родительский узел может содержать несколько потомков, расположенных на более низком уровне. Для определения узла принят следующий синтаксис:
DEF иия объекта тип { поля потомок }
Следующий пример дает представление о структуре программ на языке VRML и содержит описание простой сцены, состоящей из красного конуса и синей сферы, освещенных прямым светом:
#VRML V1.0 ascii Separator { DirectionalLight { direction 0 0 - 1 # направление луча света от наблюдателя к сцене { PerspectiveCamera { position - 8.6 2.1 5.6 orientation -0.1352 -0.9831 -0.1233 1.1417 focalDistance 10.84 } Separator { # Красная сфера Material { diffuseColor 1 0 0 # Установка цвета - красный } Translation { translation 3 0 1 } Sphere { radius 2.3 } } Separator { # Синий куб Material { diffuseColor 0 0 1 # Установка синего цвета } Transform ( translation -2.4 .2 1 rotaon 0 1 1 .9 } Cube {} } }
Система координат
В VRML используется прямоугольная, правосторонняя трехмерная система координат. По умолчанию объекты проецируются на плоскость в положительном направлении оси Z, а для изменения направления используется камера или модельное преобразование.
Поля
Различают два типа полей: содержащие единственное значение (одно число, вектор или картинка) и поля с множеством значений. Первые имеют имена, начинающиеся с префикса "SF", а вторые - с "MF".
Поле типа SFBools содержит булевы значения (true or false), а значения цвета задаются полем SFColors в нотации тройки RGB вещественных чисел от 0.0 до 1.0, как и в промышленном стандарте OpenGL, что позволяет указывать теоретически бесконечное число цветовых оттенков. Поле типа SFImages содержит неупакованное изображение плоской цветной картинки, задаваемое габаритами: "width", "height" и количеством пикселей. Возможно также однокомпонентное задание интенсивности освещенности картинки, например: OxFF - это полная освещенность, а Ох00 - полная темнота. При двухкомпонентном задании указывается значение интенсивности и значение прозрачности. Для трех- и четырехкомпонентного задания указываются интенсивности по шкале RGB отдельно по каждому цвету. Например, запись 1 2 1 OXFF OXOO определяет черно-белую картинку шириной в один пиксель и высотой в два пикселя, нижний из которых белого цвета, а верхний черный.
Поля SFMatrices задают матрицу преобразований, состоящую из 16 вещественных чисел, расположенных построчно, например матрица сдвига вдоль оси Х на 7.3 единиц будет иметь следующий вид:
0 0 0 0 1 0 0 0 0 1 0 7.3 0 0 1
В стандарте предусмотрены также поля, задающие поворот вокруг одной из осей. Например, чтобы повернуть сцену вокруг оси Y на 180, необходимо указать:
1 0 3.14159265
Множественные поля содержат более одного значения, заключенных в скобки, например, поле MFColors определяет сразу несколько цветовых оттенков - красный, зеленый и синий - через триплеты RGB:
1.0 0.0 0.0, 0 1 0, 0 0 1 ]
Поля с префиксом "MF" используются также для задания векторных значений, например: MFVec2fs - вектор на плоскости, а MFVec3fs - вектор в трехмерном пространстве.
Узлы
Все 36 узлов в VRML делятся на три категории: формы, свойства и группы. Первые определяют геометрию сцены, вторые задаюсь условия визуализации первых, а третьи используются для объединения нескольких узлов в одно целое.
В категорию форм входят следующие узлы: AsciiText, Cone, Cube, Cylinder, IndexedFaceSet, IndexedLineSet, PointSet и Sphere.
В категорию свойств: Coordinate3, FontStyle, Info, LOD, Material, MaterialBinding, Normal, NormalBinding, Texture2, Texture2Transform, TextureCoordinate2, ShapeHints Matrix Transform, Rotation, Scale, Transform, Translation OrthographicCamera, PerspectiveCamera, Directional ight, PointLight, SpotLight.
Узлы, входящие в категорию "группа" - это: Group, Separator, Switch, TransformSeparator, WWWAnchor.
Отдельно различается узел WWWInline, не входящий ни в одну из категорий.
Смысл узлов следует из их названия, поэтому мы не будем подробно описывать все типы, обратим внимание лишь на наиболее характерные. Кроме задания геометрии объектов, их свойств и характеристик материала в стандарте с помощью различных типов камер можно управлять положением наблюдателя. Ортогональная камера определяет параллельную проекцию сцены без учета перспективы, которой можно управлять, если выбрать PerspectiveCamera. По умолчанию камеры размещаются в точке с координатами (0,0,1) и направлены вдоль отрицательного направления оси Z. Программы, используемые для просмотра файлов VRML, позволяют изменять положение камеры, предоставляя пользователю возможность свободно перемещаться внутри виртуального пространства.
Порядок работы с потомками задается в узле Switch, определяющем, кто из потомков будет иметь заданные родителем свойства.
Расширенные возможности работы с текстурами являются одним из достижений стандарта. Кроме определения текстуры в поле Texture2, либо заданной в виде локального шаблона, либо считанной по URL из удаленного сервера, можно задавать любые преобразования и местоположение текстуры. Узел группы WWWAnchor загружает новую сцену в программу просмотра файла VRML после выбора очередного потомка. Имя сцены задается обычно в форме URL. Узел WWWInline считывает потомка из любого места WWW и задерживает его визуализацию до особого распоряжения, в качестве которого может быть, например, завершение процесса установки параметров.
Размножение
Узел может быть потомком более чем одной группы, поэтому в стандарте было введено понятие "размножение" или многократное использование одного и того же экземпляра узла в разных структурах. Данное понятие аналогично процедуре в универсальных языках программирования: конструкция "DEF" определяет имя размножаемого узла и создает его экземпляр, а с помощью команды "USE" происходит вызов (размножение) всех ранее созданных экземпляров. В результате выполнения следующего примера будет выведено три сферы: одна большая с именем Jack и две одинаковых поменьше с именем Kati.
Separator { DEF Jack Sphere { } Translation { translation 2 0 0 } Separator { DEF Kati Sphere { radius .2 } Translation { translation 2 0 0 } } USE Kati # radius .2 sphere will be used here }
Расширяемость
Возможность расширения предусмотрена с целью поддержки работы с автоматически определяемыми узлами, которые не являются частью стандарта. Например, если бы в стандарте отсутствовал узел типа "куб", его можно было бы вывести следующим образом:
Cube { fields [ SFFloat width, SFPloat height, SFFloat depth ] width 10 height 4 depth 3 }
Кроме этого новые типы узлов можно задавать через уже существующие. В этом случае новые узлы определяются путем задания дополнительного параметра 'isA' поля MFStririg. Например, новый тип "Material" под названием "ExtendedMaterial", имеющий особые свойства отражения может быть определен следующим образом:
ExtendedMaterial { fields [ MFString isA, MFFloat indexOfRefraction, MFColor ambientColor, MFColor diffuseColor, MFColor specularColor, MFColor emissiveColor, MFFloat shininess, MFFloat transparency ] isA [ "Material" ] indexOfRefraction .34 diffuseColor .8 .54 1 }
PREMO - новый стандарт МГ и мультимедиа
Исходная спецификация PREMO [4], предложенная группой ISO/IEC JTC 1/SC 24/WG 6, положила начало разработке нового стандарта для систем МГ и мультимедиа. В сферу влияния стандарта входит спецификация среды программирования для систем презентации, позволяющих конструировать и взаимодействовать с различными компьютерными средами. Объектами таких сред может быть МГ, анимация, аудио, видео и любые другие "медиа", несущие в себе презентационную нагрузку. Разработчики PREMO ставили перед собой задачу создания развивающегося стандарта, способного учитывать быстроменяющиеся реалии компьютерного мира, обеспечивающего взаимодействие как с уже существующими стандартизированными системами типа CAD/CAM, так и с будущими спецификациями. Для осуществления интеграции всех этих частей в единую среду программирования в стандарте предусмотрен специальный интерфейс, зависящий от конкретной аппаратуры и учитывающий особенности физической конфигурации. Стандарт призван одновременно работать со многими технологиями, позволяя гибко настраиваться на специфику конкретной прикладной области.
Для достижения перечисленных целей в основу стандарта была положена объектно-ориентированная архитектура. Сам стандарт не зависит от особенностей конкретного объектноориентированного языка программирования и позволяет создавать свои конструкции в языках, не являющихся объектноориентированными.
Требования к стандарту
В рамках предварительной спецификации ISO было сформулировано три главных требования, предъявляемых к PREMO конфигурируемость, расширяемость и простота.
Конфигурируемость предполагает создание единой оболочки, где будут сосуществовать различные компоненты, доступ к каждому из которых будет возможен со стороны приложений.
Расширяемость предполагает дополнение существующего ядра PREMO возможностями, необходимыми для новых прикладных отраслей. Пользователи PREMO должны иметь возможность с помощью специального аппарата встраивать свои собственные расширения.
Простота означает, что PREMO основывается на единой архитектуре, в рамках которой могут быть использованы различные компоненты, задаваемые по принципу "черного ящика" только через последовательность входов и выходов без конкретизации внутренних особенностей реализации.
Базовые объекты
Все входящие в состав стандарта компоненты будут использовать набор сервисных средств, реализуемых базовыми объектами: элементарные, обрабатывающие, связующие, управляющие, событийные и агрегирующие.
Элементарные объекты присутствуют во всех средах PREMO и имеют семантику, определяемую конкретным интерфейсом. Типичными примерами таких объектов являются геометрические сущности: двух- и трехмерные точки, цвет, матрицы и т.п. вместе с соответствующими операциями и атрибутами. Обрабатывающие объекты обеспечивают инкапсуляцию определенной функциональности, их главная задача - обработка элементарных объектов и порождение из них новых. В качестве примеров таких объектов можно назвать объекты, генерирующие ломаные линии или массивы векторов и пикселей, попадающих далее к связующим объектам, задача которых - объединить систему PREMO с внешними к ней средами. Связующие объекты могут экспортировать данные из PREMO или импортировать данные извне. Управляющими объектами являются самоуправляемые и программируемые машины с конечным числом состояний. Данные объекты используются в качестве синхронизирующих или интерактивных средств. Событийные объекты обеспечивают обработку событий, происходящих в системе. И, наконец, агрегирующие объекты используются для управления совокупностями объектов: списками, наборами, графами и таблицами.
Компонент в PREMO - это комплект объектов и других данных, работающих вместе в соответствии с указанной дисциплиной. Для презентации и моделирования элементарных объектов используются объекты сцены, которые обеспечивают интерфейсы с обрабатывающими объектами. Несколько объектов сцены могут объединяться в одну сцену. При визуализации деталей сцены происходит их обработка с помощью камеры, выходом которой может быть битовая карта или данные для графопостроителя, выводимые на конкретное физическое устройство средствами связующих объектов.
Взаимодействие с системами САПР
Одним из факторов, сдерживающих сегодня развитие систем виртуальной реальности, является необходимость чтения данных, подготовленных различными системами автоматизированного проектирования. Сегодня большинство таких систем умеют формировать на выходе стандартные файлы типа IGES или STEP [5], информация из которых может быть представлена далее в любой мультимедийной форме.
Согласно концепции PREMO, системы САПР образуют только одну из прикладных областей нового стандарта, поэтому совсем необязательно, чтобы все функциональные возможности, например STEP, были включены в PREMO, вполне достаточно иметь согласование на уровне геометрии, презентационных атрибутов, модели управления камерой и анимации [6].
Вся предусмотренная стандартом PHIGS+ геометрия доступна в PREMO, а остальные примитивы могут быть с успехом созданы средствами В-сплайнов и NURB-поверхностей. В спецификациях по модели камеры в PREMO, кроме стандартных средств параллельного проецирования, включенного в большинство стандартов САПР, предусмотрено использование различных стилей, типов освещения и затенение. Дополнительно к этому в стандарт включена интеллектуальная камера, способная автоматически настраиваться в зависимости от атрибутов поверхности объекта или заданных спецификаций. Хотя последняя версия STEP еще не предусматривает анимационных последовательностей, позволяющих, например, оживлять проектируемую деталь автомобиля, а эти средства уже включены в PREMO в качестве основы.
Литература
[1] Открытые системы сегодня, # # 13-14, 1995.
[2] Открытые системы сегодня, # 15, 1995.
[3] Открытые системы сегодня, # 10, 1995.
[4] International Organization for Standartization lnformntion Processing Systems - Computer Graphics - Presentation Environment for Multimedia Objects (PREMO). Initial Draft. Version 1.4. ISO/IEC/JTC1/SC24/WG 6 (December 1993).
[5] J.Rix, A.Burkert, M.Ungerer. STEP and its relation to computer graphics. Proceeding CALS ЕХРО International 93, Atlanta, GA (November 1993).
[6] J.Rix, A.Burkert, M.Ungerer. STEP meets PREMO. Product modelling and new presentation techniques. Computer & Graphics, Vol. 18, М 4 1994, рр. 553-562.