logo
Трев_Lecture

7.7. Мова моделювання віртуальної реальності vrml

Мова VRML була запропонована навесні 1994 р. на першій щорічній конференції World Wide Web у Женеві. Тут у числі інших обговорювалися проблеми створення VR-інтерфейсів для доступу до WWW і необхідність створення єдиного загального стандарту опису тривимірної сцени, що включає гіперзв'язку за аналогією з HTML. Основними вимогами до мови були незалежність від платформи, розширюваність і можливість роботи з низькошвидкісними каналами зв'язку. На цій конференції і була запропонована назва VRML (Virtual Reality Markup Language). Згодом слово Markup було замінено словом Modeling, що демонструє графічну природу мови. За базу мови VRML був обраний скорочений формат текстового файлу SGI Open Inventor, який доповнили мережними можливостями. Формат Open Inventor давав змогу описати тривимірну сцену з графічними об'єктами, джерелами світла і текстурами.

У 1995 р. були розроблені бібліотеки QvLib для обробки структури файлу VRML і підготовлена специфікація, що дає змогу представлення тривимірних сцен і переміщення з однієї сцени на іншу (чи будь-який інший документ WWW) за допомогою використання гіперзв'язків.

Оскільки перша версія мови була недосконала, багато фірм удосконалювали її, вводячи власні розширення. Autodesk створює VRBL (Virtual Reality Behavior Language), WebFX - Соllіsіоn detection, Worlds Inc. - VRML+. Була створена проміжна версія VRML 1.1, для реалізації найпростішої анімації і звуку.

У 1996 р. була запропонована специфікація VRML 2.0, що дала змогу робити більш швидку обробку VRML-файлу і розширити функціональні можливості мови VRML. З'явила-ся можливість задавати графічний фон для сцени і використовувати різні ефекти. У сцену був включений звуковий фон, у тому числі і від просторових джерел звуку (стандартна WAVE і MIDI-музика).

У мову була додана анімація. Ряд об'єктів, що називався Interpolator, надав можливість описувати заздалегідь визначений рух, наприклад політ птаха, рух маятника чи роботу годинника. Стало можливим описувати зміну кольору об'єкта чи створювати об'єкти, що змінюють свою форму. Мові була додана інтерактивність.

Особливо важливе значення мала можливість задання поведінки об'єкта за допомогою мов програмування, у результаті чого графічні об'єкти стали «інтелектуальними», оскільки їхня поведінка могла описуватися різними складними програмами.

Специфікація мови надала можливість розроблювачу використовувати різні мови програмування (Java, JavaScript і т.д.). Відкритість і розширюваність у поєднанні з можливістю мережної взаємодії мови VRML 2.0 підготували ґрунт для створення інтерактивних VRML-просторів у Internet.

Наприкінці 1996 р. 35 компаній Internet-лідерів сформували організацію VRML Consortium, метою якої був розвиток і формалізація VRML. Ця організація представила VRML як відкритий стандарт для створення інтерактивного 3D-змісту в World Wide Web.

Запропонована мова VRML 97 у січні 1998 р. організаціями ISO (International Organization for Standardization) і IEC (International Electrotechnical Commission) була затверджена як міжнародний стандарт. Перед розроблювачами постав ряд задач: створення спеціального формату і спрощення структури VRML-файлів з метою зменшення розміру і збільшення швидкості передачі цих файлів по мережі; створення інтерфейсу (External Authoring Interface) між VRML-просторами і зовнішніми середовищами; створення VRML-стандартів для анімаційних персонажів і т.д.

VRML-компанії, що розробляють засоби створення 3D Web-просторів, об'єдналися в консорціум Web3D. На початку 1999 р. До складу Web3D входило більше 60 організацій, що займалися 3D-графікою і були зацікавлені у вдосконаленні стандартів тривимірного Internet.

VRML не залежить від платформи, піддається розширенню і не має потреби у високій пропускній здатності мережі. Можливість опису тривимірних об'єктів за допомогою символів ASCII є гарантією того, що кожен бажаючий зможе використовувати чи підготовлювати VRML-документи.

Мова VRML створювалася незалежною від HTML, і для передачі файлів по Internet у ній передбачені ті ж самі протоколи. Тому концепції Internet і Web застосовні і до VRML. Перегляд VRML-документів можливий за допомогою VRML-броузера чи HTML-броузера з додатковим VRML-модулем. Уніфікований покажчик ресурсів URL для VRML-документа виглядає так само, як покажчик для Web-публікації, за винятком розширення. Для Web-документа використовуються розширення *.htm або *.html, а для VRML-документа - *.wrl, *.wrz або *.Flr.

Мова VRML дає змогу створювати за допомогою текстових команд складні тривимірні сцени на екрані ПК. Ці команди описують багатокутні об'єкти і спеціальні ефекти для імітації освітлення, навколишнього оточення і для надання реалістичності зображенню.

Для сценаріїв VRML підходить мова JavaScript, але для вузла сценарію допускається застосування і звичайних мов програмування. Сценарії для світів VRML найчастіше складаються мовою Java. Розроблювачі VRML віддають перевагу мові Java, тому що ця мова програмування орієнтована на Internet.

Більшість постачальників VRML-продуктів включають у свої комплекти броузери для роботи з Java.

