CURSO VRML |
|
entrega 13
-------------------------------------------------------------------------
5.10- NODOS DE TRANSFORMACION. CONSIDERACIONES.
Nodos: Rotation, Scale, Transform, Translation.
-------------------------------------------------------------------------
--> Nodo TRANSLATION X Y Z
Permite desplazar en el espacio al objeto al cual se ha vinculado. Por
ejemplo:
Transform {
Translation { translation 10 -15 0 }
}
significa que se esta describiendo una translacion del cuerpo segun 10
unidades segun la direccion positiva del eje X y 15 unidades segun la
direccion negativa del eje Y. No se indica desplazamiento segun
el eje Z.
Recuerdese que siempre las transformaciones a impartir ANTECEDEN a la
descripcion geometrica de los objetos a ser transformados (rotados,
girados, cambiados de escala, etc.).
EJERCICIO- REPRESENTAR DOS ESFERAS DE COLORES
#VRML V1.0 ascii
Separator {
Separator { # esfera roja, en el centro de la pantalla- defecto)
Material {
diffuseColor 1 0 0
}
Sphere {}
}
Separator { # esfera azul transladada sobre el eje X positivo).
Translation {
translation 2.25 0 0
}
Material {
diffuseColor 0 0 1
}
Sphere {}
}
}
- Nodo ROTATION X Y Z ANGULO (EN RADIANES)
Resulta importante destacar que la formula para poder expresar grados
en radianes es:
Radianes = grados x 3.1416 / 180
Para rotar un cuerpo se indica mediante unos o ceros en las casillas
destinadas a x, y, z cuales son los ejes con despecto a los cuales se
rotara el objeto en el espacio. Se asume que el origen de coordenadas
se encuentra en el centro del cuerpo. Y luego se indica el angulo de
rotacion en radianes.
EQUIVALENCIAS PARA ANGULOS NOTABLES:
45 grados ----> .7854 radianes.
90 grados ----> 1.5708 radianes.
180 grados ----> 3.1416 radianes.
270 grados ----> 4.7124 radianes.
360 grados ----> 6.2832 radianes.
EJEMPLO:
Transform {
rotation 1 1 1 3.14
}
Significa que el cuerpo asi tratado realizara una rotacion alrededor de
los ejes x, y, z segun un angulo de 3.14 radianes (180 grados).
EJERCICIO- ROTAR UN CUBO ESPACIALMENTE SEGUN EL EJEMPLO ANTERIOR
#VRML V1.0 ascii
Separator {
Material {
diffuseColor 1 0 0
} #Material
Rotation { rotation 1 1 1 3.14 }
Cube{
width 9
height 9
depth 9
} #Cube
} #Separator
EJERCICIOS INTEGRADORES:
Se sugiere que el participante intente resolver el mismo estos ejercicios
que reunen diferentes aspectos de los conocimientos impartidos, pudiendo
consultar como ayuda las soluciones aqui planteadas.
************************************************************************
EJERCICIO INTEGRADOR- Representar un cubo coloreado de verde; luego
#1 transladarlo segun ejes X y Z en el espacio 3-D
luego rotarlo 180 grados en tres direcciones,
duplicandolo de tamano y, finalmente representarlo
otra vez utilizando como mecanismo el del cubo
dibujado inicialmente y coloreandolo de rojo..
************************************************************************
SOLUCION:
#VRML V1.0 ascii
Separator {
Material {
diffuseColor 0.30 0.36 0.21
} #Material
Translation { translation 0 0 20 }
DEF Cube1 Separator{
Cube{
width 3
height 3
depth 3
} #Cube
} #Cube1 Separator
Material {
diffuseColor 1 0 0
} #Material
Translation { translation 10 10 0 }
Rotation { rotation 1 1 1 3.14 }
Scale { scaleFactor 2 2 2 }
USE Cube1
} #Separator
CONSTRUCCION DE ESPACIOS ARQUITECTONICOS
( "Dame una pared y construire un mundo" )
Es posible construir paredes apoyandose para ello en el uso del
"primitivo" CUBO y haciendo una de sus dimensiones muy pequeñas como
espesor de la pared.
Ejemplo de Pared:
#VRML V1.0 ascii
Separator {
Material {
diffuseColor 1 1 0
} #Material
Cube {
width 5
height 4
depth 0.2
} #Cierra Cube
} #Cierra Separator
************************************************************************
EJERCICIO INTEGRADOR 2- CONSTRUIR UN AMBIENTE constituido por:
un piso, cuatro paredes, ventana y
puerta y rotar resultados para mostrar-
los en la pantalla del visualizador.
Luego, NAVEGAR manualmente entrando
por la puerta mediante el visualizador..
************************************************************************
#VRML V1.0 ascii
Separator {
Material {
diffuseColor 0.8 0.8 0.8
} #Material
Translation { translation 0 0 20 }
Rotation { rotation 1 0 0 0.8500 }
Rotation { rotation 0 1 0 0.7854 }
Rotation { rotation 0 0 0 0.7854 }
DEF Piso Cube {
width 7
height 0.2
depth 7
}
Translation {
translation 0 1.5 -3.5
} #Translation
DEF Pared1 Cube {
width 7
height 3
depth 0.2
}
Translation {
translation -3.2 -1 3.5
} #Translation
DEF Pared2 Cube {
width 0.2
height 1.3
depth 7
}
Translation {
translation 3.2 1 3.5
} #Translation
USE Pared1
Translation {
translation 3.5 0 -4.2
} #Translation
DEF Pared3 Cube {
width 0.2
height 3.0
depth 5.8
}
Translation {
translation -6.8 1.2 .8
} #Translation
DEF Pared4 Cube {
width 0.2
height .5
depth 7
}
}
Si el participante desea experimentar mas a fondo, podra:
1) Particionar el espacio interno, subdividiendolo.
2) Cambiar colores y texturas a paredes y piso.
3) "Fabricar" e incorporar mobiliario.
4) Añadir una "escala humana" (persona).
--> Nodo de ESCALA X Y Z
El nodo de Escala puede cambiar de escala (de hecho, REDIMENSIONAR) en
funcion de los ejes x (ancho), y (alto), z (profundidad).
EJEMPLO:
#VRML V1.0 ascii
Separator {
Scale {
scaleFactor 1 2 3
}
}
El numero indicado en el lugar de la correspondiente coordenada indica
si la escala se duplica (2) o se triplica (3).
--> El Nodo TRANSFORM
(Center, ScaleFactor, ScaleOrientation, Rotation, Transform,
Translation).
Como opciones de defecto, los OBJETOS en una ESCENA de VRML poseen:
- Su UBICACION en el centro de la pantalla.
- Su ORIENTACION segun la opcion de defecto de orientacion de la
escena.
- Sus dimensiones en funcion de sus coordenadas especificas o
de sus dimensiones especificadas, en el caso de PRIMITIVAS.
Cuando quiera que resulta necesario cambiar alguna de las opciones de
defecto para un objeto determinado (lo cual ocurrira casi siempre),
deberá recurrirse a uno o mas nodos de transformacion. Las tareas de
estos nodos son:
- Cambiar el objeto de ubicacion respecto a su CENTRO original.
- Cambiar la orientacion de los EJES del objeto.
- Cambiar las DIMENSIONES del objeto.
El Nodo TRANSFORM es utilizado para dar escala, posicionar o rotar
integradamente una forma en una escena. Adicionalmente, como esto
simplifica la descripcion de operaciones lo hace de gran utilidad para
situaciones de mayor grado de complejidad.que Su sintaxis VRML es:
Transform {
center #x y z
scaleFactor #x y z
scaleOrientation #x y z
rotation x y z #x y z angulo (en radianes)
translation x y z #x y z
}
Aun cuando pueden listarse los campos en cualquier orden, el orden en que
se desarrollen las operaciones a efectuar sera siempre el mismo: escala-
miento, rotacion y translacion.
Los diferentes campos pueden, sucintamente, describirse asi:
- CENTER X Y Z
Las coordenadas de Centro son particularmente importantes cuando la
accion a ejecutar concierne a rotacion, puesto que la misma se
ejecutara en derredor de ese punto. Es importante destacar que estas
coordenadas conciernen al centro del OBJETO y no al del Sistema de
Coordenadas, razon por la cual estas rotaciones se llevaran a cabo
identicamente donde quiera que se encuentre el cuerpo a ser rotado.
Por ejemplo "center 10, 0, 10" significa que estas coordenadas reubican
al centro del objeto, el cual, por defecto, esta inicialmente en 0,0,0.
CENTER permite especificar el punto alrededor del cual ocurrira la
rotacion. Supongamos que queremos rotar un cubo alrededor del eje Y
que pasa por su centro. Supongamos asi mismo que el centro del cubo se
encuentra en (-45, 30, 0). Para lograr la rotacion buscada deberemos
incluir las lineas:
center -45 30 0
y
rotation 0 1 0 2
- SCALEFACTOR X Y Z
Indica cual es el factor de escala que queremos adoptar para
representar nuestro "Mundo". Los factores menores que "1" reducen
eltamano original del objeto y los mayores que "1" lo incrementan.
En otras palabras el "factor de escala" nos permite redimensionar
objetos sin tener que recurrir, para ello, a variables algebraicoas.
Transform {
Scale { scaleFactor 2 1 3 }
}
Significa duplicar el ancho "x" del objeto, y triplicar su
espesor "z" sin modificar su altura "y".
- SCALEORIENTATION X Y Z
Sirve para especificar la forma de rotar el sistema de ejes coordenados
del objeto ANTES de someter a este a un cambio de escala, permite
redireccionar al cuerpo en cualquiera, o combinaciones de, sus tres
dimensiones.
************************************************************************
EJERCICIO INTEGRADOR 3- COMPOSICION CON VOLUMENES. Hacer una
composicion 3-D utilizando CONO, CUBO,
CILINDRO Y ESFERA y asignando color.
************************************************************************
SOLUCION:
#VRML V1.0 ascii
Separator {
Material {
diffuseColor 1 1 0
shininess 0.2
transparency 0
} #Material
MaterialBinding {
value DEFAULT
} #MaterialBinding
DEF Cone1 Separator {
Translation {
translation 0 30 0
} #Translation
Cone {
parts ALL
bottomRadius 15
height 30
} #Cone
} #Cone1 Separator
DEF Cube1 Separator {
Transform {
rotation 0 1 0 .7
} #Transform
Translation {
translation -45 30 0
} #Translation
Cube {
width 30
height 30
depth 30
} #Cube
} #Cube1 Separator
DEF Cylinder1 Separator {
Translation {
translation 45 30 0
} #Translation
Cylinder {
parts ALL
radius 15
height 30
} #Cylinder
} #Cylinder1 Separator
DEF Sphere1 Separator {
Texture2 {
filename "wood4.jpg"
}
Translation {
translation 0 75 0
} #Translation
Sphere {
radius 15
}#Sphere
} #Sphere1 Separator
} #Separator
Observese que las opciones Center, ScalingFactor, ScaleOrientation poseen
un grado limitado de autonomia que les permite actuar independientemente
del nodo TRANSFORM. Sin embargo, al no ser nodos como tales, no admiten
la posibilidad de subordinar otros nodos bajo el esquema padre-hijos.
...sigue
|
|