4 - Nós com nome
- DEF E USE
Para poder associar
um nome a um nó, basta para tal anteceder a definição
desse nó com a palavra DEF e o nome que se deseja associar.
DEF ConeAzul Shape {
......appearance Appearance {
............material Material {
..................diffuseColor 0 0 1
............}
......}
......geometry Cone { }
}
Suponhamos agora
que mais à frente necessitamos de referenciar aquele cone
como parte integrante de outra parte da cena. Para tal existe a
primitiva USE, que torna possível a reutilização
dos nós definidos anteriormente.
Sintaxe para refenciar
um nó ( USE ):
USE Nome_do_Objeto
Exemplo 15: DefUse01
DEF
Cubo Shape {
appearance Appearance {
material
Material { }
}
geometry Box { }
}
Transform {
translation 2 0 0
children USE Cubo
}
Transform {
translation 0 2 0
children USE Cubo
}
4.1 Sintaxes de
alguns nós
4.1.1 Sintaxe do nó Appearance
O
campo appearance especifica um nó que define a aparência
do shape, incluindo sua cor e textura. Valores para este campo incluem
o nó Appearance e o valor default NULL, que faz com que o
objeto fique com uma cor branca
appearance Appearance
{
......material Material {
......}
......texture ImageTexture {
......}
......textureTransform NULL
}
O
valor do campo geometry especifica um nó que define a geometria,
do shape. Valores para este campo, tipicamente, incluem os nós
Box, Cone, Cylinder e Sphere. O valor default NULL indica a falta
de geometria.
Shape{
appearance NULL
geometry NULL
}
4.1.2 Sintaxe
do nó Material
material Material {
......diffuseColor 1.0 0.0 0.0 (
usado para dar cor aos objetos )
......ambientIntensity 0.2 (
especifica quanto da luz ambiente um objeto deve refletir )
......specularColor 0.18 0.11 0.188 (determina a luminosidade de pontos de reflexão
com maior quantidade de luz)
......emissiveColor 0.278 0.239 0.388 (usado
para representar objetos incandescentes. )
......transparency 0.314
......shininess 0.45 ( determina o brilho
do objeto. Quanto maior seu valor, maior o brilho. )
}
4.1.3 Sintaxe do nó Cubo
Shape
{
appearance Appearance {
material Material {
}
}
geometry Box {
...... size 2.0
2.0 2.0
}
}
4.2.4 Sintaxe do nó Cone
Shape
{
appearance Appearance {
material Material {
}
}
geometry
Cone {
...... bottomRadius
2.0
......height 3.0
......side TRUE
......bottom TRUE
}
}
4.1.5 Sintaxe do nó Cilindro
Shape
{
appearance Appearance {
material Material {
}
}
geometry
Cylinder {
......radius 2.0
......height 3.0
......side TRUE
......top TRUE
......bottom TRUE
}
}
4.1.6 Sintaxe do nó Esfera
Shape
{
appearance Appearance {
material Material {
}
}
geometry
Sphere {
......radius 2.0
}
}
Exemplo 16: Cubo Vermelho de aresta 3.0 com transparência 0.2
#VRML V2.0 utf8
Shape {
......appearance Appearance {
............material Material {
..................diffuseColor 1.0 0.0 0.0
..................transparency 0.2
............}
......}
......geometry Box {
............size 3.0 3.0 3.0
......}
}
Exemplo 17: Cone Verde de
raio da base 2.0, altura 3.0 e transparência 0.2
#VRML V2.0 utf8
Shape {
......appearance Appearance {
............material Material {
..................diffuseColor 0.0 1.0 0.0
..................transparency 0.2
............}
......}
......geometry Cone {
............bottomRadius 2.0
............height 3.0
............side TRUE
............bottom TRUE
......}
}
4.2 - O nó Group
Uma das grandes vantagens
do VRML é a forma elegante de estruturar as cenas através da
composição de múltiplos nós. Para conseguir tal estruturação torna-se
evidente a necessidade de agrupar vários nós e passar a tratar esse
novo grupo como um outro nó.
Estes nós designados
por Nós de Agrupamento, são utilizados para criar grafos hierárquicos
de objetos, e são constituídos por um campo children (filho) que é uma lista de nós. Antes deste campo existe um evento para
adicionar novos nós ao grafo (addChildren) e outro para retirar nós aí existentes (removeChildren).
De modo a garantir
a coesão do grupo, é definido um novo referencial para todos os
elementos do grupo. Este referencial é relativo ao referencial do
nó que agrupa todos os elementos, ou seja, o nó pai.
Group
{
......addChildren
............( adiciona o nó
especificado na lista de objetos em children do nó Group.
............Caso este nó
já exista, a nova inclusão é ignorada )
......removeChildren
............(
remove o nó especificado
da lista de objetos em children do nó Group.
Caso ............este
nó não
exista, a remoção é ignorada. )
......children [ ]
............(
nós a serem agrupados )
......bboxCenter 0 0 0
............(
centro da área retangular hipotética que circunda
os nós especificados em children )
......bboxSize -1 -1 -1
............(
dimensões em x, y e z da área retangular hipotética
que circunda os objetos ............especificados
em children no nó Group )
}
Exemplo 18: Agrupamento01
#VRML V2.0 utf8
# The VRML 2.0 Sourcebook
Group{
......children [
............Shape{
..................appearance DEF White Appearance {
........................material Material { }
..................}
..................geometry Box{
........................size 1.0 1.0 1.0
..................}
............},
............Shape {
..................appearance USE White
..................geometry Sphere {
........................radius 0.7
..................}
............},
............Shape {
..................appearance USE White
..................geometry Cylinder {
........................radius 1.25
........................height 0.05
..................}
............},
............Shape {
..................appearance USE White
........................geometry Cylinder {
..............................radius 0.4
..............................height 2.0
........................}
..................},
............Shape {
..................appearance USE White
..................geometry Cylinder {
........................radius 0.3
........................height 3.0
..................}
............},
............Shape {
..................appearance USE White
..................geometry Cylinder {
........................radius 0.1
........................height 6.0
..................}
............}
......]
}
Exemplo 19: Agrupamento02
#VRML V2.0 utf8
# The VRML 2.0 Sourcebook
Group{
......children [
............Shape{
..................appearance
DEF Apare1 Appearance {
........................material
Material {
..............................diffuseColor
.8 .51 .09
..............................specularColor
.92 .43 .01
..............................ambientIntensity
.117
..............................shininess
.4
........................}
..................}
..................appearance
DEF Apare2 Appearance {
........................material
Material {
..............................diffuseColor
.32 .54 .26
..............................specularColor
.46 .46 .46
..............................ambientIntensity
.0933
..............................shininess
.51
........................}
..................}
..................appearance
DEF Apare3 Appearance {
........................material
Material {
..............................diffuseColor
.52 .32 .25
..............................specularColor
.53 .53 .53
..............................ambientIntensity
.0867
..............................shininess
.93
........................}
..................}
..................appearance
DEF Apare4 Appearance {
........................material
Material {
..............................diffuseColor
.79 .25 0
..............................specularColor
.63 .19 .03
..............................ambientIntensity
.0867
..............................shininess
.55
........................}
..................}
............},
............Shape
{
..................appearance
USE Apare1
..................geometry
Box{
........................size
1.0 1.0 1.0
..................}
............},
............Shape
{
..................appearance
USE Apare2
..................geometry
Sphere {
........................radius
0.7
..................}
............},
............Shape
{
..................appearance
USE Apare3
..................geometry
Cylinder {
........................radius
1.25
........................height
0.05
..................}
............},
............Shape
{
..................appearance
USE Apare4
..................geometry
Cylinder {
........................radius
0.4
........................height
2.0
..................}
............},
............Shape
{
..................appearance
USE Apare3
..................geometry
Cylinder {
........................radius
0.3
........................height
3.0
..................}
............},
............Shape
{
..................appearance
USE Apare2
..................geometry
Cylinder {
........................radius
0.1
........................height
6.0
..................}
............}
......]
}
Exemplo 20: Agrupamento03
#VRML V2.0 utf8
Transform {
translation 1 0 0
children [
Shape {
geometry Box { size 3 3 3 }
appearance Appearance {
material Material {
diffuseColor .8 .51 .09
specularColor .92 .43 .01
ambientIntensity .117
shininess .4
}
}
}
Shape {
geometry Sphere { radius 2.1 }
appearance Appearance {
material Material {
diffuseColor 1 .85 0
specularColor .87 .25 .25
ambientIntensity .157
shininess 1
}
}
}
]
}