ас.Елена Първанова ТЕМА 14 Навигация, обкръжаваща действителност и информация за сцената във VRML. Зaдаване на светлина. Синтаксис: • Този възел не влияе по никакъв начин на 3D сцената. •

Download Report

Transcript ас.Елена Първанова ТЕМА 14 Навигация, обкръжаваща действителност и информация за сцената във VRML. Зaдаване на светлина. Синтаксис: • Този възел не влияе по никакъв начин на 3D сцената. •

ас.Елена Първанова
2011
ТЕМА 14 Навигация, обкръжаваща
действителност и
информация за сцената във
VRML. Зaдаване на светлина.
Синтаксис:
• Този възел не влияе по
никакъв начин на 3D
сцената.
• Той дава информация за
заглавието на сцента и
информация за 3D
документа.
• Полето title е стринг, а info
съдържа списък от
стрингове.
WorldInfo
{
info [ ]
title ""
}
• Свързващите възли са
специален тип възел в
сцената, осигуряващи
информация за средата
и потребителя.
• Когато сцената се
зарежда първо се
инициализират и
активизират тези възли.
За това те се поствят в
началото на VRML кода.
• Свързаващи възли са:
Viewpoint - определя
позицията на
потребителя;
 NavigationInfo –
определя свойствата на
потребителя;
 Fog – добавя атмосфера в
сцената;
 Background – осигурява
небе и изображения за
земя в сцената.

Синтаксис:
• Viewpoint Node определя
местоположението на потребителя и
изгледите за наблюдение на модела.
• Възела се представя чрез следните полета:
 fieldOfView – определя ъгъла на изгледа в
радиани;
 position – определя позицията на потребителя
в координатната система;
 description – осигурява текстово описание на
гледната точка;
 jump – обуслявя преместването в сцената при
преминаването от активен изглед към нов.
 При jump TRUE се осъществява придвижване по
път между двата изгледа;
 При jump FALSE имаме просто смяна на
изгледите.
Viewpoint
{
fieldOfView 0.785398
position 0 0 10
orientation 0 0 1 0
description ""
jump TRUE
}
Синтаксис:
•
•
NavigationInfo Node представя потребителя.
Възела се характеризира със следните полета:
 avatarSize определя физическите размери на
потребителя. Полето има три стойности: 1)
определя минималното отстояние на
потребителя от геометрия със сблъсък
(Collision node); 2) определя височината на
потребителя; 3) определя височина на
потребителската стъпка.
 headlight – определя дали да има или няма
основна светлина към сцентата.
 visibilityLimit – определя максималното
разстояние на което може да вижда
потребителя.
 speed – определя предвижването на
потребителя в метри за секунда.
 type – определя типа на навигация на
