IZONE- http://www.izcity.com/- бесплатный софт, вэб-сервисы, ресурсы для раскрутки, свежие номера журнала "Internet Zone".

VRML. "Куда идем мы с Пятачком?"

Дмитрий Репин a/k/a cmapuk[Online]

Virtual Reality Modeling Language - Язык моделирования виртуальной реальности, если перевести дословно.

Впечатление vers.1.0

Не правда ли, интригующее название? Услышав об этой технологии впервые, я начал поиск документации, и очень быстро ее нашел. Каково же было мое удивление, когда оказалось, что VRML-сцены - это просто текстовые файлы, так же как и HTML. Мое воображение начало рисовать потрясающие картины трехмерных миров, которые я вот прямо сейчас и напишу. Но после создания нескольких сцен пыл мой стал угасать. Это был VRML1.0.

Статичные миры, строящиеся из параллелепипедов, сфер, конусов, цилиндров и натянутых на них текстур.

Никакого движения, никаких событий и прочих прелестей, к которым Web-строители давно уже привыкли (Javascript Events,etc.).

Некоторое время я еще позабавился созданием 3D-сцен. И на этом закончилось бы мое увлечение VRML, если бы не следующая версия этого языка. VRML2.0, VRML97, Moving Worlds - это практически одно и то же. "Moving Worlds" - вот это название меня заинтересовало... Но сначала немного истории.

От Labyrinth к X3D

Все началось в 1994 году, когда на Первой всемирной конференции по World Wide Web с докладом выступил Марк Пише, который вместе с Тони Пэриси в то время уже создал первый пример 3D Web-интерфейса - Labyrinth.

Оживленная дискуссия привела участников конференции к решению о необходимости создания единого языка для описания 3D-сцен.

Работа началась над новым проектом немедленно. Была организована электронная конференция по VRML, и меньше чем за месяц число адресов рассылки перевалило за тысячу.Очень быстро определились и с основными требованиями к языку: платформонезависимость, масштабируемость и работоспособность при низких скоростях (14400Кбит/сек).

Спустя некоторое время за основу VRML1.0 был взят формат Open Inventor от Silicon Graphics. И уже в октябре 1994 года на Второй всемирной конференции по WWW был представлен первый вариант VRML. Дальнейшее развитие технологии пошло с огромной скоростью, и в 1996 году наиболее авторитетными членами электронной конференции по VRML была образована VAG(VRML Architecture Group), которая взяла на себя управление процессом создания VRML2.0. VAG обьявила сбор предложений по новой спецификации, и в результате голосования среди мэтров электронной конференции лидером стал вариант от Silicon Graphics - Moving Worlds. Он и был взят за основу. В том же 1996-ом VAG обьявила о выходе спецификации VRML2.0. и выступила инициатором создания VRML-консорциума (в 1998 году переименованного в Web3D-консорциум). В него вошли 35 компаний, включая таких монстров, как Apple, IBM, Microsoft и др. И наконец, в 1997 году VRML2.0 стал международным стандартом VRML97, принятым международной организацией по стандартизации ISO. VRML стал неузнаваем. События, анимация и другие премудрости отправили VRML1.0 в далекое прошлое. Новая версия практически стала единственной.

Но время не стоит на месте. Развитие и процветание любой новой технологии возможно только в том случае, если она идет в ногу с остальными, является совместимой с ними. (Например, с XML, SQL, etc.). От нового VRML требуется поддержка многопользовательских приложений, потоковых типов данных и множество других тонкостей. Web3D-консорциум не мог не оправдать возложенного на него доверия и организовал процесс разработки, в результате которой все должны остаться довольны новым стандартом. Его завершение планируется на 2002 год.

Работа над VRML разделена на рабочие группы, каждая из которых разрабатывает определенные задачи. Эти группы стоит перечислить.

X3D (Extensible 3D (X3D) Specification) - Проектирование, развитие, стандартизация собственно самой спецификации X3D - текущего проекта Web3D, на основе которого разрабатываются другие подразделения VRML2002.

Web3D-MPEG - Сотрудничество между Консорциумом и Motion Pictures Experts Group по вопросам взаимодействия и совместимости стандартов.

GeoVRML - Развитие средств предоставления географических данных в VRML: создание, отображение, обмен. (Кстати, уже есть v.1.0 www.geovrml.org).

H-anim (Humanoid Animation) - Создание стандарта в VRML для описания 3D-моделей человека.

Vrml-eai (External Authoring Interface) - Разработка интерфейса между VRML-миром и внешним окружением.

