Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web








CURSO VRML
por el arquitecto y profesor
Gonzalo Vélez Jahn
(ARQUITECTURA-L)



entrega 11


-------------------------------------------------------------------------
5.4- NODOS ("Nodes") Y JERARQUIAS ("Hierarchies")
-------------------------------------------------------------------------

Los NODOS son "comandos" utilizados para definir FORMAS y PROPIEDADES  en
VRML. Estructurados jerarquicamente, en funcion de su  tipo  y  secuencia
permiten configurar una ESCENA. En el sentido  mas  amplio  del  termino,
Puede equivalerse "nodo" a "objeto". Por supuesto  que  eso  implica  que
bajo la denominacion de  objeto  pueden  incluirse  tambien  aquellos  de
naturaleza no-geometrica...

Es importante  destacar  que, una  vez  especificado  el  encabezado,  un
fichero  VRML  contiene  exacta  y  unicamente  UN  nodo.  Ese nodo,  por
supuesto, puede constituir un NODO DE GRUPO que contiene en si  cualquier
cantidad de otros  nodos.  All  igual  que  en C++  los  simbolos  {}  so
utilizados para delimitar las  areas  segun  las  que  se  estructura  un
fichero. Las aplicaremos como ejemplo mas adelante, en la construccion de
las cuatro formas basicas o "primitivas" (cubo, cilindro, cono y esfera).

un NODO posee las siguientes caracteristicas :

   --> NATURALEZA del Nodo (que tipo de OBJETO es: cubo, esfera, mapa  de
       tecturas, una transformacion, etc.).

   --> PARAMETROS. Que distinguen al nodo de otros nodos del mismo tipo.

   --> NOMBRE. Para identificar al Nodo.  El  poder  asignar  un  nombre
       adicionamente a un nodo y referirse a el mas  adelante  constituye
       un muy poderoso recurso: permite al autor de la escena  suminstrar
       pistas, a otras aplicaciones que utilicen dicha escena, acerca del
       contenido de la  escena  y  tambien  crea  posibilidades  para  la
       aplicacion de poderosas extensiones de programacion ("scripting").

       Los nodos no exigen ser nombrados, pero si se lo hace solo  podran
       responder a un solo nombre.  Sin  embargo,  ese  nombre  no  tiene
       porque ser unico, por  lo  cual  varios  nodos  diferentes  podran
       poseer un mismo nombre.

  --> NODOS "HIJOS" ( "Child Nodes") - El  VRML  permite  establecer  una
      jerarquia entre objetos, permitiendo que los nodos "padres"  puedan
      recorrer a sus hijos orden durante la ejecucion de  un  proceso  de
      representacion ("rendering").   Aquellos  nombres  facultados  para
      tener "hijos" reciben el nombre de Nodos de  "Grupo". Los nodos  de
      grupo pueden poseer cero o mas hijos.

El VRML  utiliza nodos de FORMA, PROPIEDAD o  GRUPO  para  erigir  mundos
tridimensionales. Los nodos de Forma se refieren a la geometria del de la
escena. los nodos de propiedad afectan directamente el modo en la cual se
dibujan las formas. Los nodos de agrupacion permiten almacenar  una  gran
cantidad de  instancias  de  formas.  Los  nodos  de  agrupacion  no  son
responsables del movimiento llevado a cabo en el mundo virtual.

El efecto acumulativo de nodos en un  grafo-escena  se  denomina  ESTADO.
Para la mayoria de los propositos, el mas importante nodo  de  AGRUPACION
se denomina nodo SEPARADOR, cuyo uso es:

    Separator {

        otros nodos incluidos
    }

El nodo SEPARADOR delimita y contiene dentro de el a los aspectos corres-
ppondientes a aquellos nodos de propiedad que aloja. Dicho en otra forma,
los nodos de propiedad solamente pueden afectar a  aquellos  otros  nodos
que se alojan dentro del nodo Separador.

El nodo SEPARADOR es un nodo de grupo ("group node"); aisla o  separa los
nodos ubicados dentro del separador del resto de los objetos  en  escena.
La segunda linea de codigo en todo fichero de mundo VRML  es  siempre  un
nodo separador, que tiene como mision agrupar la totalidad del  "mundo").

--> SINTAXIS GENERAL

    La sintaxis elegida por el VRML para representar nodos es muy franca:

         DEF objectname objecttype { fields  children }
             (nombre)    (tipo)     (campos) (hijos)

