Representación de objetos en tres
dimensiones
El diseño ayudado por ordenador representa un
gran ahorro de esfuerzo y tiempo. Ademas se consiguen resultados
extraordinarios con respecto a los procedimientos clasicos de
diseño. Los programas de diseño industrial o
arquitectónico admiten tres maneras de representación de objetos.
Modelos bidimensionales del objeto o parte de él.
Se reproducen separadamente las diferentes caras,
planos o cortes para ser estudiados y modificados. Normalmente se utiliza una
representación formal del objeto, obteniendo sus vistas
desde diferentes puntos de visualización. Se denominan vistas
principales de un objeto, a las proyecciones
ortogonales del
mismo sobre 6 planos, dispuestos en forma de cubo. También se
podría definir las vistas como, las proyecciones ortogonales
de un objeto, según las distintas direcciones desde donde se mire. Si
situamos un observador según las seis
direcciones indicadas por las flechas, obtendríamos las seis vistas
posibles de un objeto.
Modelos tridimensionales que incluyan únicamente un
conjunto de puntos y líneas en el espacio. Estos
modelos se llaman “wireframe” o alambrado (armazón de
alambre). El objeto así representado rota en
diferentes angulos para su estudio o transformación definitiva.
Existen varias formas de representación en modo wireframe:
1. Representación alambrica: Activa este modo
de sombreado.
2. Representación alambrica det: Se muestran bordes alambricos e
iluminación
3. Area de trabajo: Muestra los objetos como area de
trabajo solamente. El areade trabajo se define como la caja
mas pequeña que abarca completamente un objeto.
Modelos sólidos que incluyen el dibujo de superficies
y son los mas completos y complejos.
1. Suavizado + Resaltes: Activa este modo de
sombreado, que permite ver la homogeneidad e iluminación de los objetos.
También puede presentar mapas en la superficie de
objetos. Esto sucede mapa a mapa, pero puede presentar tantos mapas como
desee simultaneamente en el visor. Los mapas
sólo aparecen en objetos que tienen coordenadas de mapeado.
2. Suavizado: Muestra suavizado, pero no resaltes
Espacio tridimensional
El espacio 3D es un espacio matematico virtual
creado por el programa de diseño 3D. Este espacio esta definido
por un sistema cartesiano de tres ejes: X, Y, Z. El
punto donde salen las líneas virtuales que definen los ejes se llama
origen y sus coordenadas son (0, 0, 0). En este
espacio virtual se crean, modifican y disponen los diferentes objetos tridimensionales
que van a componer la escena.
Fundamentos basicos del modelado en 3D
El 3D es una mera representación de coordenadas, que conforman
estructuras envueltas por una textura.
Por tanto, primero se deben construir un modelo, para
ello hay técnicas de modelado comunes, en las cuales se
encuentran:
1. Estructuras Predefinidas: Aquellas estructuras ya armadas por el sistema.
Existen tres tipos:
1. Primitivas: caja, cono, esfera, geo esfera, cilindro, tubo, anillo,
piramide, tetera y plano.
2. Primitivas Extendidas: hedra, nudo toroide, caja 'redondeada',
cilindro'redondeado', tanque de aceite, capsula, sprindle, forma L,
gengon, forma c, anillo ondulado, hose, prisma.
3. Librerías: son formas armadas, disponibles en 3d Max 7; puertas,
ventanas, arboles, escaleras.
2. Box Modeling: Como
su nombre lo indica, es el modelado de figuras complejas a través de una
caja. Empleando un modificador de mallas, Edith Mesh,
podran ir extendiendo la caja, convirtiéndola en otra cosa.
3. NURBS Modeling: Es una técnica para construir mallas de alta complejidad, de aspecto organico ó
curvado, que emplea como
punto de partida splines (figuras 2d) para mediante diversos métodos,
crear la malla 3d anidando los splines.
Renderizado
El renderizado es un proceso de calculo
complejo desarrollado por un ordenador destinado a generar una imagen 2D a
partir de una escena 3D. Así podría decirse que
en el proceso de renderización, la computadora 'interpreta' la
escena 3D y la plasma en una imagen 2D.
La renderización se aplica a los graficos por ordenador,
mas comúnmente a la infografía. En infografía este
proceso se desarrolla con el fin de imitar un espacio 3D formado por
estructuras poligonales, comportamiento de luces, texturas, materiales,
animación, simulando ambientes y estructuras físicas
verosímiles, etc. Una de la partes mas importantes de los
programas dedicados a la infografía son los motores de render los cuales
son capaces de realizar técnicas complejas como radiosidad, raytrace
(trazador de rayos), canal alpha, reflexión, refracción,
iluminación global, etc.
Cuando se trabaja en un programa dediseño 3D por computadora, no
es
posible visualizar en tiempo real el acabado final deseado de una escena 3D
compleja ya que esto requiere una potencia de calculo demasiado elevada.
Por lo que se opta por crear el entorno 3D con una forma de
visualización mas simple y técnica y luego generar el
lento proceso de renderización para conseguir los esultados finales
deseados.
Proyecciones
En dos dimensiones, las operaciones de visión transfieren puntos
bidimensionales en el plano
coordenado mundial a puntos bidimensionales en el plano
de coordenadas del
dispositivo. Las definiciones de objetos, sujetados contra el marco de una ventana, se delinean en un puerto de
visión (viewport). Estas coordenadas de dispositivo
normalizadas se convierten después en coordenadas de dispositivo y el
objeto se despliega en el dispositivo de salida.
En tres dimensiones, la situación es un poco
mas complicada, ya que ahora tenemos algunas alternativas como la forma en que se
van a generar las vistas. Podríamos visualizar una
escena desde el frente, desde arriba o bien desde atras.
También podríamos generar una vista de lo que
observaríamos si estuviéramos parados en medio de un grupo de objetos. Ademas, las descripciones
tridimensionales de objetos deben proyectarse en la superficie de visión
plana del
dispositivo de salida.
La visualización en nuestro caso significa información del
mundo real en la pantalla. La visualización 2D son las operaciones de
transferencia de puntos bidimensionales en el plano coordenado del
mundo en el plano
coordenadodel dispositivo.
Existen dos métodos basicos para proyectar
objetos tridimensionales sobre una superficie de visión bidimensional.
Estas dos maneras, dependen de si todos los puntos del objeto pueden
proyectarse sobre la superficie a lo largo de líneas paralelas o bien
los puntos pueden proyectarse a lo largo de líneas que convergen a una
posición denominada centro de proyección. En ambos casos, la
intersección de una línea de proyección con la superficie
de visión determina las coordenadas del punto proyectado sobre este plano de
proyección.
Proyecciones
Visualización de Objetos
El universo 3D entero no es completamente observable en una pantalla 2D.
Sino que solo una parte del mismo sera visible, en
un determinado momento, bajo una determinada posición y
orientación de camara.
La camara mencionada anteriormente representa el ojo desde el cual se
esta observando el universo 3D en un
determinado momento, y se la denomina Frustum. El Frustum es una figura
geométrica de aspecto piramidal, que delimita la región de
espacio del
universo 3D que terminara siendo visible en pantalla.
Consiste en una piramide rectangular compuesto por seis planos: near
plane, far plane, left plane, right plane, top plane y bottom plane. El volumen
encerrado entre estos planos dependera de los valores configurados de la
camara: Position: lugar en el espacio en donde se encuentra la camara,
en un momento determinado
Look at: dirección hacia donde apunta la camara en un momento
determinado, partiendo desde laposición especificada anteriormente.
Near distance: distancia que existe entre la posición de la
camara y el near plane del Frustum. Indica la distancia a partir de lo cual todo empieza a ser visible.
Aquello que se encuentre entre la camara y el near
plane, es decir, demasiado cerca al ojo de la camara, no sera
visible.
Far distance: distancia maxima a la que un
objeto sera visible. Determina la posición del far plane del
Frustum. Es analogo a la visibilidad maxima que
puede ver el ojo.
Aspect Ratio: es relación entre el ancho y el alto de la pantalla 2D
sobre la que se va a proyectar el mundo 3D. Se calcula dividiendo el ancho de la pantalla por el alto de la
misma. Ratio = width / height
FOV: indica el angulo de visión respecto del eje Y. Es lo
que determina el ensanchamiento de la piramide del Frustum, desde el
near plane al far plane. Normalmente toma un valor
entre 40° y 60°.
Todos los triangulos de todos los modelos del universo 3D que se encuentren dentro del volumen del Frustum
seran visibles en pantalla (exceptuando aquellos que se interponen ante
otros). Aquellos triangulos que se encuentran parte dentro del Frustum y parte afuera, seran recortados hasta
dejar solo la parte de los mismos que es visible (triangle splitting). A este proceso de determinar que triangulos caen dentro del
volumen de visión se lo denomina Frustum Culling, y puede ser realizado
en distintas etapas: a nivel de la aplicación o directamente por el
adaptador de video.
Una vez que se ha calculado los triangulos que se encuentran dentrodel
Frustum, habra que tener en cuenta que algunos estaran tapando a otros, en lo que respecta a al ojo de la camara.
Por lo tanto no todos los triangulos dentro del
Frustum terminaran convirtiéndose realmente en pixels de
pantalla. A este proceso se lo denomina Occlusion
Culling.
Por lo tanto el concepto de Rendering consiste en calcular, para una
camara determinada, dentro de un universo 3D
determinado, que pixels deberan ser dibujados en pantalla. El proceso de Rendering es bastante complejo e involucra varias
etapas.
Gracias a la existencia de APIs graficas como OpenGL y
DirectX, junto con el apoyo de los adaptadores de video, el programador
normalmente no debe ocuparse de todo este proceso de transformación.
Sino que se limita a especificar la geometría del mundo que
quiere representar en el modelo lógico de 3D dimensiones, y luego la API
grafica en cuestión sera la encargada de transformar ese
mundo 3D en una matriz bidimensional de pixels.
Transformaciones Tridimensionales
Muchos de nuestros objetos del
universo 3D seran estaticos, como paredes, terrenos y objetos de
decoración, pero otros objetos requeriran movimiento. En 3D existen tres tipos de movimientos basicos que
combinados conforman todas las alternativas necesarias. Estos
movimientos se denominan transformaciones, dado que consisten en
transformaciones lineales de coordenadas y son los siguientes
· Traslación (translation): consiste en mover cada punto por una
distancia constante, en una dirección específica.
· Rotación(rotation): movimiento de un
objeto siguiendo una ruta circular
· Escalado (scaling): incrementa o disminuye el tamaño de un
objeto, por un factor de escalar.
Transformation Matrix
Para aplicar cada uno de los tres movimientos
a una malla compuesta por triangulos, sería necesario desplazar
cada uno de los vértices de la misma al lugar correspondiente.
Esta operación es engorrosa para objetos de mucha complejidad y se torna
aún mas complicado cuando se quieren acumular movimientos, por
ejemplo: trasladarse, luego rotar y luego volver a trasladarse.
Es por ello que las APIs graficas cuentan con una herramienta destinada
a facilitar el movimiento de objetos denominada Transformation Matrix. Esta
matriz tiene una estructura de 4x4
La matriz es utilizada para representar todas las transformaciones necesarias
para mover un objeto 3D en el universo. Los valores
contenidos en la matriz son utilizados para mover, rotar y escalar objetos.
Cada fila de la matriz representa la coordenada en el
universo de cada eje. La primer fila contiene la posición del eje X, la segunda del eje Y y la tercera del eje Z. Cada elemento de la matriz representa
una porción de la transformación. La matriz es inicialmente
cargada con la matriz identidad.
La ventaja de almacenar los movimientos de los objetos 3D con esta matriz y no
con vectores sueltos es que todos los movimientos, rotaciones y escalados a hacer
a un objeto en un cuadro de animación pueden
almacenarse en una sola matriz. Esto es graciasa la
multiplicación de matrices.
Si queremos mover un objeto, después rotarlo y
luego volverlo a mover podemos crear las matrices necesarias para cada movimiento
y luego multiplicarlas todas, y así obtener una sola matriz resultante
que engloba todo el movimiento completo.
De esta forma, la API grafica solo recibe una única matriz que
representa el movimiento total de un objeto 3D en un
momento determinado, y se reduce el almacenamiento de memoria requerido.
Transformaciones Tridimensionales
Muchos de nuestros objetos del
universo 3D seran estaticos, como paredes, terrenos y objetos de
decoración, pero otros objetos requeriran movimiento. En 3D existen tres tipos de movimientos basicos que
combinados conforman todas las alternativas necesarias. Estos
movimientos se denominan transformaciones, dado que consisten en
transformaciones lineales de coordenadas y son los siguientes
· Traslación (translation): consiste en mover cada punto por una
distancia constante, en una dirección específica.
· Rotación (rotation): movimiento de un
objeto siguiendo una ruta circular
· Escalado (scaling): incrementa o disminuye el tamaño de un
objeto, por un factor de escalar.
Transformation Matrix
Para aplicar cada uno de los tres movimientos
a una malla compuesta por triangulos, sería necesario desplazar
cada uno de los vértices de la misma al lugar correspondiente.
Esta operación es engorrosa para objetos de mucha complejidad y se torna
aún mas complicado cuando sequieren acumular movimientos, por
ejemplo: trasladarse, luego rotar y luego volver a trasladarse.
Es por ello que las APIs graficas cuentan con una herramienta destinada
a facilitar el movimiento de objetos denominada Transformation Matrix. Esta
matriz tiene una estructura de 4x4
La matriz es utilizada para representar todas las transformaciones necesarias
para mover un objeto 3D en el universo. Los valores
contenidos en la matriz son utilizados para mover, rotar y escalar objetos.
Cada fila de la matriz representa la coordenada en el
universo de cada eje. La primer fila contiene la posición del eje X, la segunda del eje Y y la tercera del eje Z. Cada elemento de la matriz
representa una porción de la transformación. La matriz es
inicialmente cargada con la matriz identidad.
La ventaja de almacenar los movimientos de los objetos 3D con esta matriz y no
con vectores sueltos es que todos los movimientos, rotaciones y escalados a
hacer a un objeto en un cuadro de animación
pueden almacenarse en una sola matriz. Esto es gracias a la
multiplicación de matrices.
Si queremos mover un objeto, después rotarlo y
luego volverlo a mover podemos crear las matrices necesarias para cada
movimiento y luego multiplicarlas todas, y así obtener una sola matriz
resultante que engloba todo el movimiento completo.
De esta forma, la API grafica solo recibe una única matriz que
representa el movimiento total de un objeto 3D en un
momento determinado, y se reduce el almacenamiento de memoria requerido.