Kbinput - Определение узлов, расширяющих возможности пользовательского ввода (клавиатура) для управления 3D-сценой.

Universal Media. Эта группа занимается проблемой увеличения качества VRML-миров и уменьшения их "веса" (следовательно, скорости загрузки).

Также эта группа заботится о межплатформенной совместимости VRML, ну и вообще всяческой оптимизации.

Это не весь список рабочих групп, а лишь несколько примеров. В состав Консорциума входят также входят группы по проблемам совместимости с различными стандартами и технологиями и группы, поддерживающие весь процесс создания новой спецификации, например, группа обеспечения и поддержки электронной конференции Web3D. Исходя из всего этого, можно только догадываться о том, каким будет VRML2002. А пока можно почитать спецификацию VRML97 и рабочие версии X3D, посмотреть примеры, а можно и присоединиться к Консорциуму в качестве разработчика. Если кто-либо имеет четко выраженные английскими буквами идеи о нововведениях в VRML, он может создать свою группу разработчиков в составе Web3D. А работы всем хватит ;-)

Опять проблемы?

Сейчас уже все привыкли создавать Web-страницы для двух браузеров и для их разных версий, но с VRML эта проблема может появиться снова. В настоящее время существует несколько десятков браузеров и вьюверов. В этом софтверном лесу можно запросто заблудиться. На мой взгляд, все же есть 3 фаворита среди VRML-браузеров. Это Cortona (www.paragraph.ru), Cosmo Player (www.cosmosoftware.com),World View (www.platinum.com). И все равно, это грозит всяческими несовместимостями. Даже сейчас уже есть некоторые расхождения в отображении сцен браузерами. Все решится, наверное, с выходом VRML2002. Пожуем-увидим. А пока могу посоветовать Cortona от ParaGraph (они же ParallelGraphics www.parallelgraphics.com). Лично мне он нравится больше остальных, и к тому же... поддержим отечественного производителя!

Следует еще уточнить, что же такое "VRML-браузер". Это не отдельная программа, а обычный plug-in для вашего обозревателя (MSIE или NN). Установить его можно как автоматически, так и вручную, скачав инсталлятор.

Созидательный софт

Раз уж речь зашла о программном обеспечении, стоит сказать несколько слов и о средствах разработки - редакторах VRML.

Один редактор вы всегда сможете найти по адресу C:\WINDOWS\notepad.exe, /bin/vi или подобному =). В Сети можно найти множество как WYSIWYG-редакторов, так и текстовых (на одном только сайте Web3D десятки ссылок).

Для внешнего ознакомления, конечно, подойдет и графический, но ... Так же как "лучший HTML-редактор - это Notepad" , лучшими редакторами VRML являются текстовые. Это мое субъективное мнение. Из "моих любимых текстовых" хочу посоветовать VRMLPad, опять же, от ParaGraph (не сочтите за рекламу). Невероятно удобен в использовании и в развитии собственных познаний в VRML. Ссылки на графические редакторы (и не только) вы найдете на www.web3d.org.

Для всерьез заинтересовавшихся технологией VRML Web3D предоставляет SDK. Так что можно создавать собственные редакторы и браузеры... Хотя, браузеры изобретать не стоит - их и так много =) .

Внутренний мир VRML-мира

Что же представляет из себя VRML-файл? VRML-документ имеет расширение *.wrl - это текстовый файл*, начинающийся строкой #VRML V2.0 utf8.

Далее следует описание сцены, располагающееся в виде иерархической структуры. Основные "кирпичи" для построения сцены называются узлами. VRML97 поддерживает 54 типа узлов. Узлы описывают геометрические примитивы, внешний вид объектов, узлы звука и его свойств, узлы-манипуляторы и др. Геометрические примитивы: параллелепипед, сфера, цилиндр, конус, а также поверхности, определенные несколькими точками. Таким образом, не надо мучиться, создавая сложную форму с помощью кубиков и т.п. Можно просто создать нужную поверхность. Единственная нехорошая особенность последней - поверхность существует только с одной стороны. Например, мы создаем плоский квадрат, одна его плоскость будет видна, но если обойти его с другой стороны, то никакого квадрата мы не увидим. Будем надеяться, что разработчики этот момент учтут и исправят.

Внешний вид объектов: цвет, прозрачность, текстуры и др. В качестве текстур могут выступать не только картинки типа GIF или JPEG, но и видеоизображения типа AVI или MPEG. В сочетании с узлом звука эти особенности открывают новые возможности для разработчиков.