Reduciendolo a su esencia tendremos que solo resultan indispensables para
su manejo el Tipo de objeto y las llaves. Es decir que  los nodos  pueden
o no poseer nombre, campos e hijos.

Los nombres de los nodos do deben comenzar con numero y no deben contener
espacios en blanco o caracteres de control, ni comillas, ni "/" ni { o }
ni puntos, ni signo "+".

-------------------------------------------------------------------------
5.5- CAMPOS ("Fields")
-------------------------------------------------------------------------

CAMPOS son aquellos atributos que los distintos  caracteres  poseen.  Por
ejemplo, para definir un cubo (en realidad un paralelepipedo rectangular)
el usuario debera especificar ancho, alto  y  profundidad  del  mismo.  A
estas dimensiones se las considera CAMPOS del cubo.

Existen dos tipos de campos en VRML:

    --> campos que contienen un solo valor (donde ese valor puede ser  un
        numero, un vector o hasta una imagen.Su nombre comienza con SF.
    --> campos que alojan valores multiples. Su nombre comienza con MF.

Cada tipo de campo define el formato de los valores que escribe.

Los campos de valores multiples se escriben como  una  serie  de  valores
 separados por comas, todos ellos encerrados por corchetes. Si  el  campo
tiene cero valores entonces solo se escribira "[]". El ultimo valor puede
ser seguido, opcionalmente de una coma. Si el campo posee un solo  valor,
entonces pueden omitirse los corchetes, escribiendose solo el valor.

       3
       [3,]
       [ 3 ]

Algunos de estos campos multi-valores son:

MFColor

Es un campo multi-valor que puede contener cualquier  numero  de  valores
de colores RGB separados por comas en grupos de tres.. Por ejemplo:

[ 1.0 0.0 0.0, 0 1 0, 0 0 1 ]

Representa los tres colores: Rojo, Verde y Azul.

MFLong

Es un campo multi-valor que contiene cualquier  cantidad  de  enteros  de
gran tamano (32-bit). El programa esta hecho pora archivar uno o  mas  de
este tipo de valores. enteros en formatos decimal, hexadecimal u  octal.

MFVec2f

Es un campo multivariable que contiene cualquier cantidad de vectores bi-
dimensionales. MFVec2f ha sido escrito para almacenar uno o mas pares  de
valores de punto flotante separados por espacio en blanco. Cuando  existe
mas de un par de valores, todos los valores deberan estar  encerrados  en
corchetes y separados mediante comas. Por ejemplo:

[ 0 0, 1.2 3.4, 98.6 -4e1 ]

MFVec3f

Aquel campo de valor multiple que  puede  alojar  cualquier  cantidad  de
vextores tri-dimensionales. El MFVec3f esta concebido para archivar uno o
mas trios de valores de punto flotante separados entre si por espacio  en
blanco. Cuando mas de un trio de valores esta presente todos los  valores
deben ser encerrados en corchetes y separados mediante comas.

CAMPOS EN UN NODO

Un nodo puede contener cero o mas campos. Cada tipo  de  nodo  define  el
tipo, nombre y valor por defecto de cada uno de  sus campos. El valor por
defecto del campo es utilizado si no se ha especificado su  valor  en  el
programa (guion) VRML. El orden en que son leidos los campos de  un guion
no reviste importancia. Por ejemplo:

"Cube { width 2 height 4 depth 6 }"
               y
"Cube {height 4 depth 6 width 2 }"

son equivalentes.

-------------------------------------------------------------------------
5.6- COMENTARIOS ("Comments")
-------------------------------------------------------------------------

Los comentarios son utilizados para hacer que la codificacion  del  guion
sea mas facilmente comprensible en tiempos futuros.  Cualquier  texto  en
una linea que comience con "#" es un comentario. Puede  ser  colocado  al
comienzo de la linea o en cualquier otro lugar de ella.

-------------------------------------------------------------------------
5.7- VRML 1.0- GRUPOS DE NODOS
-------------------------------------------------------------------------
Existe en VRML 1.0 un total de 36 tipos de Nodos.  Agrupandolos  para  su
mas facil interpretacion tendremos:

GRUPO A- NODOS DE FORMA  ("Shape Nodes").

   * AsciiText
   * Cone
   * Cube
   * Cylinder
   * IndexedFaceSet
   * IndexedLineSet
   * PointSet
   * Sphere

GRUPO B- NODOS DE APARIENCIA  ("Appearance Nodes")

   * Coordinate3
   * FontStyle
   - Info
   - LOD
   * Material
   - MaterialBinding
   - Normal
   - NormalBinding
   - ShapeHints
   * Texture2
   - Texture2Transform
   - TextureCoordinate2

GRUPO C- NODOS DE TRANSFORMACION  ("Transformation Nodes")
           - Sirven para mover, dar escala, y rotar objetos).

   - MatrixTransform
   * Rotation
   * Scale
   * Transform
   * Translation

