Permite unir los
diferentes puntos especificados en su campo coord mediante caras
poligonales.
La idea es unir una serie de puntos para que formen una polilínea cerrada, que es la que definirá la cara.
Sintaxis:
- IndexedFaceSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]
colorPerVertex valor_lógico
color Color {
color [ . . . ]
}
colorIndex [...]
}
El campo coord
toma como valor un nodo de tipo Coordinate, el cual define los puntos
que sirven como esqueleto de la figura.
En el campo coordIndex se establece el orden en el que se unen los tres puntos que van a formar la polilínea cerrada que va a formar la cara. Con el valor -1 se indica que ahí acaba la cara.
El campo colorPerVertex
indica como se han de aplicar los colores
Recuerda que para que un nodo pueda verse, debe estar incrustado en el nodo Shape.
Para determinar el color de la cara hay que hacer uso de tres campos más:
- color
- colorIndex
- colorPerVertex
Con el campo color se especifican cuántos y qué colores se van a usar (en el caso de que haya más de una cara).
Con el campo colorIndex se atribuye a cada una de las caras existentes alguno de los colores expresados en el campo anterior.
Con el campo colorPerVertex se especifica si los colores serán colores continuos, o un gradiente entre dos colores.
Determinando una cara visible
Por defecto, la cara visible es la perpendicular a la parte positiva de los ejes coordenados. En el ejemplo anterior, la cara es perpendicular a la parte positiva del eje Z.
Pero puede haber ocasiones que nos interese que sea visible la otra cara. Para determinar una cosa o la otra, el nodo IndexedFaceSet puede tener el campo ccw (abreviatura de counterclockwise: contrario a la agujas del reloj). Hay dos posibilidades:
- ccw TRUE Es la opción por defecto, por tanto no es obligatoria ponerlo. La cara visible es la perpendicular a la parte positiva de los ejes coordenados.
- ccw FALSE En este caso, la cara visible es la opuesta a la parte positiva de los ejes coordenados
Si en el ejemplo anterior se añade el campo ccw FALSE, se puede ver aquí el resultado. Para poder ver la cara verde hay que girar 180º el escenario.
Un uso muy útil del nodo IndexedFaceSet es el de crear un suelo para un escenario de realidad virtual.
El campo colorPerVertex
indica como se han de aplicar los colores:
| colorPerVertex | colorIndex | Acción |
| FALSE
(Los colores se aplican sobre las caras) |
VACIO | Los colores se aplican en el orden en el que se han definido dentro del nodo Color. Deben existir al menos tantos colores como caras. |
| NO VACIO | Los colores se aplican en el orden indicado por el campo colorIndex. Deben existir al menos tantos índices en este campo como caras se han definido. Si el mayor valor que admite el campo colorIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. | |
| TRUE
(Los colores se aplican sobre los vertices) |
VACIO | Se utiliza el campo coordIndex para elegir los colores definidos en el nodo Color. Si el mayor valor que admite el campo coordIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. |
| NO VACIO | Se aplican los colores a cada vértice. Este campo va a tener ahora la misma estructura que el campo coordIndex, por lo que ha de contener al menos tantos índices como este último. También ha de poseer los indicadores de fin de línea (-1) en los mismos sitios que el campo coordIndex. Si el mayor valor que admite el campo colorIndex es N, entonces deben existir en el nodo Color N+1 colores definidos. |
Ejemplo:
No hay comentarios:
Publicar un comentario