2.7. VRML

Мова VRML (Virtual Realty Modelling Languagy) призначений для опису тривимірних зображень оперує об'єктами, що описують геометричн ф гури їхнє розташування в простор .

Vrml- файл являє собою звичайний текстовий файл, що інтерпретується браузером. Оскільки більшість браузерів не має убудованих засобів підтримки vrml, для перегляду Vrml-документів необхідно підключити допоміжну програму - Vrml-браузер, наприклад, Live3D чи Cosmo Player.

Як іу випадку з HTML, той самий vrml-доку мент може виглядати по-різномгу врізних VRML-браузерах Крім того, багато розроблювачів VRML-браузерів додають нестандартні розширення VRML усвій браузер.

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

Одиниці виміру

У VRML прийняті наступні одиниці виміру:

• Відстань ірозмір: метри

• Кути: радіани

• Інші значення: виражаються, як частина від 1.

• Координати беруться в тривимірної декартової системі координат (див. мал.)

Заголовок VRML-файлу

Як уже говорилося, Vrml-документ являє собою звичайний тестовий файл. Для того, щоб VRML-браузер розпізнав файл із VRML-кодом, на початку файлу ставиться спеціальний заголовок - file header: #VRML VLO ascii

Такий заголовок обов'язково повинний знаходитися впершомгу рядку файлу, крім того, перед знаком діеза не повинне бути пробілів.

Примітиви VRML

У VRML визначені чотири базові фігури: куб (прямокутний параллепипед), сфера, циліндр і конус.

Розглянемо кожний із примітивів.

Куб

Можливі параметри: width - ширина, height - висота, depth - глибина.

Cube і

width 2   # ширина height З   # висота depth І   # глибина

І

Сфера

Параметр усфери тільки один, це radius. Sphere і

radius І   # радіус

І

Конус

Можливі параметри: bottomRadius - радіус підстави, height - висота, parts - визначає, які частини конуса будуть видні. Параметр parts може приймати значення ALL, SIDES чи

BOTTOM.

Cone і

parts        ALL # основа, ібоковаповерхня конуса

bottomRadius   І #радіус основи

height       2 #висота

І

Циліндр

Інформаційні Технології О.В.Стрельцов 55

Для циліндра можна задати параметри radius і height. Крім того, за допомогою параметра parts для циліндра можна визначити чи будуть відображатися підстави циліндра ійого бічна поверхня. Параметр parts може приймати значення ALL, SIDES, BOTTOM чи TOP.

Cylinder { parts ALL    # всі частини циліндра radius 1      радіус основи

height 2      #висота циліндра

}

Колір і текстура

Колір фігури, визначається за допомогою об'єкта Material. Material {

ambientColor   0.2 0.2 0.2 diffuseColor   0.8 0.8 0.8 specularColor 0 0 0 emissiveColor 0 0 0 transparency 0

}

Параметри ambientColor, diffuseColor, specularColor і emissiveColor керують квітами і вказуються впалітрі RGB (червоний, зелений іголубий), причому перша цифра визначає інтенсивність червоного кольору, друга - зеленого, а третя - синього. Приміром, синій кубик, може бути описаний утакий спосіб: #VRML V1.0 ascii Material {

diffuseColor 0 0 1

}

Cube {}

Параметр transparency може приймати значення від 0 до1 і визначає ступінь прозорості, причому максимальна прозорість досягається при transparency рівному одиниці. У приведеному примере описано два циліндри різних розмірів, менший зякий просвічує крізь іншої.

#VRML V1.0 ascii Material {

diffuseColor 0 0 1

transparency 0.7

}

Cylinder { height 1 radius 1

}

Material { emissiveColor   1 0 0 transparency 0

}

Cylinder { height 0.8 radius 0.1

}

Для імітування різних поверхонь у VRML існує об'єкт Texture2.

Як текстуру легше усього використовувати звичайний графічний файл, наприклад, у GIF-форматі. Утакому випадку для "натягування" текстури на тривимірне зображення потрібно тільки вказати шлях до файлу в параметрі filename об'єкта Texture2.

.  #VRML V1.0 ascii