GRUPO D- NODOS DE CAMARA  ("Camera Nodes")

   - OrthographicCamera
   - PerspectiveCamera

GRUPO E- NODOS DE ILUMINACION  ("Light Nodes")

   * DirectionalLight
   - PointLight
   * SpotLight

GRUPO F- NODOS DE AGRUPACION  ("Grouping Nodes")
           - Utilizados para agrupar informacion y tal vez para re-usarla
   * Group.
   * Separator.
   - Switch.
   - TransformSeparator.
   * WWW Anchor.

GRUPO G- OTROS NODOS

   - WWWInline

Dado el caracter introductorio de este Curso solo cubriremos, a traves de
ejemplos y ejercicios, aquellos nodos que resultan indispensables para un
manejo basico de situaciones espaciales (y que han sido señalados, en  el
listado de nodos mediante un asterisco) dejando  a  la  discrecion  y  al
interes del participante la tarea de  participar  en  aquellos  nodos  no
tratados aqui.

Para un maximo aprovechamiento  de  lo  transmitido  en  esta  unidad  se
recomienda   al  participante  disponer  de  un  VISUALIZADOR ("browser")
que le permita experimentar a  medida  que  se  desarrolla el resto de la
Unidad. Utilicese, por ejemplo el WorldView o el Cosmo Player

-------------------------------------------------------------------------
5.8- NODOS DE FORMA. Consideraciones.
       Nodos: Cube, Cylinder, Cone, Sphere, PointSet, IndexedLineSet,
              IndexedFaceSet, AsciiText
-------------------------------------------------------------------------

--> COSIDERACIONES INICIALES

Los Nodos de FORMA son aquellos destinados en VRML 1.0 a la descripcion
y construccion de los aspectos geometricos de la forma.

Los nodos de Forma definen la geometria en la Escena. Conceptualmente, son
los unicos nodos que permiten dibujar algo.

Identificaremos dos subdivisiones de nodos de Forma en VRML 1.0:

     - Las formas Basicas o Primitivas.
     - El trazado de Lineas y Superficies.


--> ESTABLECIENDO EL SISTEMA DE COORDENADAS TRIDIMENSIONALES

VRML utiliza un sistema de coordenadas tridimensionales de "mano derecha"
Esto se traduce como un sistema cuyos  ejes  crecen  positivamente  hacia
arriba, a la derecha y hacia adelante.

La unidad estandar utilizada para longitudes y distancias es  el  metro y
la utilizada para angulos es el radian.

Todas las coordenadas VRML se especifican  en  terminos de x, y, z. Donde
el eje positivo X crece horizontal  hacia  la  DERECHA, analogo al ANCHO,
mientras  que  el eje  vertical positivo  crece  vertical  hacia  ARRIBA,
analogo al ALTO y el Eje Z hacia  ADELANTE, hacia  el  observador  y  es
analogo a la PROFUNDIDAD..

--> DEFINIENDO EL ESPACIO TRIDIMENSIONAL

Una vez que un objeto ha sido ubicado  debidamente  en  relacion  con  el
centro absoluto  del  sistema  de  coordenadas  en 0,0,0  sera  necesario
orientarlo segun una (o mas) de tres formas. Ellas son:

       YAW ("guiñada")....Rotacion en torno al eje Y
     PITCH ("paso").......Rotacion en torno al eje X
      ROLL ("volteo")     Rotacion en torno al eje Z

El potencial de desplazarse segun una combinacion de los tres ejes y  las
tres modalidades de rotacion es lo que se  ha  dado  en  denominar  "seis
grados de libertad" donde la ubicacion y orientacion  de  objetos  en  el
ambito  tridimensional   queda  determinada  por  estas  seis  piezas  de
informacion.

--> FORMAS BASICAS O PRIMITIVAS