Самое интересное в узле звука - это стереоэффекты, делающие звук более реальным. При повороте головы (виртуальной) звук изменяется, переходит из одной колонки в другую, и т.п. При приближении или удалении от источника звука тоже наблюдаются эффекты "реализации". Например, я в своих опытах по созданию VRML-сцен использовал эти возможности для создания виртуального кинотеатра.

Немаловажную роль в 3D-сцене играет освещение. В VRML97 существует 3 типа освещения. Направленный свет имитирует солнечный. Источник света находится на бесконечном расстоянии и освещает сцену параллельными лучами. Точечный источник - аналог лампочки. Имеет определенное положение в пространстве, которое определяется в его описании. Также определяется максимальное расстояние освещения и форма его затухания.

Прожектор - имитация сами знаете чего =). Кроме стандартных свойств имеет еще и угол, которым определяется коническая форма освещения. Также есть и угол, определяющий размытие краев пятна света от источника. Ну, и для полной реальности виртуальной реальности (каламбур :)) в VRML можно создать (описать) внешний вид земли и неба: цвет (или текстура) и угол наклона. Можно также создать туман, т.е. объекты, удаляющиеся от смотрящего, будут постепенно исчезать, руководствуясь параметрами, определенными в узле тумана. В новой версии VRML обязательно появится что-нибудь новенькое.

И еще одна интересная деталь: единицей измерения в описании сцены является метр! То есть, при создании 3D-городка мы указываем размеры зданий как есть (если копируем реальные объекты), и сцена выглядит невероятно натурально. Таким образом, по любому чертежу легко создается виртуальный объект.

И все-таки она вертится!

Главные черты любой новой Web-технологии, без которых она не сможет получить признания - это динамичность и интерактивность.

И разработчики VRML97 не могли не учесть этого. В стандарте определены узлы событий - сенсоры.

Сенсор времени - это таймер, который порождает регулярные или разовые события. Определяя свойства этого узла, можно сделать анимацию и другие эффекты.

Сенсор видимости - это определенный в свойствах параллелепипед, порождающий сигналы, когда он попадает в поле зрения смотрящего или выходит из него. Это свойство полезно для оптимизации сцены. Например, зачем анимировать объект, если его не видно? Лучше запускать и останавливать анимацию в зависимости от сенсора видимости.

Сенсор приближения - это тоже параллелепипед, который сигнализирует при входе в него и при выходе за его пределы. Например, можно использовать для открытия/закрытия дверей.

Следующий вид сенсоров - это сенсоры, привязанные к определенным объектам и придающие больше интерактивности сцене.

Сенсор касания. Он порождает сигнал при клике на объекте. Это похоже на onClick в Javascript.

Сенсоры манипуляций...

Сенсоры вращения. Сферический сенсор, позволяющий пользователю вращать объект вокруг центральной точки датчика.

Цилиндрический сенсор позволяет вращать объект только по оси Y самого сенсора.

Сенсор плоскостной - это сенсор, дающий возможность двигать объект вдоль плоскости XY самого сенсора.

Теперь о сценариях. В VRML97 существует 3 варианта использования сценариев: использовать откомпилированный Java-код (.class), использовать Javascript-код из файла или же включать код Javascript непосредственно в описание узла Script. Этот момент требует некоторого уточнения. Стандартом для VRML является ECMAScript (European Computer Manufactures Association). ECMAScript-файл имеет расширение *.js и является почти тем же JavaScript.

Таким образом, с помощью всех этих инструментов можно динамически создавать интерактивные 3D-сцены и целые миры. И все это уже создается и воплощается в жизнь, анимацию и интерактивность.

VRML + ...

Сначала еще раз о том, что нас ожидает в будущем. VRML2002 будет полностью совместим с XML, а также будет поддерживать VRML97, хотя последний не был так лоялен к своему предшественнику - версии 1.0. Поддержка мультимедийных форматов, потоковых типов данных и совместимость с платформонезависимыми языками программирования (Java, JavaScript, et.), судя по всему, не останутся для следующего VRML200X. Как приятно помечтать!

Теперь о том, что можно сделать с VRML97. В настоящий момент VRML97 можно охарактеризовать как 3D DynamicHTML. То есть все, что можно сотворить средствами DHTML какой-нибудьScript, с таким же успехом делается в 3D-варианте. Это может быть создание сцен on-fly, управление сценой из скрипта. Замечательный пример есть на сайте www.paragraph.ru. Это забавная игрушка про железную дорогу. В ней пользователь сам строит пути и запускает по ним 3D-паровоз. Естественно, можно наблюдать за движением поезда, причем из разных точек сцены.

