Download UNIDAD II. TRANSFORMACIONES GEOMÉTRICAS

Document related concepts
no text concepts found
Transcript
Graficación
UNIDAD II.­ TRANSFORMACIONES GEOMÉTRICAS
___________________________________________________________________
LECCIÓN 2.6.­ Representación matricial de transformaciones tridimensionales
___________________________________________________________________
2.6.1.­ Proceso de Renderizado 3D
–
En gráficas 2D la renderización de la imagen produce una imagen 2D.
–
En gráficas 3D la renderización produce una imagen 2D.
–
Problemas relacionados con el renderizado de gráficas 3D:
–
La geometría de los objetos.
–
Localización y posición de los objetos.
–
Transformaciones geométricas aplicadas a los objetos y las vistas.
–
Las propiedades materiales y de textura de los objetos.
–
Luces y sus características
–
Tipos de proyecciones en una vista.
Rafael Rivera López
1
Graficación
–
Propiedades como la posición y el campo de la vista
–
Modelos de iluminación y sombreado.
–
Comportamiento dinámico de los compontes.
Objetos gráficos:
–
Puntos, lineas, superficies y sólidos..
Transformaciones:
–
Afines tridimensionales.
–
Proyectivas
Propiedades:
–
colores, texturas, material.
–
Iluminación.
2.6.2.­ Java 3D
–
Para organizar todos los elementos involucrados es una escena, Java 3D utiliza un grafo de escena
–
Utiliza objetoss uperstructura, objetos nodo y componentes nodo.
–
El grafo de escena define las geometrías, apariencia, luces y vistas
package procimagenes;
import
import
import
import
java.awt.*;
javax.swing.*;
javax.media.j3d.*;
javax.vecmath.*;
Rafael Rivera López
2
Graficación
import com.sun.j3d.utils.universe.*;
public class TresD extends JPanel{
public TresD() {
setSize(400,400);
setLayout(new BorderLayout());
GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
Canvas3D cv = new Canvas3D(gc);
add(cv, BorderLayout.CENTER);
BranchGroup bg = createSceneGraph();
bg.compile();
SimpleUniverse su = new SimpleUniverse(cv);
su.getViewingPlatform().setNominalViewingTransform();
su.addBranchGraph(bg);
}
private BranchGroup createSceneGraph() {
BranchGroup root = new BranchGroup();
// object
Appearance ap = new Appearance();
ap.setMaterial(new Material());
Font3D font = new Font3D(new Font("SansSerif", Font.PLAIN, 1),
new FontExtrusion());
Text3D text = new Text3D(font, "Hola 3D");
Shape3D shape = new Shape3D(text, ap);
// transformation
Transform3D tr = new Transform3D();
tr.setScale(0.5);
tr.setTranslation(new Vector3f(-0.95f, -0.2f, 0f));
TransformGroup tg = new TransformGroup(tr);
root.addChild(tg);
tg.addChild(shape);
// light
PointLight light = new PointLight(new Color3f(Color.white),
new Point3f(1f,1f,1f),
new Point3f(1f,0.1f,0f));
BoundingSphere bounds = new BoundingSphere();
light.setInfluencingBounds(bounds);
root.addChild(light);
return root;
}
}
Rafael Rivera López
3
Graficación
–
Se crea un objeto Canvas3D
–
El método createSceneGraph() define el grafo de escena de la aplicación.
–
La clase SimpleUniverse un esquema para el renderizado 3D
–
Paquetes de Java3D
–
j3dcore.jar
–
j3dutils.jar
–
vecmath.jar
2.6.3.­ Grafo de escena de Java 3D
–
El grafo de escena construye un universo virtual que incluye todos los elementos necesarios
–
Es un modelo matemático para la organización de una escena
–
El grafo de escena es una estructura de datos con forma de árbol.
–
Elementos
Rafael Rivera López
4
Graficación
Una escena gráfica tiene tres partes.
Raiz: Es una super­estructura: Objetos de las clases VirtualUniverse y Locale.
Cuerpo Principal: Arbol de objetos iniciando con un Objeto Node
Parte Final: Conjunto de objetos NodeComponent
Rafael Rivera López
5
Graficación
2.6.4.­ Super­estructura
–
Se forma de los objetos VirtualUniverse y Locale.
–
Un programa solo tiene un objeto VirtualUniverse
–
Representa el espacio donde se va a renderizar la escena 3D.
–
Clase HiResCoord: Representa las coordenadas del universo
–
Una tripleta (32 bytes) para representar las coordenadas (16 para la parte entera y 16 para la parte fraccional).
–
–
1.0 representa 1 metro.
Clase Locale: Representa un espacio local más pequeño.
–
Representa las coordenadas con numeros de punto flotante.
–
Un universo puede tener varios objetos Locale.
–
Un objeto Locale tiene un grafo asignado
–
Locale(VirtualUniverse vu)
–
Locale(VirtualUniverse vu, HiResCoord location)
–
Locale(VirtualUniverse vu, int[] x, int[] y, int[] z)
Rafael Rivera López
6
Graficación
–
Forma de enlazar el universo y la localidad
VirtualUniverse universe = new VirtualUniverse();
Locale locale = new Locale(universe);
–
La clase SimpleUniverse incluye un objeto Locale.
–
Las ramas de una escena gráfica se inicia en un objeto BranchGroup usando el método:
void addBranchGraph(BranchGroup branch)
2.6.5.­ Cuerpo Principal
–
–
Nodos: Son los elementos principales de la estructura la escena gráfica.
–
Grupo: Nodos internos –
Hojas: Nodos finales
Nodo Grupo: Son los bloques constructores de una escena gráfica.
Rafael Rivera López
7
Graficación
–
–
–
Un grupo mantiene una lista de hijos:
–
void addChild(Node child)
–
void insertChild(Node child, int index)
BranchGroup:
–
Es la raíz de una rama de una escena gráfica. –
Es el único elemento asociado a un objeto Locale
OrderedGroup:
–
–
Primitive:
–
–
Define el orden de interpretación de sus hijos.
Representa a una primitiva geométrica completa (esfera).
SharedGroup:
–
Representa una rama que puede ser compartida por varios hijos.
Rafael Rivera López
8
Graficación
–
Switch: –
Actúa como un switch para seleccionar la interpretación de los objetos dentro de la rama.
–
TransformedGroup:
–
Representa una transformación geométrica para todos los hijos de la rama, a traves de un objeto Transform3D.
–
Nodo Hoja: Representan objetos gráficos, sonidos y otros objetos de una escena gráfica.
–
No tienen hijos pere hacen referencia a los nodos componentes
Rafael Rivera López
9
Graficación
2.6.6.­ Parte Final
–
Los nodos hoja tienen atributos para otros objetos.
–
Son instancias de NodeComponente
–
Definen geometrias, colores, texturas y materiales
Rafael Rivera López
10