Para facilitar la tarea de programar y construir formas, el VRML predefine
cuatro de ellas en condicion de primitivas. Ellas son: Cubo, Cilindro, Cono
y Esfera.  En terminos de la sintaxis del VRML 1.0 y en su forma mas
elemental se los conoce como:

#VRML V1.0 ascii
Separator {Cube {}}

#VRML V1.0 ascii
Separator {Cylinder {}}

#VRML V1.0 ascii
Separator {Cone {}}

#VRML V1.0 ascii
Separator {Sphere {}}

Es conveniente ser lo mas ortodoxo posible en cuanto a la  ubicacion  del
encabezado. Este debe ubicarse en la  primera  linea  del  programa  y  a
partir de la primera  casilla. Si  no  se  respeta  esta  indicacion,  el
browser podria mostrarse incapaz de reconocer el modelo y arrojaria, como
consecuencia error de encabezado.

Otro punto importante a señalar es que el VRML  diferencia  entre  letras
mayusculas y letras minusculas ("case sensitive"), motivo por el cual  es
indispensable atender a la sintaxis con la cual  han  sido  especificados
los ejemplos en este y otros documentos relacionados con el tema.

Cada una de las tres primeras formas primitivas  arriba  descritas  posee
PARTES cuya manipulacion y control contribuyen a enriquecer sus posibili-
dades de representacion. La esfera, por el contrario, solo depende de  su
radio como recurso para cambiar su tamaño.

Adicionalmente, cada forma puede variar su tamaño

Asi tendremos:

    Forma                       P a r t e s                     Tamano

    CUBE........................................................w,h,d.

    CYLINDER.......ALL, SIDES, BOTTOM.............................r,h.

    CONE...........ALL, SIDES, BOTTOM.............................bR,h

    SPHERE........................................................r


w --> width  h --> height  d --> depth  r --> radius bR --> bottomRadius

Cuando se dibuja una Forma Basica se lo hace con centro en  el  origen  y
no posee color. Este y otros atributos deberan ser definidos  previamente
para poder ser utilizados.

Las Formas Basicas son huecas. Esto resulta de utilidad cuando  se  desea
representar   habitaciones.  Ademas,  las  formas   basicas  son  oscuras
interiormente a menos que el diseñador especifique una  luz dentro de  la
forma ("PointLight").

Cualquier geometria en un grafo-escena puede ser considerada una Forma.

Observese que cada uno de estos pequeños programas puede ser escrito  por
el participante en un procesador de palabras, luego almacenado  como Text
Only, es decir sin terminaciones de fin de  linea,  con  terminacion .wrl
(por ejemplo cubo.wrl) y luego accedido desde el plug-in de  VRML que  se
haya conectado  al  Netscape o  al  Explorer  (por ejemplo el WorldView),
desde el Menu File, opcion Open Page...  Como resultado,  debe  obtenerse
un cubo blanco que podra ser manipulado a voluntad con  las  herramientas
del plug-in.

Tambien es importante destacar que no es necesario  hallarse  "en  linea"
(en Red,  en  la  WWW)  para  utilizar  el  plug-in.  Basta  con  activar
inicialmente el Netscape fuera de  linea  y  cuando  intente  ponerse  en
linea, interrumpir el proceso, obteniendose como resultado un Netscape  o
Explorer incompleto para efectos de navegacion de la Red pero suficiente-
mente para ser utilizado por el plug-in de VRML (WorldView u otro).

Por  supuesto  que  estos  "primitivos"  aceptan  grados  progresivos  de
sofisticacion. Por ejemplo, en el caso del cubo, pudieramos tener:

#VRML V1.0 ascii

Separator {

        Material {
                diffuseColor 1 0 1
                shininess 0.2
                transparency 0
        } #Material

            Separator {

                Transform {
                        rotation .7 1 0 .7
                } #Transform

                Translation {
                        translation -45 30 0
                } #Translation

                Cube {
                        width   30
                        height  30
                        depth   30
                } #Cube

        } #Separator

} #Separator

Incorporando una muestra de color,  translacion,  rotacion,  dimensiones.
Cosas que se trataran en detalle en paginas subsiguientes.


--> TRAZADO DE LINEAS Y SUPERFICIES

( Nodos: Coordinate3, IndexedFaceSet, IndexedLineSet )

