Тема номера
VRML: язык моделирования виртуальной реальности
Александр Звозин
В 1992 году в исследовательском центре CERN на свет появился HTML, благодаря которому несколько миллионов человек имеют сегодня доступ к WWW. Но Internet развивается, и языки интерактивных описаний также не стоят на месте. Одним из наиболее известных новых гиперязыков является VRML.
VRML – это аббревиатура от Virtual Reality Modeling Language (язык моделирования виртуальной реальности). Идея создания этого языка возникла еще в 1994 году, когда в Женеве на первой международной конференции по WWW собрались ведущие специалисты в области глобальных телекоммуникаций. Тогда же было решено приступить к созданию такого языка. Главной задачей при этом было дальнейшее усовершенствование интерактивных интерфейсов с целью лучшего восприятия их человеком. Система WWW позволила достигнуть хороших результатов с текстом, картинками и прочими статическими данными, и следующим естественным шагом была динамизация объектов и придание им более реалистичного вида с помощью трехмерного моделирования. Язык должен был быть достаточно мощным для создания реалистичных виртуальных миров, однако при этом следовало учитывать, что большая часть пользователей Internet использует низкоскоростные каналы связи. В результате после долгих обсуждений в специально для этого созданном списке рассылки за основу был принят язык SGI Open Inventor ASCII, и работы начались. Первая спецификация VRML уже поддержана очень многими производителями и независимыми разработчиками. Она стала результатом первого этапа проекта VRML и в какой-то мере родственна HTML – языку нынешней WWW. Сразу следует оговорить, что VRML является альтернативой, а не дополнением к HTML. Вы не можете вставить в HTML-файл tag типа <VRML>, но вы должны будете создать в своем HTML ссылку на совершенно независимую VRML-страницу. Это означает, что в случае широкого распространения VRML система World Wide Web станет как бы двухслойной: страницы на HTML будут соседствовать со страницами на VRML, ссылаясь друг на друга. Существует еще распространенное заблуждение, будто VRML родственен Java, что принципиально неверно. Java представляет собой способ распространения исполнимого кода по Internet, и тэги-ссылки на Java-коды могут с таким же успехом быть вставлены в VRML-файлы, как и в HTML.

Итак, чем же отличается VRML от своего предшественника? Скобками! Да-да, скобками: текст HTML насыщен угловыми скобками, в то время как текст на VRML чуть ли не наполовину состоит из фигурных скобок. А если серьезно, то VRML построен на другой, более сложной идеологии, нежели HTML. Язык определяет набор объектов, используемых при создании плоскостных трехмерных сцен, – эти объекты называются узлами (nodes). Узлы организованы в иерархические структуры, именуемые узловыми графами. Иерархия в этой структуре является одним из основных параметров при просчете сцены: старшие в иерархии объекты влияют на младшие. Например, узел "Ротация" или "Текстура" влияет на следующий за ним узел "Геометрическое тело".
Так выглядит описание на VRML простейшей картинки – красный конус и голубой шар в лучах направленного света:

Любой узел характеризуется следующими параметрами:
– что это за объект: геометрическое тело, текстура, свет, код, etc...;
– характерные для данного типа объекта параметры: например, радиус и положение центра у сферы;
– имя. Наличие у объекта имени придает ему особый статус, но не каждый объект обязан быть поименованным, и имя не обязано быть уникальным, несколько объектов могут делить одно и то же имя;
– "дети". Узлы образуют иерархии за счет того, что некоторым объектам разрешено содержать в себе другие объекты.
Синтаксис описания этих свойств очень прост:
DEF objectname objecttype { fields children } .
В первую спецификацию сознательно не были введены средства описания сценариев взаимодействия между объектами. Причина этого до смешного проста: авторы языка не хотели разжигать "религиозную рознь" между программистами. Мало кого интересует язык описания векторных сцен, но многие очень чувствительно отнеслись бы к выбору языка сценариев. Так как VRML создавался в условиях "открытого стандарта", дискуссия по этому поводу грозила затянуться. Вдобавок реализация VRML-viewer очень сильно упрощалась, если не требовать от нее просчета скриптов отношений между объектами. Так что динамизация сцен, которая является ключевым условием при разработке VRML, пока отложена. Единственное средство такого рода, которое присутствует в языке сейчас, это возможность ставить на объектах ссылки на другие документы, равно HTML- и VRML-.
Среди проблем VRML-технологии сейчас можно выделить следующие две. Первая: средний VRML-файл уже сейчас больше среднего HTML-файла и грозит еще разрастись. Кроме того, скорость отрисовки в графических оболочках, на которых основываются WWW-браузеры, всегда оставляла желать лучшего (я не говорю о SGIboxes), а при работе в VRML-окружении вы не сможете отключить загрузку картинок. Однако технология VRML сейчас практически всеми экспертами признается наиболее перспективным путем развития WWW, так что кто знает...