Texture2 {

filename "krp.gif' image     0 0 0 wrapS REPEAT

56     Інформаційні Технології

wrapT REPEAT

І

Cube і

width І height І depth І

І

Параметри wrap і wrap можуть приймати значення REPEAT чи CLAMP, ікерують натягуванням текстури по відповідно горизонтальній і вертикальній осях.

Положення об'єктів у просторі

Зміна координат

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

Вузол Translation визначає координати об 'єкта: Translation і

translation І Т З #т.е. відповідно х=І у=Т z=3

І

Узагалі говорячи, координати вказуються в Translation не є абсолютними. Фактично це координати щодо попереднього вузла Translation. Щоб прояснити це питання, розглянемо пример:

#VRML VLO ascii

Cube і

width І height І depth І

І

# Цей куб за замовчуванням розташовується в центрі Translation і translation Т O O

І

#другий куб зрушать вправо на Т

Cube і

width І height І depth І

І

Translation і translation Т O O

І

#третій куб зрушать вправо на два відносно Т-го !!!!

Cube і

width І height І depth І

І

Як бачите, третій кубик зовсім не збігається з першим, хоча ву вузлі Translation зазначені ті ж коор динати.

У VRML LO прийняте наступне правило: вузли, що модифікують властивості фігур (Translation, Material іт.п.), діють на всі далі описані фігури.

Щоб обмежити область дії вузлів, що модифікують, фігури необхідно згрупувати за допомогою вузла Separator. Separator

і

інші вузли

І

Вузол Separator працює як контейнер, він може містити будь-як інші вузли, і основним його призначенням єсаме обмеження області дії вузлів типу Translation і Material. Порівняєте наступний приклад з попереднім:

#VRML Vl.O ascii

Separator і

Cube і

width І height І depth І

І

І# кінець області дії вузла Separator Separator і Translation і

translation Т O O

І

#другий куб зрушать вправо на 2

Cube і

width І height І depth І

І

І# кінець області дії вузла Separator Separator і

Translation і translation Т O O

І

#третій куб зрушать вправо на два відносно І-го.

Cube і

width І height І depth І

І

І# кінець області дії вузла Separator Хоча вприкладі описано три кубики, ми бачимо тільки два, тому що другий і третій зб гаються.

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

Для обертання фігур навколо осей координат застосовується вузол Rotation. Rotation і

rotation O І O І.57

І

Перші три цифри визначає чи буде здійснений поворот навколо відповідно осей x, y і z, а

четверта задає кут обертання врадіанах. навколо осі у на 90 градусів.

У приведеному вище лістінге поворот здійснюється

Кути в градусах

Радіани

 

ІЗ0

0.52

 

І45~

0.78

 

I6O

Ц.04

 

I9O

ІІ.57

 

ГІ80

З.І4

 

1270

4.7І

 

ккладемо букву і із двох циліндрів. оа замовчуванням циліндр орієнтований вертикально

(див. малюнок). Тому для успішного виконання задачі повернемо його навколо осі г на 90 градусів.

#VRML Vl.O ascii 58     Інформаційні Технології

Separator { #червоний цил ндр

Material { emissiveColor 1 0.6 0.6 } Cylinder {

height 1

radius 0.3

}

}

Separator { # Синій циліндр, повернений на 90 градусів навколо осі z Translation {

translation 0 0.5 0

}

Rotation {

rotation 0 0 1 1.57

}

Material { emissiveColor 0.5 0.5 1 } Cylinder {

height 1

radius 0.3

}

}

Масштабування

Вузол Scale масштабує фігури по одному чи декільком вимірам. Три цифри, що коштують після параметра scaleFactor визначають коефіцієнти масштабування щодо осей x,y і z. Scale { scaleFactor 1 1 1

}

У наступному приклад , вузол Scale стискає сферу по ос x,  з сфери виходить ел псоїд.

#VRML V1.0 ascii Material { emissiveColor 1 1 0 } Scale {

scaleFactor 0.7 1 1 #стягуємо сферу по оси x

}

Sphere { radius 1}

}

Визначення власних об'єктів

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

Об'єкт описується одним зі способів: DEF name

Cube іІ

чи

DEF name Material іІ

чи

DEF name Separator і

Згрупован вузли, що описують ф гуру властивост матер алу

І

Для того, щоб вставити в VRML-файл раніше визначену фігуру, використовується команда

USE

Separator і USE name

Інформаційні Технології О.В.Стрельцов 59

}