На сайте Web3D также есть множество ссылок на VRML-ресурсы. Например, 3D-город, в котором можно даже прописку получить ;-) (www.cybertown.com).

Если теперь ко всем вышеперечисленным премудростям мы прибавим возможность генерировать сцены на основе пользовательских данных с помощью все того же CGI, то получим свободу создания интереснейших сайтов. HTML (он же "скучный" 2D =) ) отдыхает! Кстати, VRML-сцены могут воспроизводиться в браузере как отдельным файлом, так и быть встроенными в HTML наподобие Flash-ролика или Java-апплета.

Обратная сторона медали

Вероятно, прочитав все вышесказаное, вы загорелись новыми идеями по использованию технологии VRML. Должен вас предупредить, что не все так просто. На мой взгляд, главная проблема VRML в настоящее время - несколько завышенные требования к "железу". Например, при моей нынешней конфигурации компьютера, Celeron433 64MRAM + (видео без ускорителя) + WinMe, какой-нибудь более-менее сложный VRML-мир ужасно "тормозит". Точнее сказать, невозможно его посмотреть. При Win2000 проблем меньше, а если видеокарта приличная + 3D-акселератор, то никаких неудобств не будет. Короче говоря, софтверный рендеринг у VRML-браузеров весьма хромает. Для жителей дальнего зарубежья техническое оснащение своего компьютера - не такая проблема, как для жителей России. У нас многие еще на P166 умудряются играть или работать. Теперь о способах борьбы за скорость рендеринга. При создании мира (как звучит!) лучше пользоваться ручными редакторами, так как графические создают ужасный исходный код. Это очень существенный фактор. Лучше потратить некоторое время на ознакомление с синтаксисом языка, а потом писать руками. Второй совет - использовать VRML-сцену, встроенную в HTML-страницу, и задавать для нее небольшой размер. Эту особенность вы можете наблюдать при первом же просмотре wrl-файла. Разверните окно браузера на весь экран, а потом уменьшите размер до четверти и сравните скорость. Таким образом можно хоть как-то облегчить отображение свежесотворенных VRML-миров, и ждать, когда разработчики браузеров сделают хороший 3D-движок... или купят у id Software, например. Как знать, может быть мы скоро увидим Quake или Unreal в VRML.

"А зачем нам кузнец?..."

Пора задать вопрос: "А зачем нам все это надо?". Для развлекалок-игрушек типа "виселицы", чтобы баннеры крутить? Или просто так, для собственного удовольствия?... Немного фантазии, и мы найдем применение новой технологии. Как известно, счастье не в деньгах, а в их количестве. Поэтому серьезный человек видит Интернет как поле для открытия нового бизнеса или улучшения уже существующего. Итак, E-Commerce. Самый простой вид бизнеса - магазин, а в интернет-бизнесе - интернет-магазин. Покупатель всегда хочет "видеть товар лицом", для чего и существуют в магазинах витрины. А чем лучше оформлена витрина - тем больше потенциальных покупателей обратят на нее внимание. Вдобавок к этому, покупатель всегда будет рад, если товар можно повертеть в руках, осмотреть его с разных сторон. В он-лайн руками потрогать товар нельзя, но осмотреть можно. Например, сфотографируем чайник со всех сторон и выложим снимки на сайте. Не лучший вариант, не правда ли? А если это навороченный процессор с не менее навороченным кулером, сколько снимков надо сделать, чтобы показать, как крепится кулер, да как все это выглядит в реальности? Вот тут-то нам и пригодится VRML! Создадим сцену с этим товаром, в которой его можно будет повертеть, разобрать, собрать. Почти как в настоящем магазине (к тому же, клиент ничего не сломает нечаянно ;-) )!!! А если что-нибудь посерьезней?

Например, автомобиль. Вот вам и первый пример.

Пример второй - Real-Estate, то есть недвижимость. Почему бы не сделать вместо сухих чертежей и плоских фотографий квартиры трехмерную модель, где клиент сам может все посмотреть, как будто он в находится в этой квартире по-настоящему. VRML-сцены для этих примеров, при правильном и качественном написании, не будут сильно "тормозить" даже при такой конфигурации машины, как у меня.

Я попытался кратко рассказать вам о технологии VRML. Подробнее узнать о ней вы можете на сайте Web3D-Консорциума (www.web3d.org). Купите книгу по этой теме, почитайте документации в Сети и, конечно, попробуйте себя в роли Создателя, хоть и виртуального. Спасибо за внимание.



* - Также он может быть сжатым. Сжатие документа производят VRML-редакторы.

Источник: "Компьютер Price", http://www.comprice.ru

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com