потребителя ("WALK", "EXAMINE", "FLY", и
"NONE“).
NavigationInfo
{
avatarSize [0.25, 1.6, 0.75]
headlight TRUE
speed 1.0
type "WALK“
visibilityLimit 0.0
}
Пример с 5 изгледа
Фиг.14.1 Примитиви представени
в изглед “Upper View”
#VRML V2.0 utf8
Viewpoint { description "Front View" position 0 0 8 }
Viewpoint { description "Upper View" position -1 5 8
orientation -1 0 0 0.52 }
Viewpoint { description "The highest View"
position -1 9 6 orientation -1 0 0 1.04 }
Viewpoint { description "Underground View“
position 1 -3 6 orientation 1 0 0 0.52 }
Viewpoint { description "Almost Inside View"
position 0 -1 4 orientation 1 0 0 0.52 }
NavigationInfo { type [ "EXAMINE" "ANY" ] }
Group { children [
Transform { translation 0 2 0
children [
Shape {
appearance Appearance {material Material {
diffuseColor 1.1 0.2 0 } }
geometry Cone { bottomRadius 2.5 }
}
] }
Shape {
appearance Appearance { material Material {
diffuseColor 0.9 0.9 0 } }
geometry Cylinder {radius 2}
}
]}
Виж 3D модела
Синтаксис:
• Fog Node се използва за
придаването на реализъм,
създавайки мъгла в 3D сцената.
• Включва следните полета:
 color – задава цвета на мъглата.
 fogType – определя как
плътността на мъглата да
нараства с разстоянието
("LINEAR" или "EXPONENTIAL“).
 visibilityRange – определя
разстоянието от което обектите
са изцяло засенчени от мъглата.
Fog
{
color 1 1 1
fogType "LINEAR“
visibilityRange 0
}
Пример на сцена с мъгла
Фиг.14.2 Сцена с експоненциална
мъгла и видимост 40.0
#VRML V2.0 utf8
Moreland Group {
children [
Fog {
color 1.0 1.0 1.0
fogType "EXPONENTIAL“
visibilityRange 40.0
},
Background { skyColor 1.0 1.0 1.0 },
Inline { url "fogworld.wrl" }
]}
Виж 3D модела
Синтаксис:
• Background Node
предоставя начин за
описание на хоризонта в
3D сцената.
• Позволява да бъдат
дефинирани небе, земя и
изображения за панорама
за хоризонта.
Background {
skyColor [ 0 0 0 ]
skyAngle [ ]
groundColor [ ]
groundAngle [ ]
backUrl [ ]
bottomUrl [ ]
leftUrl [ ]
rightUrl [ ]
frontUrl [ ]
topUrl [ ]
}
• Небето се дефинира като безкрайно голяма сфера около
сцената с цвят или градиентен ефект (фиг.14.3 а, б).
• Определя се от две полета:
 skyColor в RGB стойности
 skyAngle използва се само за градиентен ефект.
Фиг.14.3 а
SkyAngle
0
Фиг.14.3 б
SkyColor
001
SkyAngle
0 (горен полюс)
1.2
1.57
SkyColor
001
0 0 0.6
100
• Подобно на небето и земята
е безкрайно голяма сфера
около сцената, като тя се
съдържа в сферата на
небето.
• Разликата между двете е че
ако за земната сфера не е
Фиг.14.4 Сцена с цвят за земя и
зададен цвят можете да
градиент за небе
виждате през нея.
• Цветовете за земята се
groundAngle
groundColor
определят за долното
3.14 (по-нисък полюс)
0.5 0.5 0
полуктлбо (фиг.14.4).
1.57
0.5 0.5 0
• Възможно е поставянето на изображения по страните, отгоре и отдолу на
безгранично голям куб, съдържащ се в земната сфера (фиг.14.5 а, б).
Фиг.14.5 а Иображение за
страните куба (back4.gif)
Пример:
Background {
skyAngle [ 1.2 1.57]
skyColor [0 0 1, 0 0 0.6, 1 0 0]
groundColor [0.5 0.5 0.0]
backUrl "back4.gif"
rightUrl "back4.gif"
leftUrl "back4.gif"
frontUrl "back4.gif" }
Фиг.14.5 б Сцена с избражение за хоризонта
• Светлината във VRML сцена е два
вида: специална светлина и
основна светлина (headlight).
• Основната светлина се дефинира
в NavigationInfo Node. Тя се
създава от браузъра и
прикрепена към използвания
потребителски изглед.
• Специалната светлина е три типа:
– светлината няма
местоположение, а само посока
като лъчите са в целия паралел.
– осветява всичко около
себеси от мястото на източника,
като лъчите са във всички посоки.
– създава конус от
светлина.
• Във VRML няма отразена
светлина, само директна.
• Това означава, че обектите
които не са на пътя на
светлината изглеждат тъмни.
• В замяна на светлинното
отражение, светлините във
VRML имат поле наречено
ambientIntensity.
• Това поле контролира до колко
светлината способства за
цялостната осветеност в
сцената.
• Високите стойности на
ambientIntensity създават по
светло място.
• Естествен ефект на
светлината е да намалява с
увеличване на разстоянито.
• Във VRML това се постига с
полето attenuation.
• Attenuation е валидн само за
и
• VRML не предоставя
въаможност за създаване на
сянка.
• На фиг.14.6 е представена
Point Light отляво на две
сфери в една зад друга, при
което не се наблюдава
ефекта на сянка.
Фиг.14.6 Ефект на сянка във VRML сцена
• Прилагане на Spot Light върху куб:
Фиг.14.7 а Куба се намира вътре в
конуса на светлината Spot light
Фиг.14.7 в Светлината е насочена към
горния десен ъгъл на лицето на куба
Фиг.14.7 б Лицето на куба се намира
извън конуса на Spot light
Фиг.14.7 г Осветяване на повърхност създадена с
IndexedFaceSet или полоска Elevation Grid
• Цвета може да бъде прилаган към светлина по същия
начин както към форми (фиг.14.8).
Фиг.14.8 а Ярко синя сфера с червена
Spot light насочена отляво
Фиг.14.8 б Синя сфера (0.3 0.3 1)
с червена Spot light насочена отляво
Фиг.14.8 в Синя сфера и насочена отляво светлина
с RGB стойности 1 0.3 0.3
• Когато полето material в
Appearance node е NULL
или не е определен
материал:
material Material { }
,
то формата не се осветява
коректно (фиг.14.9).
Фиг.14.9 Оцветена (лява) и неоцветена (дясна)
сфери с приложена Point light
• DirectionalLight Node определя светлинен
източник, който е поставен много далече
от обектите в сцената (не се изисква
задаване на местопложението на
източника).
• Полето определя вектор 3D
пространството към който лъчите са
паралелни (фиг.14.10).
• Възела се представя със следните полета:
 on – определя дали светлината е активирана;
 intensity – определя силата на светлината със
стойности между от 0.0 до 1.0;
 ambientIntensity – определя до колко
светлината допринася за общата осветеност
със стойности между 0.0 и 1.0.
 color – определя цвета на светлината в RGB
стойности;
 direction – определя вектор в 3D сцената.
Фиг.14.10 Паралелни лъчи
на DirectionalLight
Синтаксис:
DirectionalLight {
on TRUE
intensity 1
ambientIntensity 0
color 1 1 1
direction 0 0 -1
}
Пример за DirectionalLight
осветяваща сфери от дясно
#VRML V2.0 utf8
Group {
children [
DirectionalLight {
direction 1.0 0.0 0.0
},
Inline {
url "spheres.wrl"
bboxCenter 0.0 0.0 0.0
bboxSize 16.0 16.0 1.0
}
]
}
Виж 3D модела
• Point Lights определя светлинен източник
със специално местоположение.
• Лъчите на този тип светлина се разпръскват
във всички посоки (фиг.14.11).
• Светлината залива всички възли попадащи
в радиуса на осветяване, незвисимо от
позицията им във файла.
• Възела се представя в допълнителните
полета:
 location – определя координатите на
местоположението на светлината;
 attenuation – определя как светлината губи
своята интензивност с нарастване на
разстоянието;
 radius – определя максималното разстояние
на въздействие на лъчите в сцената.
Фиг.14.11 Прилагане на Point Lights
Синтаксис:
PointLight {
on TRUE
intensity 1
ambientIntensity 0
color 1 1 1
location 0 0 0
attenuation 1 0 0
radius 100
}
Пример
Сфери осветени от point light
в центъра
#VRML V2.0 utf8
Group {
children [
PointLight {
location 0.0 0.0 0.0
radius 12.0
},
Inline {
url "spheres.wrl"
bboxCenter 0.0 0.0 0.0
bboxSize 16.0 16.0 1.0
}
]
}
Виж 3D модела
•
•
•
•
Spot Light определя светлинен източник
с местоположение и посока и обхват на
приложение.
Лъчите на този тип светлина са
ограничени от повърхността на конус
(фиг.14.12).
Върха на конуса задава
местоположението на източника, а
основата обхвата на осветяваната
повърхност (обекти).
Възела се представя допълнителни
полета:
 cutOffAngle – определя конуса в който се
съдържат лъчите. Може да варира от 0 до
180 градуса;
 beamWidth - определя вътрешен конус в
който лъчите са с постоянна интензивност.
Варира от 0 до 180 градуса (1,57 радиани).
Фиг.14.12 Приложение
на Spot Light
Синтаксис:
SpotLight {
on TRUE
intensity 1
ambientIntensity 0
color 1 1 1
location 0 0 0
direction 0 0 0
attenuation 1 0 0
radius 100
cutOffAngle 0.78
beamWidth 1.57
}
• Върха на конуса образуван от
Spot Light, задава
местоположението на източника,
а основата - обхвата на
осветяваната повърхност
(обекти).
• Светлинния конус се определя от
две полета (фиг.14.13):
 cutOffAngle – определя ъгъла на
конуса в радиани;
 beamWidth –определя ъгъла на
вътрешния конус, където
светлинната интензивност е
постоянна.
• Лъчите между вътрешния и
външния конус са с намаляваща
интензивност от вътре на вън.
Фиг.14.13 Действие на Spot Light
• Radius определя максималното
разстояние до което достигат
светлините лъчи.
• Обектите извън обхвата на радиуса
или конуса не се осветяват.
Пример
Сфери осветени със spotlight
от центъра и насочена на
дясно
#VRML V2.0 utf8
Group {
children [
SpotLight {
location 0.0 0.0 0.0
direction 1.0 0.0 0.0
radius 12.0
cutOffAngle 0.785
},
Inline {
url "spheres.wrl"
bboxCenter 0.0 0.0 0.0
bboxSize 16.0 16.0 1.0
}
]
}
Виж 3D модела