Створимо VRML-файл, що описує стілець, при цьому ніжку стільця опишемо як об'єкт LEG: #VRML V1.0 ascii Material { emissiveColor 1 0.5 0.5 } Separator {

Translation { translation 1 1 1 } DEF LEG #визначаємо об'єкт - ніжку стільця Separator { # leg Cylinder { height 0.8 radius 0.1

}

} # визначили н жку

}

Separator {

Translation { translation 0 1 1 }

USE LEG # використовуємо визначений об'єкт

}

Separator { # ще одна н жка Translation { translation 1 1 0 } USE LEG

}

Separator { # остання н жка Translation { translation 0 1 0 } USE LEG

}

Separator { # сид ння

Translation { translation 0.49 1.5 0.5 }

Cube {

height 0.2

width 1.2

depth 1.2

} }

Separator { # спинка

Translation { translation 0.49 2 0 }

Cube { height 0.8 width 1.2 depth 0.2

} }

Separator { # заокруглення спинки Translation { translation 0.49 2.1 0 } Rotation {

rotation 1 0 0 1.57

}

Cylinder { radius 0.6 height 0.2

}

}

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

Ще один спосіб зменшити розмір VRML-файлу - уставляти фігури зіншого файлу. Це дозволяє робити вузол WWWInline:

#VRML V1.0 ascii

Separator {

name ''

bboxSize O O O bboxCenter O O O

І

І

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

Замість висновку, хочеться звернути Ваша увага на двох особливостей VRML, незнання яких сильно утруднить створення VRML- документів вручну.

7. Всі описи вузлів і параметрів у VRML регістрозалежні. Якщо використовувати букви неправильного регістра - то VRML-браузер просто проігнорує такий опис.

8. У VRML має величезне значення порядок опису вузлів. Так приміром, опис

Rotation і... І

Scale і... І

і опис

Scale і... І

Rotation і... І дають зовс м р зний результат. 2.8. Web-cepeep Apache

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

На користь Apache знаходиться дуже багато аргументів. По статистиці більш половини інтернету тримається саме на ньому. Насамперед треба знайти дистрибутив Apache на http ://www.apache.org/ чи на http ://www.ap ache.ru/ .

Уході установки треба вказати каталог, уякий він повинний установитися, наприклад, d:\apache.

Всі установки Apache зберігає в каталозі d:\apache\conf. Там лежать З файли : httpd.conf, access.conf, srm.conf, вони те іє головними. Хоча всамих нових версіях (на момент написання вийшли Apache 1.З.9) всі установки перенесені водин файл httpd. conf, аінші файли за замовчуванням порожні і забезпечують сумісність з попередніми версіями, тобто щоб адміністратори могли використовувати файли настроювань від попередніх версій. Щоб усі правильно працювало треба зробити наступні настроювання :

• Указати стандартний тип сервера врядку

ServerType standalone

• Указати каталог уякий установлений Apache, причому тр еба використовувати значки "/" замість      атакож наприкінці не можна ними закривати.

ServerRoot 'D:/Apache'

• Указати ваша поштова скринька, щоб зпоявою помилок відвідувачі знали до кого звер татися.

ServerAdmin bill@microsoft.com

• Написати ім'я сервера в інтернету, якщо ваш домен зареєстрований, чи жпросто IP адреса. Ще якщо увас немає інтернету, чи він увас по модему, то вкажіть просто 127.O.O.1 чи localhost.

ServerName www.microsoft.com

• Наступна важливе настроювання - це шлях до нашого кореня сайта, тобто самого верхнього каталогу, що видний відвідувачам при завантаженні вашого сайта за адресою http://your.site.com/. Туди жми будемо класти сторінку.

DocumentRoot "D:/Apache/htdocs"

• Це каталог для наших користувачів, якщо вони внас будуть .

UserDir "D:/Apache/users"

Інформаційні Технології О.В.Стрельцов 6І

• Aтaкож треба не забути, що головним файлом укаталозі буде файл index.*

DirectoryIndex index.html index.shtml index.htm

• Ну ац настроювання для самих завзятих читач в, що д йдуть до програмування додатк в CGI.

ScriptAlias /cgi-bin/ "D:/Apache/cgi-bin/" <Directory "D:/Apache/cgi-bin">

AllowOverride None

Options None </Directory>

• Aцeдля підтримки SSI.

AddType text/html .shtml AddHandler  server-parsed .shtml