Ocurre que muchas veces no  nos  interesa  construir  formas  con base  a
la yuxtaposicion de volumenes primitivos sino que quisieramos hacerlo con
base  a  caras,  lineas  y  coordenadas.  En  arquitectura  esto  resulta
particularmente importante porque permite  al  diseñador  explorar  otros
tipos de formas o utilizar partes de las ya existentes.

Los tres NODOS que nos serviran de utilidad para este fin son:

-------------------------------------------------------------------------
Coordinate3    - Que sirve para especificar el conjunto de puntos  3-D  a
                 ser unidos. Cada punto se describe mediante tres coorde-
                 nadas enteras separadas por comas.
-------------------------------------------------------------------------

                  Ejemplo 1: Indicar seis puntos en el espacio 3-D

                Coordinate3 {
                        point [
                        0 75 25,                  #0
                        12.5 62.5 12.5,           #1
                        12.5 62.5 37.5,           #2
                        -12.5 62.5 37.5,          #3
                        -12.5 62.5 12.5,          #4
                        0 50 25,                  #5
                        ]
                } #Coordinate3

-------------------------------------------------------------------------
IndexedFaceSet - Que establece cuales puntos conforman una cara
-------------------------------------------------------------------------

               Ejemplo 2: Construir ocho caras triangulares en el espacio

                IndexedFaceSet {
                        coordIndex [
                                0, 1, 2, -1,     #A
                                0, 1, 4, -1,     #B
                                0, 4, 3, -1,     #C
                                0, 2, 3, -1,     #D
                                5, 1, 2, -1,     #E
                                5, 1, 4, -1,     #G
                                5, 3, 4, -1,     #H
                                5, 2, 3, -1,     #I
                                ]
                } #IndexedFaceSet

Observese que  el -1  se  utiliza  para  indicar  el  fin  de  cada  cara
geometrica en lo concerniente a su numero de bordes.De  esta  forma,   se
pueden describir caras con cualquier  numero  de  bordes. Cada uno de los
valores separados por  comas  que  describen  una  cara  debe  haber sido
registrado previamente en el nodo Coordinate3. Resulta indispensable para
caras de mas de tres bordes que los puntos se registren en orden segun la
secuencia en que se dibuja la cara.

-------------------------------------------------------------------------
IndexedLineSet - Que especifica los juegos de  dos  puntos  que  se  unen
                 mediante lineas.
-------------------------------------------------------------------------

               Ejemplo 3: Construir 12 lineas en el espacio

                IndexedLineSet {
                        coordIndex [
                          0, 1, -1,
                          0, 2, -1,
                          0, 3, -1,
                          0, 4, -1,
                          1, 4, -1,
                          1, 2, -1,
                          2, 3, -1,
                          3, 4, -1,
                          1, 5, -1,
                          2, 5, -1,
                          3, 5, -1,
                          4, 5, -1
                        ]
                } #IndexedLineSet

Donde cada uno de los dos primeros datos de  una  linea corresponde a  un
punto en el espacio cuyas coordenadas han  sido  almacenadas  previamente
mediante el nodo Coordinate3. Por ejemplo, si nos refirieramos al ejemplo
anterior, cada uno de los puntos de las lineas especificadas en  el  nodo
IndexedLineSet referiria a sus coordenadas  registradas  en  Coordinate3.

Observese que  el -1 se  utiliza  para  indicar  el  fin  de  cada  linea
geometrica. Si una linea se  trazara  a  traves  de  mas  de  dos  puntos
entonces   corresponderia   a  una  poligonal.  En  ese  caso  resultaria
indispensable que los puntos se suministraran segun la  secuencia  de  su
trazado.

*********************************************************************
EJERCICIO INTEGRADOR 1- Construir un octaedro en 3-D mediante lineas.
*********************************************************************

Incorporando los ejemplos 1 y 3 anteriormente mencionados tendremos:

#VRML V1.0 ascii

Separator {

        Material {
                ambientColor 0.2 0.2 0.2
                diffuseColor 0.8 0.8 0.8
                specularColor 0 0 0
                emissiveColor 0 0 0
                shininess 0.2
                transparency 0
        } #Material

        Separator {

                Coordinate3 {
                        point [
                        0 75 25,                  #0
                        12.5 62.5 12.5,           #1
                        12.5 62.5 37.5,           #2
                        -12.5 62.5 37.5,          #3
                        -12.5 62.5 12.5,          #4
                        0 50 25,                  #5
                        ]
                } #Coordinate3
                IndexedLineSet {
                        coordIndex [
                          0, 1, -1,
                          0, 2, -1,
                          0, 3, -1,
                          0, 4, -1,
                          1, 4, -1,
                          1, 2, -1,
                          2, 3, -1,
                          3, 4, -1,
                          1, 5, -1,
                          2, 5, -1,
                          3, 5, -1,
                          4, 5, -1
                        ]

                } #IndexedLineSet
        } #Separator
} #Separator

