Matemática e Computação
 

Ter amizade é uma coisa muito nobre, muito grande. Mas a amizade deve levar a ter atuações leais na vida, porque o amigo não pode ser um cúmplice. É-se cúmplice para cometer delitos, coisas vergonhosas. A amizade é para realizar, com outros, coisas boas a favor de outras pessoas. Se não, não é verdadeira amizade. (Josemaría Escrivá)

 

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
                            }
                     }
              }
       ]
}