VRMLScript - підмножина мови JavaScript, що передбачається безпосередньо специфікацією VRML 2.0. Хоча мова VRMLScript не користується такою широкою популярністю, як JavaScript, вона досить корисна, через те, що призначена виключно для середовища VRML.

Як і Web-сторінки, простори VRML можна зв'язувати один з одним за допомогою гіперзв'язків. Ці зв'язки надають можливість переміщуватися по WWW з «одного світу в інший».

В основі мови VRML лежать три основні поняття: форма, сцена та об'єкт. Форми – це об'ємні опуклі геометричні фігури, для яких визначені операції додавання до вже створених у віртуальному просторі об'ємних тіл і віднімання від них. Операція додавання форми створює в порожньому просторі суцільне тіло, що відповідає внесеній формі. При додаванні, частини форми, що попадають у вже зайнятий об’єм простору, не створюють у ньому нових граней чи границь. При відніманні, навпаки, з тіла забираються частини, що відповідають формі. Таким чином, форми відіграють роль елементів конструкції при побудові віртуального простору.

Сценою називається створюваний тривимірний простір. Будь-яка сцена може включати дві різні частини: «статичну» і «мобільну». Статична частина сцени утворюється додаванням об'ємних фігур з галереї форм чи знищенням частин об’єму вже наявних у сцені фігур при операціях віднімання форм. Ця частина сцени представлена у вигляді набору окремих граней, причому кожна грань належить цій сцені, а не будь-якому тілу в ній. Тому ніякі фрагменти статичної частини сцени не можна перемістити чи змінити їх розміри незалежно від інших. Пересування або деформація віртуального простору вцілому також не дає змогуться програмою (відповідно до законів реального світу).

Мобільна частина сцени утворюється за допомогою об'єктів. Вони також можуть містити статичну частину, взаємне положення фрагментів якої не можна змінити. Однак положення, орієнтацію, пропорції і розміри об'єкта в сцені можуть бути змінені.

Об'єктом називають сцену в сцені, побудовану у своїй власній системі координат, з іншим, зміненим користувачем початком відліку, напрямком і масштабом осей. Об'єкти можуть містити в собі об'єкти-нащадки, положення яких стосовно статичної частини батьківського об'єкта може змінюватися. Операції зміни орієнтації, розмірів, положення, вирізання і видалення батьківського об'єкта виконуються одночасно і для його нащадків.

Сукупність об'єктів і їхню взаємну підпорядкованість у сцені можна наочно відобразити у вигляді ієрархічної деревоподібної структури. Усі вузли дерева, за винятком вузла сцени - кореня, утворять її мобільну частину, розміри і структура якої можуть змінюватися незалежно від геометричних фігур статичної частини сцени.

Кожна грань об'єкта у віртуальному світі має набір властивостей, що описують її матеріал:

Колір. Користувач може задати колір будь-якої грані. При цьому вся грань буде пофарбована в обраний колір не рівномірно, а з урахуванням її орієнтації стосовно джерела світла в сцені.

Текстура. На грань можна накласти зображення. Текстура буде накладена на всю грань, з автоматичним повтором малюнка, якщо розміри грані більші від розмірів елемента зображення текстури. При накладенні текстури колір грані не видимий.

Прозорість. Можна встановити коефіцієнт прозорості матеріалу грані. Наприклад, якщо прозорість матеріалу 50%, те грань стане напівпрозорою, тому у вікні буде видно її матеріал, та предмети, що розташовані за нею. Виставлення параметра прозорості на 100% зробить грань невидимою. Підбором прозорості грані можна імітувати скляні поверхні й інші елементи сцени.

Об'єкти, що описуються VRML-програмою, називаються вузлами (nodes). При створенні тривимірних об'єктів можна використовувати вбудовані вузли: конуси, циліндри, куби і сфери. Описавши форму об'єкта, задають текстуру, освітленість, положення камери і трансформацію об'єктів. Вузли також можуть бути програмними блоками, а не просторовими об'єктами. Засоби програмування поведінки і відстеження подій - це основні компоненти, що роблять простір VRML інтерактивним. Можливе переміщення в тривимірному просторі Web, представленому в VRML-броузері, за допомогою візуальних засобів керування (зображень-покажчиків напрямку), що приводяться в дію за допомогою миші чи клавіатури. У деяких броузерах можливе застосування джойстиків для керування. При наближенні до вузла з запрограмованою поведінкою він «оживає», використовуючи методи анімації. Анімований вузол передає виведення про подію іншому вузлу. Вузол, якому було передане повідомлення про подію, обробляє його. Такий вузол називають «оброблювачем подій» (event handler).

Щоб оброблювач подій зміг виконати свою задачу, він повинен мати доступ до системного часу. Для того щоб синхронізувати час у просторі VRML, використовується давачі часу - особливий тип вузла. Вказавши проміжки часу, можна запрограмувати швидкість зміни відносного положення об'єкта і тим самим «оживити» об'єкт.

Ще один спосіб зробити віртуальний простір інтерактивним – забезпечити вузол давачем зіткнення. Щоразу, коли підготовлений користувачем образ віртуальної реальності стикається чи зупиняється на якому-небудь вузлі, що забезпечує давач зіткнення, генерується подія. Змінюючи вид вузла чи виконуючи яку-небудь іншу дію під час цієї події, створюється враження, що представлений віртуальний простір дійсно інтерактивний.

Домогтися правильної взаємодії можна тільки за допомогою підготовлених сценаріїв і використання вузлів сценаріїв.