Matemática e Computação
 

Mensagens
Não te abandones em lugares onde a luz da tua harmonia não esteja presente.

 

 

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"