Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
Nodul ElevationGrid
Nodul PointSet
Nodul IndexedLineSet
Nodul IndexedFaceSet
Viewpoint {
position 0 0 10
orientation 0 0 1 0
fieldOfView 0.785398
description "Entry view"
jump TRUE
}
position...... specific poziia observatorului care vizualizeaz scena.
orientation 0 0 1 0 determin direcia n care observatorul privete. Primele 3 valori determina axa n lungul creia
privete iar a 4a valoare unghiul sub care se privete in sensul negativ al axei Oz.
- fieldOfView specifica lrgimea cmpului vizual. Unghiuri mici corespund unor lentile photo, unghiuri mai mari de 3.14
rad sunt echivalente cu lentile largi. In acest ultim caz apar deformri ale imaginii.
- description este o descriere a perspectivei. Cele mai multe browsere permit n momentul in care este afiata scena sa
alegem intre mai multe perspective definite acionnd asupra unui buton numit view i care apare n josul paginii.
- jump permite observatorului sa selecteze intre perspectivele definite . Daca valoarea este definita TRUE atunci practic
scena este vizualizata ca i cnd observatorul ar avea o micare continua intre vechea perspectiva si noua perspectiva. Dac este setat
FALSE perspectiva se modific fr ca observatorul sa aib o micare continua intre vechea si noua poziie.
Daca se definesc mai multe perspective atunci prima definita este cea afiata iniial de browser.
ElevationGrid {
xDimension 0
zDimension 0
xSpacing 1.0
zSpacing 1.0
height []
ccw TRUE
color NULL
solid TRUE
colorPerVertex TRUE
creaseAngle 0
normalPerVertex TRUE
normal NULL
texCoord NULL
}
1
Nodul ElevationGrid construiete o reea rectangulara a crei dimensiune n planul Oy poate s varieze . Aceasta variaie este descris
de un vector de scalari care precizeaz coordonata y a reelei n fiecare nod al su.
Figura 1
- Planul Oxz (orizontal) este divizat ntr-o reea, xDimension i zDimension preciznd numrul de noduri ale reelei in
fiecare direcie a axelor de coordonate Ox respectiv Oy. Ambele valori trebuie sa fie mai mari dect 0 .
- xSpacing i zSpacing indic distantele ntre dou noduri consecutive ale reelei. Trebuie sa aib valori mai mari ca 0.
- height [ ] indica coordonata y a fiecrui nod. Poate avea valori pozitive sau negative.
solid indica daca sunt afiate de browser ambele fete ale suprafeei desenate. Daca valoarea este setata pe TRUE att fata exterioara
cat si cea interioara sunt afiate. Daca este setata valoare FALSE este vizualizata doar fata exterioara.
- cmpul ccw specifica daca punctele care definesc o fata a unei suprafee sunt afiate in sens invers acelor unui ceasornic,
counterclockwise, valoarea este TRUE, sau in sensul acelor unui ceasornic, valoarea este FALSE. O suprafaa are doua fete si uneori
este important de tiut care este "fata" si care este "spatele". Daca de exemplu presupunem ca avem o suprafaa perpendiculara pe axa
Oz si cmpul ccw este setat pe TRUE atunci "fata" suprafeei este cea dinspre dvs. Altfel daca valoarea cmpului este setata FALSE
atunci fata dinspre dvs. este "spatele". In figura de mai sus valoarea cmpului ccw este setata pe TRUE iar normala pozitiva (suprafaa
considerata "fata") este orientata in sensul pozitiv al axei 0y.
- creaseAngle specific un unghi limit n funcie de care sunt desenate suprafeele aflate n contact i culorile aplicate
acestora. Astfel dac normalele a dou fee adiacente formeaz un unghi a crui valoare este mai mic dect valoarea creaseAngle
(unghiului limita) atunci mbinarea celor dou suprafee se face lin, n caz contrar delimitarea celor doua suprafee este clar , apar
coluri. Acelai lucru se petrece n cazul culorilor aplicate. Culorile pot aprea distinct sau n gradient n funcie de valoarea unghiului
limit definit.
- campurile color si colorPerVertex specifica modul de colorare al suprafetelor. Color defineste o list de culori care se
aplica fiecrui vrf al reelei sau fiecrei fee. Acest camp este optional , n cazul n care nu este specificat se aplica culorile definite in
nodul Material ca emissive color. Daca nici in acest nod nu este definita o culoare se aplica culoare implicita . Campul
colorPerVertex este un camp boolean care defineste modul n care se aplica culoarea n cazul n care campul color are definite mai
multe culori . Dacvaloarea colorPerVertex este setata TRUE culoare se aplica fiecarui varf in parte, suprafetele fiind colorate in
gradient n functie de culorile varfurilor. Unele browsere interpreteaz aceasta prin definirea unei culori medii prin care se coloreaz
suprafata. Dac valoarea colorPerVertex este setata FALSE practic fiecare faa a retelei este colorat ntr-o singur culoare. n acest
caz numarul de culori care trebuiesc definite este mai mic decat numarul de varfuri (noduri) ale retelei si anume acest numar se
calculeaza astfel: (xDimension - 1)* (zDimension - 1).
- Celelalte campuri definite in sintaxa generala sunt optionale .
Exemplul 1
#VRML V2.0 utf8
Viewpoint {
position 1.2 0.9 4.0
orientation 1.0 0.0 0.0 -0.2
description "Entry view"
}
Shape {
appearance Appearance {
material Material {
}
}
geometry ElevationGrid {
xDimension 16
zDimension 16
xSpacing 0.12
zSpacing 0.12
solid TRUE
ccw
TRUE
#creaseAngle
1.02
#creaseAngle
1.57
height [
0.019608,
0.031373,
0.043137,
0.050980,
0.054902,
0.054902,
0.066667,
0.062745,
0.062745,
0.062745,
0.058824,
0.054902,
0.047059,
0.047059,
0.035294,
0.031373,
0.035294,
0.035294,
0.039216,
0.054902,
0.062745,
0.066667,
0.070588,
0.070588,
0.070588,
0.070588,
0.098039,
0.129412,
0.086275,
0.078431,
0.066667,
0.043137,
0.039216,
0.050980,
0.058824,
0.074510,
0.066667,
0.062745,
0.054902,
0.062745,
0.058824,
0.066667,
0.145098,
0.274510,
0.227451,
0.168627,
0.074510,
0.050980,
0.035294,
0.058824,
0.070588,
0.074510,
0.062745,
0.058824,
0.047059,
0.039216,
0.054902,
0.058824,
0.211765,
0.356863,
0.325490,
0.223529,
0.074510,
0.050980,
0.054902,
0.070588,
0.074510,
0.078431,
0.054902,
0.047059,
0.035294,
0.027451,
0.086275,
0.129412,
0.231373,
0.372549,
0.321569,
0.231373,
0.082353,
0.058824,
0.054902,
0.066667,
0.082353,
0.074510,
0.035294,
0.023529,
0.027451,
0.058824,
0.454902,
0.517647,
0.239216,
0.121569,
0.094118,
0.078431,
0.058824,
0.058824,
0.062745,
0.066667,
0.074510,
0.047059,
0.023529,
0.027451,
0.129412,
0.474510,
0.815686,
0.701961,
0.317647,
0.054902,
0.035294,
0.050980,
0.066667,
0.066667,
0.066667,
0.062745,
0.066667,
0.050980,
0.031373,
0.082353,
0.274510,
0.780392,
0.956863,
0.827451,
0.250980,
0.054902,
0.035294,
0.047059,
0.062745,
0.058824,
0.078431,
0.078431,
0.058824,
0.054902,
0.113725,
0.074510,
0.282353,
0.858824,
0.945098,
0.745098,
0.203922,
0.031373,
0.027451,
0.031373,
0.043137,
0.062745,
0.070588,
0.094118,
0.109804,
0.117647,
0.192157,
0.282353,
0.231373,
0.517647,
0.925490,
0.929412,
0.423529,
0.027451,
0.031373,
0.050980,
0.058824,
0.066667,
0.058824,
0.082353,
0.160784,
0.223529,
0.329412,
0.329412,
0.458824,
0.733333,
0.901961,
0.858824,
0.607843,
0.164706,
0.054902,
0.047059,
0.062745,
0.062745,
0.058824,
0.090196,
0.180392,
0.254902,
0.243137,
0.164706,
0.443137,
0.768627,
0.796078,
0.772549,
0.701961,
0.298039,
0.290196,
0.152941,
0.098039,
0.066667,
0.050980,
0.066667,
0.101961,
0.152941,
0.086275,
0.094118,
0.341176,
0.611765,
0.662745,
0.584314,
0.596078,
0.470588,
0.396078,
0.282353,
0.137255,
0.058824,
0.047059,
0.054902,
0.062745,
0.070588,
0.058824,
0.066667,
0.152941,
0.388235,
0.368627,
0.474510,
0.439216,
0.380392,
0.325490,
0.164706,
0.058824,
0.050980,
0.035294,
0.050980,
0.058824,
0.062745,
0.066667,
0.074510,
0.133333,
0.192157,
0.172549,
0.098039,
0.290196,
0.274510,
0.133333,
0.105882,
0.054902,
0.047059,
0.035294,
0.043137,
0.050980,
0.054902,
0.062745,
0.066667,
0.054902,
0.082353,
0.098039,
0.074510,
0.098039,
0.078431,
0.062745,
0.062745,
0.054902,
0.039216,
]
}
}
Exemplul 2
#VRML V2.0 utf8
Viewpoint {
position 4.5 4.0 15.0
orientation 1.0 0.0 0.0 -0.2
description "Entry view"
}
NavigationInfo {
type [ "EXAMINE", "ANY" ]
headlight TRUE
}
Shape {
appearance Appearance {
material Material { }
}
geometry ElevationGrid {
xDimension 10
zDimension 10
xSpacing 0.8
zSpacing 0.8
solid
TRUE
ccw
TRUE
creaseAngle
1.57
height [
0.0, 0.0, 0.5, 1.0, 0.5, 0.0, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 2.5, 0.5, 0.0, 0.0, 0.0, 0.0,
0.0, 0.0, 0.5, 0.5, 3.0, 1.0, 0.5, 0.0, 1.0, 0.1,
0.0, 0.0, 0.5, 2.0, 4.5, 2.5, 1.0, 1.5, 0.5, 0.2,
1.0, 2.5, 3.0, 4.5, 5.5, 3.5, 3.0, 1.0, 0.0, 0.0,
0.5, 2.0, 2.0, 2.5, 3.5, 4.0, 2.0, 0.5, 0.0, 0.0,
0.0, 0.0, 0.5, 1.5, 1.0, 2.0, 3.0, 1.5, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 2.0, 1.5, 0.5, 0.3,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.5, 0.0, 0.0, 0.0,
0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.3, 0.0, 0.0, 0.0,
]
colorPerVertex FALSE
# colorPerVertex TRUE
color Color {
color [
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.5 0.1,
0.2 0.6 0.0, 0.0 0.5 0.1, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.5 0.4 0.0, 0.0 0.5 0.1,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.5 0.1,
0.0 0.5 0.1, 0.5 0.4 0.0, 0.2 0.6 0.0,
0.0 0.5 0.1, 0.0 0.3 1.0, 0.2 0.6 0.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.5 0.1,
0.4 0.3 0.1, 0.7 0.7 0.7, 0.5 0.4 0.0,
0.2 0.6 0.1, 0.3 0.6 0.6, 0.0 0.5 0.1,
0.2 0.6 0.0, 0.5 0.4 0.0, 0.5 0.4 0.0,
0.7 0.7 0.7, 0.8 0.8 0.8, 0.5 0.5 0.7,
0.5 0.5 0.7, 0.2 0.6 0.0, 0.0 0.3 1.0,
0.0 0.5 0.1, 0.2 0.6 0.1, 0.2 0.6 0.1,
0.2 0.6 0.1, 0.5 0.5 0.7, 0.7 0.7 0.7,
0.5 0.4 0.0, 0.0 0.5 0.1, 0.0 0.3 1.0,
0.0 0.5 0.1, 0.0 0.3 1.0, 0.0 0.5 0.1,
0.2 0.6 0.1, 0.2 0.6 0.0, 0.5 0.4 0.0,
0.5 0.5 0.7, 0.2 0.6 0.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.5 0.1,
0.5 0.4 0.0, 0.2 0.6 0.0, 0.0 0.5 0.1,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.5 0.1, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.3 1.0, 0.0 0.3 1.0, 0.0 0.3 1.0,
0.0 0.5 0.1, 0.0 0.3 1.0, 0.0 0.3 1.0,
]
}
}
}
Nodul PointSet
Nodul PointSet specific desenarea unor puncte in sistemul de coordonate local. Punctele pot fi colorate prin
specificarea culorilor dorite. Sintaxa este urmatoarea:
Shape {
geometry PointSet {
coord Coordinate { point [... , ..., ...] }
color Color { color [..., ... , ... ] }
}
}
In exemplul de mai jos coordonatele punctelor desenate sunt precizate prin seturi de 3 numere separate prin virgula in interiorul
parantezelor campului point[....]. Cele trei numere reprezint valorile coordonatelor punctului ce urmeaza a fi desenat in raport cu
sistemul de coordonate local. Culorile punctelor sunt precizate in interiorul campului color[....] dupa aceleasi reguli ca si in cazul
colorarii formelor geometrice primitive.
Exemplul 3
#VRML V2.0 utf8
Shape {
geometry PointSet {
coord Coordinate {
point [ 0 -1 1, 1 0 0, -1 2 -1, -2 0 0, -2 2 -1, 1 -2 1, 3 -1 3,
1 1 1, 1 1 0, 0 2 -1, -3 0 0, -1 1 -1, 3 -2 1, 3 0 3, ]}
color Color {
color [ 1 0 0, 0 1 0, 1 1 0, 0 1 1, 1 1 1, 1 0 0, 1 0 0,
1 0 0, 0 1 0, 1 1 0, 0 1 1, 1 1 1, 1 0 0, 1 0 0
]
}
}
}
Nodul IndexedLineSet
Nodul IndexedLineSet deseneaza linii poligonale care unesc puncte definite in raport cu sistemul de coordonate local si care
pot fi colorate in mod divers. Sintaxa generala este:
IndexedLineSet {
color NULL
coord NULL
colorIndex []
colorPerVertex TRUE
coordIndex []
}
Exemplul 4
#VRML V2.0 utf8
Shape {
appearance Appearance {
material Material {
diffuseColor 1.0 1.0 1.0
emissiveColor 1.0 1.0 1.0
}
}
geometry IndexedLineSet {
coord Coordinate {point [0.0 0.0 0.0, 5.0 0.0 0.0, 0.0 5.0 0.0]}
coordIndex [
0, 1, -1, 0, 2, -1
]
}
}
Exemplul de mai sus ilustreaz modul n care opereaz cele dou cmpuri coord si coordIndex. Cmpul coord este un nod care
definete coordonatele punctelor intre care se traseaz linia. Astfel n exemplu sunt definite punctele (0,0,0) care urmeaz s fie
centrul axelor de coordonate, (5,0,0) care definete axa orizontala si (0,5,0) care definete axa verticala. Aceste puncte formeaz un
vector n interiorul cmpului point[ ] care are 3 elemente , cele 3 elemente ocupnd n ordine poziiile 0, 1, 2. Cmpul coordIndex
precizeaz modul n care se unesc aceste 3 puncte genernd linia corespunztoare. Astfel n cazul de mai sus se unete punctul
ocupnd poziia 0 n vectorul point[ ] cu punctul ce ocupa poziia 1, -1 indica ntreruperea liniei , apoi se genereaz o noua linie prin
unirea punctelor care ocupa in vector poziia 0 i poziia 2, valoarea -1 indica din nou faptul c se termina linia. Aceste doua linii apar
colorate n alb, culoare definita n nodul material.
Nodul IndexedFaceSet
Nodul IndexedFaceSet genereaz o suprafata tridimensionala construita din mai multe suprafete generate la randul lor de
punctele n spatiul tridimensional precizate de campul coord. Modul n care sunt alese punctele ce genereaza suprafata este definit de
campul coordIndex. Pentru a genera o suprafata este nevoie sa fie definite cel putin 3 puncte iar coordIndex precizeaza care din aceste
puncte sunt alese pentru a genera suprafata si in ce ordine. De aceea acest camp trebuie sa contina valori intre 0 si N-1 , unde N
reprezinta numarul de puncte definite. Valoarea -1 indica faptul ca o suprafata generata se termina si incepe o alta. Pentru a desena o
suprafa trebuiesc definite cel putin 3 puncte diferite, punctele s genereze un poligon plan, linia poligonala sa nu se autointersecteze.
Exemplul 5: