9.5
- ElevationGrid
O
nó ElevationGrid é usado para representar terrenos.
Embora terrenos possam ser construídos pelo nó IndexedFaceSet,
é mais eficiente construí-los com ElevationGrid.
Elevation
Grid especifica uma malha retangular e a altura dos nós da
malha.
Sintaxe
do nó ElevationGrid
ElevationGrid
{
set_height
color
NULL
normal
NULL
texCoord
NULL
height
[]
ccw
TRUE
colorPerVertex
TRUE
creaseAngle
0
normalPerVertex
TRUE
solid
TRUE
xDimension
0
xSpacing
1.0
zDimension
0
zSpacing
1.0
}
xDimension
- número de vértices ao longo da direção
x. Seu valor deve ser superior a 1.
xSpacing - distância entre dois
vértices na direção x. Não pode ser um
valor negativo.
zDimension - número de vértices
ao longo da direção z. Seu valor deve ser superior a
1.
zSpacing - distância entre dois
vértices na direção z. Não pode ser um
valor negativo.
height - "lista dos valores das
alturas", uma para cada vértice, e enumerada por linha
(direção x) em ordem crescente.
color - pode conter um nó Color,
caso se queira declarar cores para cada quadrilátero da rede
ou para cada vértice.
colorPerVertex - Quando TRUE, indica
que se está provendo uma cor por vértice e quando FALSE,
defíne-se uma cor por quadrilátero.
É ignorado
se o campo color está NULL.
Caso se especifique um nó
Color, deve-se dispor, pelo menos, (xDimension - 1) x (zDimension
- 1) cores para o caso de colorPerVertex estar FALSE e pelo menos,
(xDimension) x (zDimension) cores para quando está TRUE.
normal - caso não especificado,
o browser gera normais automaticamente, mas abre-se aqui a possibilidade
de se definir um nó Normal para se especificar, explicitamente,
as normais a serem geradas.
normalPerVertex - ignorado se normal
for NULL. É TRUE quando se dispõe uma normal por vértice
e FALSE, quando por quadrilátero.
texCoord - pode conter um nó TextureCoordinate
para se definir, explicitamente, uma textura.
ccw - por default, as normais (e consequentemente
as elevações) são definidas no sentido positivo
de y (i.e. para cima). Porém, se ccw for FALSE, elas ficarão
definidas para baixo, ou seja, sentido negativo de y.
solid - estabelece a possibilidade de
se ver o lado de dentro da elevação (caso em que se
atribui à variável o valor FALSE) ou se apenas o exterior
(o mais usual) é interessante (TRUE).
creaseAngle - ângulo entre as arestas
de duas faces (quadriláteros) consecutivos, o que proporciona
o controle sobre a suavidade das curvas (minimizar o "facetamento" da figura).
Exemplo 154: Exemplo
de ElevationGrid
Shape
{
appearance
Appearance {
material
Material{
diffuseColor
0.4 0.7 0.3
}
}
geometry
ElevationGrid {
xDimension
2
xSpacing
2.0
zDimension
2
zSpacing
2.0
height
[0, 0, 0, 0 ]
color
Color {
color
[ 0 0 1, 0 1 1, 1 0 1, 1 1 0, 1 0 0 ]
}
colorPerVertex
TRUE
}
}
Exemplo 155: Exemplo
de ElevationGrid
Shape
{
appearance
Appearance {
material
Material{
diffuseColor
0.4 0.7 0.3
}
}
geometry
ElevationGrid {
xDimension
7
xSpacing
1.0
zDimension
6
zSpacing
1.0
height
[ 0, 0, 0, 0, 0, 0, 0,
0,
1, 1, 1, 1, 1, 0,
0,
1, 2, 2, 2, 1, 0,
0,
1, 2, 3, 2, 1, 0,
0,
1, 2, 2, 2, 1, 0,
0,
1, 1, 1, 1, 1, 0,
0,
0, 0, 0, 0, 0, 0 ]
color
Color {
color
[ 0 0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0,
0
0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0,
0
0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0,
0
0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0,
0
0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0,
0
0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0,
0
0 1, 0 1 1, 1 0 1, 1 1 0, 1 1 1, 1 1 0, 1 0 0 ]
}
colorPerVertex
TRUE
}
}
9.6
- Extrusion
Formas
resultantes de extrusão (tubos, roscas, vasos, etc) podem ser
construídas com o nó IndexedFaceSet, porém é
mais fácil e eficiente construí-las com o nó Extrusion.
No nó Extrusion, é definido um polígono (crossSection)
que percorre um caminho (spine) no espaço.
É possível mudar a escala da crossSection e rodá-la
ao longo do spine.
Este
nó permite a criação de uma variedade de formas
3D, construídas a partir da extrusão de uma porção
do plano 2D.
A
sintaxe do nó é apresentada a seguir:
Extrusion
{
set_crossSection
set_orientation
set_scale
set_spine
beginCap
TRUE
ccw
TRUE
convex
TRUE
creaseAngle
0
crossSection
[ 1 1, 1 -1, -1 -1, -1
1, 1 1 ]
endCap
TRUE
orientation
0 0 1 0
scale
1 1
solid
TRUE
spine
[ 0 0 0, 0 1 0 ]
}
crossSection
-
caminho ou figura no plano 2D descrito como uma série de vértices
no plano xz e que sofrerá a extrusão.
spine
-
caminho no espaço 3D, ao longo do qual, a figura definida em
crossSection sofrerá a extrusão. Também é
descrito como uma série de vértices no sistema local
de coordenadas.
scale
-
série de fatores de escala, indicando a dimensão ao
longo dos eixos x e z da figura definida em crossSection e correspondendo
aos pontos em spine, de tal modo que o primeiro valor em scale corresponde
ao tamanho que a figura deverá ter entre os primeiro e segundo
pontos especificados em spine. Caso somente um valor seja especificado,
todos os pontos da figura terão o mesmo tamanho.
orientation
-
série de rotações (pares: direção
e ângulo), indicando a orientação da figura definida
em crossSection e correspondendo aos pontos em spine, de tal modo
que o primeiro valor em orientation corresponde à orientação
que a figura deverá ter entre os primeiro e segundo pontos
especificados em spine. Caso somente um valor seja especificado, ele
será associado a todos os pontos de spine.
beginCap
-
indica se a extremidade da figura que sofre a extrusão aparece
tampada ou não.
endCap
-
indica se a outra extremidade da figura que sofre a extrusão
aparece tampada ou não.
ccw
-
indica se os vértices em crossSection foram listados no sentido
horário quando a figura é vista de cima (valores positivos
do eixo y).
solid
-
indica se as faces de dentro da figura são visíveis
(FALSE) ou não (TRUE).
convex
-
indica se todas as faces são convexas. Caso a figura em crossSection
não seja convexa e tanto beginCap como endCap sejam TRUE, então,
atribua FALSE a convex.
creaseAngle
-
o ângulo entre as arestas das faces, de modo a suavisar as bordas,
ou seja, tornar a figura menos "facetada"