В последнее время апологетами “Повсеместно протянутой Паутины” предпринимаются все более решительные действия по дальнейшей “виртуализации” этой сети. Как грибы рождаются новые технологии создания полноценных виртуальных пространств, и на их основе создаются продукты, призванные как можно точнее отобразить окружающий нас мир.
Проблема перехода из плоскостной модели статичных WWW-страниц в третье измерение - в трехмерный и полностью интерактивный виртуальный мир - стоит сегодня перед Интернет, пожалуй, на одном из первых мест. В начале 1994 года специально для организации виртуального трехмерного интерфейса в WWW был разработан язык VRML (Virtual Reality Modelling Language). Он позволял в текстовом виде описывать различные трехмерные сцены, освещение и тени, текстуры (покрытия объектов) и соответственно создавать свои миры, путешествовать по ним, “облетать” их со всех сторон, вращать в любых направлениях, масштабировать, регулировать освещенность и т. д. Основным преимуществом этого языка было компактное описание сценариев, так как требовалось передавать по сети не многомегабайтные мультимедийные ролики, а небольшие текстовые странички объемом в несколько килобайт. Сама задача визуализации возлагалась на программу просмотра (браузер).
Однако первая версия VRML по сути ничем не отличалась от HTML - языка описания обычных двухмерных страниц, с той лишь разницей, что с помощью VRML 1.0 создавались трехмерные пространства. В VRML-страницы (со стандартным расширением .wrl) можно было вставлять ссылки на другие трехмерные объекты (просто указывать URL) или на HTML-страницы. Однако, несмотря на то что все объекты этих миров можно обходить, рассматривать и “трогать” мышкой, тем не менее контакта с пользователем и даже элементарного движения отдельных объектов с помощью VRML 1.0 сымитировать нельзя. Хотя несколько “оживить” такие миры можно с помощью cgi-скриптов, но это требует больших усилий профессиональных программистов. Кроме того, первая версия языка позволяла оперировать слишком ограниченным набором трехмерных объектов, таких, как куб, конус, цилиндр, сфера, и объектами, сконструированными из полигонов, которые можно было покрывать различными материалами. Фактически, VRML - это типичный декларативный язык, не содержащий никаких команд и состоящий только из описаний сценариев.
За первой версией языка появилась следующая - VRML 1.1, но она сразу же “умерла”, так и не получив распространения. В нее была добавлена поддержка звукового сопровождения и простенькой анимации, но этого жаждущим зрелищ гражданам Земли оказалось мало.
Наконец, недавно была разработана принципиально новая версия VRML 2.0. В ней появилась полноценная поддержка мультимедиа, а самое главное, были добавлены элементы интерактивности. И описания сценариев стали более походить на описания объектов в привычном стиле объектно-ориентированного программирования - со своими событиями и методами, хотя сам язык по-прежнему остался декларативным. Но по структуре он стал более объектно-ориентированным, в частности в нем появилось понятие прототипа, аналога базового класса или шаблона из Си++.
Реакции объектов (в терминологии VRML - узлов) на события виртуального мира реализуются описанием маршрутов событий (которые могут быть различных типов) между узлами. Сами же события генерируются так называемыми сенсорами, которые “срабатывают”, например, при щелчке мышкой, при виртуальном контакте с узлом, по таймеру и т. п. Элемент времени, кстати, несет значительно большую смысловую нагрузку при создании виртуальных миров, чем, допустим, событие WM_TIMER для программирующих в Windows. Дело в том, что теперь с помощью VRML появилась возможность описывать анимированные сцены, в которых узлы (все-таки привычнее говорить “объекты”, но ничего не поделаешь - стандартная терминология) теперь могут самостоятельно “шевелиться”. Вы можете создать трехмерный образ человека с помощью иерархии подчиненных узлов, как это делается, например, в 3D Studio, и в зависимости от времени, прошедшего с запуска программы, заставить определенные узлы перемещаться в заданной последовательности, имитируя хождение по комнатам и другие действия.
Более того, в VRML 2.0 введен интерфейс со скриптами, написанными на других языках программирования, например на Java или BasicScript. Это позволяет добавить в виртуальные миры полную функциональность и реализовать опции, возможные только при использовании обычных, процедурных, языков программирования. Продуманы даже такие детали, как возможная несовместимость программ просмотра, и введены механизмы разрешения противоречий.
Пока еще VRML 2.0 не поддерживается большинством ПО. Наиболее широко распространенный подключаемый модуль для Netscape Navigator под названием Live 3D объемом менее 2 Мб работает с первой версией VRML. Однако встраивание программы просмотра стандарта VRML 2.0, без сомнения, дело самого ближайшего будущего.
Сергей Бобровский