Блуждая по просторам Интернета, постоянно рискуешь напороться на некий объект, способный легко уничтожить уйму столь дефицитного личного и пока еще столь дорогого сетевого времени. Подобные черные дыры виртуальных закоулков, без сомнения, известны любому пользователю, сделавшему хотя бы несколько ходок по Сети, не говоря уже о профессиональных серферах и сталкерах. Странные существа люди - они даже составляют специальные хит-парады, посвященные подобным местам периодического времяубийства. Да вы и сами хорошо знаете всяческие "Рэмблеры" и прочие "Топ 1000". С другой стороны, еще никто не пытался создать хит-парад Интернет-технологий, способных качественно и масштабно уничтожать личное время. Пожалуй, HTML, mp3 и... и запишите VRML в первую пятерку!
Как это все случилось, в какие вечера...
Все началось 27 октября 1969 года, с первого TCP пакета. Затем были telnet 1.0.0.2 и ftp 1.0.0.2. Еще позже появился ftp.cc.mil и прочие DNS. В 1989 году начал развиваться WWW. Впрочем, все это события глубоко довиртуальной эры.
В январе 1994 года Mark Pesce и Tony Parsi придумывают концепцию трехмерного HTML, своеобразного языка описания трехмерных сцен с поддержкой гиперссылок, и создают пакет программ и экспериментальный формат, названные ими Labyrinth - первый прообраз VRML. В апреле 1994 года их проект участвует в First International Conference on the World Wide Web (Первой интернациональной конференции по WWW), где и звучит впервые термин VRML. Кстати, тогда он расшифровывался как Virtual Reality Markup Language, и лишь позже "markup" был заменен на более научно-звучное "modeling". В июне 1994 года известный журнал "Wired" создает список рассылки, посвященной вопросам создания VRML, на который в течение недели подписывается около 1000 специалистов. Для 1994 года это было крайне серьезным числом. Они-то и определяют направление развития концепции, придавая ей в ходе многочисленных письменных обсуждений первые очертания. До сих пор соблюдается хорошая традиция развития языка: постоянный поиск решений, удовлетворяющих большинство участвующих в обсуждении добровольцев, то есть столь любимый первым президентом нашей Родины консенсус.
| | СПРАВКА
VRML: аббревиатура от Virtual Reality Modeling Language (по отечественному ЯМВР, язык моделирования виртуальной реальности). Стандарт языка описания трехмерных сцен, содержащих объекты, а также возможных взаимодействий между объектами и наблюдателем. Основное назначение - описание набора объектов (сцены) в системах виртуальной реальности. Основное на данный момент применение - представление статической и интерактивной информации, как в сети Интернет, так и на материальных носителях в виде виртуальной трехмерной среды, содержащей различные объекты. Существует три распространенных версии языка: VRML 1.0, 2.0 и VRML 97. На данный момент наиболее широко поддерживаемой версией является VRML 2.0. Развитие языка координируется VRML Architecture (по другим источникам, Advisory) Group (Группа архитектуры VRML), известной под аббревиатурой VAG. | |
Практически сразу было решено не заниматься изобретением велосипеда, а взять за основу какой-либо существующий язык описания трехмерных сцен, коим становится разработанный в Silicon Graphics формат файлов программной библиотеки Open Inventor. Gavin Bell, инженер SGI, модифицировал этот формат, создав первый вариант языка VRML, анонсированный в октябре 1994 года на Второй всемирной конференции по WWW. 5 ноября предложенный Беллом вариант превратился в официальный проект стандарта VRML 1.0. Его коллега, Paul Strauss, написал первый VRML-клиент, назвав его труднопроизносимым именем QvLib. Клиент был впервые представлен для платформы SGI в январе 1995 года.
Печальная легенда гласит, что столь неудобоваримое название программы было придумано с целью постоянно напоминать авторам о необходимости чуть позже подыскать более удобное и красивое наименование, что, естественно, так никогда сделано и не было. Позже исходные тексты QvLib были предоставлены всем желающим, вызвав неконтролируемое распространение VRML по аппаратным платформам и сайтам.
Вскоре Parsi создает свою собственную компанию, Intervista, и начинает разработку трехмерного браузера, основанного на VRML. Этот браузер получил имя WorldView и успешно существует до сих пор.
Тогда же Parsi, Pesce и один известный архитектор из Сан-Франциско осуществляют проект Virtual SOMA - создают VRML-модель южной части пригорода, призванной стать центром мультимедиа и Интернет-бизнеса. Это было первым масштабным полукоммерческим применением VRML-технологии. В апреле 1995 года SGI анонсирует новый браузер WebSpace, открывая широкую кампанию по продвижению VRML. В ней принимают участие такие фирмы, как Netscape, DEC, Spyglass и NEC. Начинается рекламная кампания в прессе. На конференции "SIGGRAPH '95" язык VRML, несомненно, является основной темой. С этого момента начинается стремительная лавина анонсов новых браузеров, средств создания VRML-сцен и просто содержащих VRML-контент сайтов.
В августе 1995 года Pesce анонсирует создание VAG, начинается разработка проекта стандарта VRML 2.0. Первоначальный проект забит и затоптан в ходе обсуждения, но присланы шесть новых вариантов от ведущих компьютерных фирм:
А - Active VRML от Microsoft,
Б - Dynamic Worlds от GMD со товарищи,
В - HoloWeb от Sun,
Г - Moving Worlds от Silicon Graphics со товарищи,
Д - Out of this World от Apple,
Е - Reactive Virtual Environment от IBM Japan.
В ходе обсуждений выявляется лидер - Moving Worlds. Вскоре благородная Apple отказывается от своего проекта в пользу Moving Worlds, остальные гиганты продолжают настаивать на своих вариантах. Постепенно Moving Worlds становится проектом стандарта VRML 2.0 и передается в ISO. В июне 1996 года представители VAG договариваются, подписывая окончательное соглашение считать работы над VRML 2.0 завершенными. Кстати, несмотря на поиск консенсуса, работа по созданию и принятию стандарта продвигается невероятно быстро. В декабре 1996 года стандарт ISO/IEC DIS 14772-1 (VRML 2.0) принят ISO окончательно. А в октябре 1997 года был создан проект стандарта новой расширенной версии языка, названной, в соответствии с последними веяниями, VRML 97. Следует отметить, что VRML - абсолютный рекордсмен по скорости разработки и принятия официального стандарта среди всех компьютерных языков.
Из чего сделаны мальчики?
Это я, разумеется, хватил через край. Из чего сделаны мальчики и девочки - известно всем еще со времен счастливого детства и ненавязчивой детской поэзии. Компьютерные же мальчики и девочки, как известно, сделаны из закрашенных треугольников. А вот из чего состоит VRML, мы сейчас попытаемся узнать.
Итак, нам необходимо обеспечить выполнение двух основных действий:
А - описать виртуальный мир,
Б - предъявить этот мир пользователю, позволив ему взаимодействовать с ним.
Решим эти задачи, попробовав себя в непростой роли создателей VRML. В первую очередь необходимо создать информационную структуру, описывающую мир [1]. Для этого используется чрезвычайно гибкая и удобная (для пользователя или математика, но не для реализующего ее обработку программиста) структура: граф, то есть набор узлов (в терминологии VRML - node), дополненный информацией о связях между ними. Узлы содержат поля (fields) и события (events). Cвязи между узлами графа реализуются с помощью полей, имеющих тип указателя на другой узел. Фактически события также представляют собою указатель на объект, способный эти события либо генерировать, либо воспринимать. Отсюда возникает разделение событий на два типа: выходящие (EventOut) и входящие (EventIn) соответственно.
Благодаря подобной концепции, VRML, несомненно, относится к объектно-ориентированным языкам. Итак, вся эта красота, схематически изображенная на рис. 1, и описывает мир, разумеется, в VRML-понимании. Поля Field1 и 2 представляют собою первичные параметры (например, цвет или точка в трехмерном пространстве), Field3 является набором указателей на другие узлы, а Event1 - событием, поступающим от двух узлов.
Структура есть. Предположим, что основные типы узлов, событий и полей также определены. Но пока это лишь на бумаге и в мыслях, нам же необходимо создать синтаксис языка - формальное описание возможного содержимого файла, в рамках которого наш мир будет формулироваться человеком или редактором. А затем, возможно, он будет интерпретироваться и демонстрироваться программой-клиентом (браузером). Разумеется, браузер также необходимо разработать и написать, хотя, формально, рамки стандарта заканчиваются уже на этапе формулировки синтаксиса и описания функционирования определенных заранее узлов. Конкретная реализация программы, то, как она будет представлять информацию пользователю, и то, как она будет обеспечивать его взаимодействие с виртуальным миром, остаются на совести разработчиков.
Впрочем, этот факт совершенно не спасает от стойкого ощущения дежавю во время работы с большинством распространенных на данный момент клиентов. Достаточное ограничение в простор реализации вносят четкие правила относительно генерации событий и строго фиксированный набор параметров, определяющих визуальное (геометрия, материал и освещение) описание объектов. Подводя итоги, составим табличку (см. ниже).
| | ПОДДЕРЖИМ ОТЕЧЕСТВЕННОГО ПРОИЗВОДИТЕЛЯ!
Сергей Scout Кащавцев
На мой взгляд, Александр в своей статье совершенно незаслуженно обошел вниманием крупного игрока на рынке VRML - бывшую московскую фирму "ПараГраф", превратившуюся ныне в международную корпорацию и переименованную в Parallel Graphics. В настоящий момент они предлагают два VRML-клиента, VRML-скринсейвер, а также средства разработки. Подробнее ознакомиться с этим софтом (и скачать клиентов) можно на www.paragraph.ru, здесь же я вкратце перечислю предлагаемые программы.
Cortona - VRML-клиент, представляющий собой plug-in к браузерам IE и NN. Оптимизирован под Pentium III, поддерживает следующие функции:
- OpenGL; - DirectX и Direct3D, - язык Java; - VRML 97, VRML 2.0, VRML 1.0; - External Authoring Interface (EAI), кроме того, клиент обладает собственным интерфейсом CAI (Cortona Automation Interface), основанным на технологии ActiveX Automation; - сплайны и NURBS-поверхности; - обеспечивает дополнительные возможности обнаружения и обработки столкновений в 3D сценах.
Islands - многопользовательский VRML-клиент, позволяющий общаться с другими пользователями сети в виртуальных трехмерных сценах, помещать 3D-объекты в сцены, управлять ими в многопользовательском режиме, обмениваться текстовыми сообщениями, просматривать двумерные и трехмерные Web-сайты, загружать и просматривать локальные трехмерные сцены и объекты - в общем, эдакий виртуальный клуб по интересам.
Ну и, конечно, два пакета для создания VRML - Internet Space Builder и Internet Scene Assembler, позволяющие забыть о кошмарах синтаксиса.
Бр-р! Хорошая штука VRML, конечно, но писать его руками, в отличие от 3DML, я бы никогда не рискнул. Хотя, может, кому-то это и нравится - я знавал фанатика, писавшего руками PostScript... | |