*********************************************************************
EJERCICIO INTEGRADOR 2- Construir un octaedro en 3-D mediante CARAS
                        y LINEAS. ( A ser desarrollado por el o la
                        participante en este Curso.)
*********************************************************************
Nota: En algunos  browsers  las  limitaciones  impuestas  por  la  fuente
      de iluminacion dificultaran  la  visibilidad  de  la  totalidad  de
      las caras del octaedro.


--> INCORPORACION DE TEXTO. EL NODO ASCIITEXT.

Ademas de los nodos para la descripcion y manipulacion de formas graficas
que integran este grupo, existe un nodo llamado AsciiText que nos permite
crear texto plano para la elaboracion de letreros. Su sintaxis VRML es:

AsciiText {
    string
    spacing
    justification
    width

Los cuatro CAMPOS que permiten precisar el uso del nodo son:

   - CADENA ("STRING")

El campo de string aloja el titulo del letrero o letreros que se  va(n) a
presentar. Su contenido debe  hallarse entre comillas.  Pueden  incluirse
multiples cadenas separadas  por comas y encerradas en  su  conjunto  por
corchetes. Por ejemplo:

    string ["CURSO INTRODUCTORIO AL VRML", "Caracas - Venezuela", "1998"]

   - ESPACIAMIENTO  ("SPACING")

El parametro de  espaciamiento ("spacing", se  refiere  a  la  altura  de
la separacion vertical entre las lineas  del texto utilizado, cuya opcion
de defecto es de 1 unidad, lo que significa que existira  una  separacion
vertical entre lineas de texto equivalente al alto de una linea. Ese alto
puede ser duplicado, triplicado etc. si se emplea el valor 2, 3 etc.

   - JUSTIFICACION  ("JUSTIFICATION")

El campo de justificacion determina la ubicacion de las cadenas de  texto
en la dimension x con base a:

     LEFT     Alinea el borde izquierdo de texto al origen.
     CENTER   Alinea el centro del texto al origen.
     RIGHT    Alinea el borde derecho de texto al origen.

   - ANCHURA ("WIDTH")

El campo  de  anchura  ("width")  es utilizado para  delimitar  el  ancho
del texto y lo  veremos con  mayor  detalle bajo el  nodo  FontStyle  del
grupo de nodos de APARIENCIA, que sigue a continuacion  de  este. Incluye
aspectos relativos a altura, tipo y estilo de letras a ser utilizadas.

El nodo  AsciiText representa cadenas de caracteres  de  texto basado  en
ASCII. Permite incorporar mensajes  en  las  escenas  graficas  a  medida
que  estas  se  van  construyendo.  La  primera  cadena   ubica  su  base
("baseline") en (0,0.0). Todas las cadenas subsiguientes avanzan por:

                -(size * spacing)

   - FORMATOS/OPCIONES DE DEFECTO  ("FILE FORMAT/DEFFECT")

     AsciiText {
          string         ""
          spacing        1
          justification  LEFT
          width          0

-------------------------------------------------------------------------
Ejemplo de publicacion de texto utilizando el nodo AsciiText.
-------------------------------------------------------------------------
#VRML V1.0 ascii
Separator {

        AsciiText {
                string  "CURSO INTRODUCTORIO AL VRML"
                spacing 1
                justification CENTER
                width 0
        } #AsciiText

} #Separator

--> TEXTURAS ("Textures").

Las texturas son aplicadas al texto tridimensional de la siguiente forma:

   - El origen de la textura se fija en el origen de la  primera  cadena,
     segun lo determine la justificacion. La textura se escala por  igual
     tanto en la dimension S como en la T, con la  altura de  las  letras
     establecida en una unidad. S crece hacia la  derecha. El origen de T
     puede ocurrir en cualquier  punto  a  lo  largo  de  cada  caracter,
     dependiendo de como este definida la silueta de ese caracter.

                                                              ...sigue


Siguiente entrega.
Indice del CURSO VRML.