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 superestructura: 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. Superestructura – 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