El API de WebGL JUAN CARLOS CONDE RAMÍREZ COMPUTER ANIMATION

Tamaño: px
Comenzar la demostración a partir de la página:

Download "El API de WebGL JUAN CARLOS CONDE RAMÍREZ COMPUTER ANIMATION"

Transcripción

1 El API de WebGL JUAN CARLOS CONDE RAMÍREZ COMPUTER ANIMATION

2 Evolución de los gráficos, I Los conceptos básicos de gráficos interactivos no han cambiando mucho desde hace varios años. Por otro lado, las implementaciones evolucionan continuamente, en especial por la reciente proliferación de dispositivos y S. O. La piedra angular de todos estos cambios siempre ha sido OpenGL. Creado a finales de los 80 s, OpenGL ha sido por mucho tiempo el API estándar para la industria. Ha superado amenazas competitivas por parte de DirectX de Microsoft, emergiendo como el estándar indiscutible para la programación de gráficos 3D. Las características de las distintas plataformas como: computadoras de escritorio, televisiones, teléfonos inteligentes y tabletas, son tan divergentes que se han tenido que desarrollar diferentes versiones de OpenGL. FCC-BUAP 2

3 Evolución de los gráficos, II OpenGL ES (for Embedded Systems) es la versión de OpenGL desarrollada para ejecutarse sobre pequeños dispositivos (dispositivos móviles). Quizás de forma fortuita, ya que no se planeó al momento de su desarrollo, pero OpenGL ES se ha vuelto el núcleo ideal para WebGL. El API de WebGL es pequeño y ligero, lo que significa que no sólo es fácil de implementar en un navegador, sino que también es más seguro que se implemente dentro de los navegadores actuales. Así una aplicación WebGL escrita para determinado navegador funcionará de forma similar en otro. FCC-BUAP 3

4 Evolución de los gráficos, III Para el desarrollador Web promedio, WebGL representa una curva de aprendizaje llena de conceptos bastante especiales, por no decir extraños. Otra vez la buena noticia es que existen varias librerías de código abierto que hacen que el desarrollo con WebGL sea más accesible e incluso divertido. FCC-BUAP 4

5 Pipeline gráfico de WebGL FCC-BUAP 5

6 Anatomía de una aplicación WebGL, I Al final del día, WebGL sólo es una librería de dibujo una biblioteca de dibujo con esteroides, considerando la calidad y el potencial de los gráficos que pueden obtenerse con WebGL quien aprovecha al máximo el hardware gráfico de la mayoría de los dispositivos actuales. Pero la realidad es que sólo se trata de otro tipo de lienzo (canvas), similar al canvas 2D soportado de forma nativa en todo navegador con HTML5. De hecho WebGL utiliza el elemento <canvas> de HTML5 para mostrar gráficos 3D dentro de una página Web. FCC-BUAP 6

7 Anatomía de una aplicación WebGL, II Con el fin de renderizar objetos 3D con WebGL, una aplicación debe implementar los siguientes 8 pasos básicos: 1. Crear un elemento canvas. 2. Establecer un contexto de dibujo para el elemento canvas. 3. Inicializar el viewport o puerto de visión. 4. Inicializar una o más matrices para definir transformaciones desde el buffer de vértices (vertex buffer) hasta el espacio en pantalla. 5. Crear uno o más buffers que contengan los datos a ser renderizados (normalmente vértices). 6. Crear uno o más shaders para implementar el algoritmo de dibujado. 7. Inicializar los shaders con parámetros. 8. Dibujar. FCC-BUAP 7

8 canvas y contexto de dibujo, I Todo el renderizado de WebGL toma lugar dentro de un contexto determinado; un objeto DOM de JavaScript proporciona el API completa de WebGL. Esta estructura refleja el contexto de dibujo 2D provisto en la etiqueta <canvas> de HTML5. Por lo tanto, lo primero que se debe hacer es: Crea el elemento <canvas> en algún lugar de la página. Obtén el objeto DOM asociado con el elemento <canvas> mediante la instrucción: document.getelementbyid(..) Obtener un contexto WebGL para el objeto DOM del elemento <canvas> FCC-BUAP 8

9 canvas y contexto de dibujo, II Ejemplo 1-1. Obtención de un contexto WebGL desde un canvas. function initwebgl(canvas) { var gl; try { gl = canvas.getcontext("experimental-webgl"); } catch (e) { var msg = "Error creating WebGL Context!: " + e.tostring(); alert(msg); throw Error(msg); } return gl; } FCC-BUAP 9

10 canvas y contexto de dibujo, III Nótese que el bloque try/catch del ejemplo anterior es útil para los casos en donde el navegador no soporta WebGL, ya sea por el tipo o por la versión del navegador. Incluso puede darse el caso de navegadores que soporten WebGL ejecutándose sobre hardware obsoleto que no sea capas de brindar un contexto válido de renderizado para WebGL. Así que un código como el anterior, que detecta dicho soporte, será de gran utilidad para optar por la implementación de un renderizado de respaldo basado en un canvas 2D o al menos para poder proporcionar una salida elegante. FCC-BUAP 10

11 El viewport, I Una vez que se ha obtenido un contexto válido de dibujo para WebGL, a partir del canvas, es necesario especificar los límites rectangulares en donde se va a dibujar. A esto se le conoce como viewport en WebGL. La configuración del viewport en WebGL es simple; sólo se debe llamar al método viewport() del contexto. Ejemplo 1-2. Configuración delviewport dewebgl. function initviewport(gl, canvas) { gl.viewport(0, 0, canvas.width, canvas.height); } FCC-BUAP 11

12 El viewport, II Nótese que el objeto gl utilizado aquí es el mismo que se creo anteriormente en initwebgl(). En este caso, se ha inicializado el viewport de WebGL para ocupar el área completa de visualización del canvas. FCC-BUAP 12

13 Buffers y Arrays, I Ahora si ya está todo listo para comenzar a dibujar con WebGL. El dibujo con WebGL se realiza con primitivas que son tipos de objetos para dibujar tales como conjuntos de: puntos, líneas, triángulos (arreglos de triángulos) o tiras de triángulos (descritos de forma más corta). Tales primitivas utilizan arreglos de datos, llamados buffers para definir las posiciones de los vértices que serán dibujados. FCC-BUAP 13

14 Buffers y Arrays, II En el Ejemplo 1-3 se muestra cómo crear un buffer de datos para los vértices de un cuadrado de una unidad largo (1x1). Los resultados son retornados en un objeto de JavaScript que contiene los datos del buffer de vértices, el tamaño de la estructura de vértices (en este caso, tres números de coma flotante para almacenar x, y, y z), el número de vértices y el tipo de primitiva que será usada para dibujar el cuadrado, para este ejemplo se usa una tira de triángulos (triangle strip). Un triangle strip es una primitiva que define una secuencia de triángulos usando los primeros tres vértices para crear el primer triángulo, y cada vértice subsecuente junto con los dos anteriores para crear los siguientes. FCC-BUAP 14

15 Buffers y Arrays, III Ejemplo 1-3. Creación del buffer de datos para los vértices de un cuadrado de 1x1 unidades. function createsquare(gl) { var vertexbuffer; vertexbuffer = gl.createbuffer(); gl.bindbuffer(gl.array_buffer, vertexbuffer); var verts = [ 0.5, 0.5, 0.0, -0.5, 0.5, 0.0, 0.5, -0.5, 0.0, -0.5, -0.5, 0.0 ]; gl.bufferdata(gl.array_buffer, new Float32Array(verts), gl.static_draw); var square = {buffer:vertexbuffer, vertsize:3, nverts:4, primtype:gl.triangle_strip}; return square; } FCC-BUAP 15

16 Buffers y Arrays, IV Nótese que el tipo Float32Array es un nuevo tipo de dato introducido a los navegadores Web para uso de WebGL. Float32Array es una clase de BufferArray, también conocido como arreglo tipado (typed array). Éste es un tipo de tipo de JavaScript que almacena datos binarios compactos. Los arreglos tipados pueden ser accedidos desde JavaScript utilizando la misma sintaxis de los arreglos ordinarios, pero son más rápidos y consumen menos memoria. Son ideales para usarse con datos binarios cuando el rendimiento es crítico. FCC-BUAP 16

17 Buffers y Arrays, V Los arreglos tipados son de uso general, pero su introducción dentro de los navegadores Web fue gracias a los esfuerzos iniciales de WebGL. La última especificación puede ser consultada en el sitio Web del grupo Khronos en: FCC-BUAP 17

18 Matrices, I Antes de que se pueda dibujar, por ejemplo un cuadrado, se deben crear un par de matrices. Primero, se necesita una matriz para definir dónde será posicionado el cuadrado dentro del sistema de coordenadas 3D, relativo a la cámara activa. Esta es conocida como matriz ModelView, debido a que combina transformaciones del modelo (malla 3D) y de la cámara. En el Ejemplo 1-4, se está transformando el cuadrado a través de una traslación a lo largo del eje negativo de Z (i.e. alejándolo de la cámara unidades). FCC-BUAP 18

19 Matrices, II La segunda matriz que se necesita es la matriz de proyección (projection matrix), la cual será requerida por el shader para convertir el espacio de coordenadas 3D del modelo (espacio de la cámara) en coordenadas de dibujo 2D (espacio del viewport). Esta matriz es bastante desagradable; la mayor parte de los programadores no codifica las matrices de proyección a mano, por lo general usa librerías. Existe una gran librería de código abierto llamada glmatrix que realiza matemáticas matriciales en JavaScript ( por Brandon Jones). FCC-BUAP 19

20 Matrices, III Ejemplo 1-4. Configuración de las matrices ModelView y de Proyección. function initmatrices() { // Matriz de transformación para el cuadrado traslación negativa en Z // para la cámara modelviewmatrix = new Float32Array( [1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 3.333, 1]); // Matriz de proyección (para un campo de visión de 45 grados) projectionmatrix = new Float32Array( [ , 0, 0, 0, 0, , 0, 0, 0, 0, , 1, 0, 0, , 0]); } FCC-BUAP 20

21 Los shaders, I Hay una pieza más de la configuración que considerar: el shader. Como se mencionó antes, los shaders son pequeños programas escritos en un lenguaje de alto nivel tipo C, que definen cómo serán mostrados los pixeles de los objetos 3D dibujados en pantalla. WebGL requiere que el desarrollador proporcione un shader por cada objeto a dibujar. El mismo shader puede ser usado para múltiples objetos, por lo que en la práctica es suficiente proporcionar un solo shader para toda la aplicación (reutilizándolo con diferentes parámetros). FCC-BUAP 21

22 Los shaders, II Un shader se compone típicamente de dos partes: 1. El vertex shader 2. El fragment shader (también conocido como pixel shader) El vertex shader es responsable de transformar coordenadas o vértices del objeto (3D) en coordenadas de pantalla (2D). El fragment shader es responsable de generar el color final de salida para cada pixel de los vértices transformados, basado en parámetros de entrada tales como: color, textura, iluminación y material. FCC-BUAP 22

23 Los shaders, III Shaders: Relación entre vértices y fragmentos FCC-BUAP 23

24 Los shaders, IV Para nuestro primer ejemplo, el vertex shader combina los valores de la modelviewmatrix y projectionmatrix para crear un vértice transformado para cada entrada, y el fragment shader simplemente genera un color blanco (en código duro). En WebGL, la configuración de shaders requiere una secuencia de pasos, incluyendo la compilación individual de las piezas, y su vinculación posterior. Por brevedad, a continuación se muestra sólo el código GLSL ES para nuestros dos shaders de ejemplo, pero el código completo se puede consultar en documento HTML completo. FCC-BUAP 24

25 Los shaders, V Ejemplo 1-5. Los vertex y fragment shaders var vertexshadersource = " attribute vec3 vertexpos;\n" + " uniform mat4 modelviewmatrix;\n" + " uniform mat4 projectionmatrix;\n" + " void main(void) {\n" + " // Return the transformed and projected vertex value\n" + " gl_position = projectionmatrix * modelviewmatrix * \n" + vec4(vertexpos, 1.0);\n" + " }\n"; var fragmentshadersource = " void main(void) {\n" + " // Return the pixel color: always output white\n" + " gl_fragcolor = vec4(1.0, 1.0, 1.0, 1.0);\n" + "}\n"; FCC-BUAP 25

26 Dibujo de primitivas, I Por fin está todo listo para dibujar un cuadrado: el contexto ha sido creado, elviewport ha sido configurado y el buffer de vértices, matrices y shaders han sido creados e inicializados. Ahora es necesario definir una función, draw(), la cual tomará el contexto de WebGL y el cuadrado previamente definido. FCC-BUAP 26

27 Dibujo de primitivas, II Este procedimiento involucra los siguientes pasos: 1. La función limpia el canvas con un color de fondo blanco. 2. Después se enlaza ( binds ) el buffer de vértices con el que se dibujará el cuadrado. 3. Se coloca ( uses ) el shader que se usará. 4. Posteriormente se conecta el buffer de vértices y las matrices como entradas del shader. 5. Finalmente se invoca al método drawarrays() de WebGL para dibujar el cuadrado. El método drawarrays() recibe como argumentos qué tipo de primitiva y cuántos vértices tiene la primitiva; WebGL conoce el resto de la información puesto que ya se han establecido los otros elementos como parte de su estado. FCC-BUAP 27

28 Dibujo de primitivas, III Ejemplo 1-6. El código dedibujo. function draw(gl, obj) { // se limpia el fondo (con blanco) gl.clearcolor(0.0, 0.0, 0.0, 1.0); gl.clear(gl.color_buffer_bit); // se configure el buffer de vertices que se dibujará gl.bindbuffer(gl.array_buffer, obj.buffer); // se configure el shader que se usará gl.useprogram(shaderprogram); // se vinculan los parámetros del shader: posición de vertices y matrices (projection/model) gl.vertexattribpointer(shadervertexpositionattribute, obj.vertsize, gl.float, false, 0, 0); gl.uniformmatrix4fv(shaderprojectionmatrixuniform, false, projectionmatrix); gl.uniformmatrix4fv(shadermodelviewmatrixuniform, false, modelviewmatrix); // se dibuja el objeto gl.drawarrays(obj.primtype, 0, obj.nverts); } FCC-BUAP 28

29 Dibujo de primitivas, IV FCC-BUAP 29

30 Consideraciones... Hasta aquí ha terminado el tour a nuestra primera aplicación básica con WebGL. Seguramente estés pensando Uff! Cuanto trabajo para dibujar sólo un cuadrado de color blanco, Cielos, ni siquiera es un objeto 3D!. Si bien la programación con WebGL a este nivel es ardua, la API es ligera y simple a costa de tener que hacer mucha codificación del lado de la aplicación. Además, obviamente no se desea utilizar WebGL sólo para dibujar objetos 2D. Bueno hay buenas noticias, otros programadores ya han realizado el trabajo duro por ti. Por tanto, más adelante se crearán aplicaciones con WebGL usando la librería Three.js FCC-BUAP 30

31 Un vistazo a Threejs.org FCC-BUAP 31

Introducción a OpenGL Shading Language (GLSL)

Introducción a OpenGL Shading Language (GLSL) a OpenGL Shading Language (GLSL) November 20, 2007 a OpenGL Shading Language (GLSL) Fixed Pipeline Programmable Pipeline Características de GLSL Por qué escribir un Shader? Vertex Processor Fragment Processor

Más detalles

Tema 1: Modelado poligonal

Tema 1: Modelado poligonal Tema 1: Modelado poligonal José Ribelles SIU020 Síntesis de Imagen y Animación Departamento de Lenguajes y Sistemas Informáticos, Universitat Jaume I Tema 1: Modelado poligonal 1 Hoy veremos... 1 Introducción

Más detalles

Tema 1: Modelado poligonal

Tema 1: Modelado poligonal Tema 1: Modelado poligonal José Ribelles VJ1221 Informática Gráfica Departamento de Lenguajes y Sistemas Informáticos, Universitat Jaume I Tema 1: Modelado poligonal 1 Contenido 1 Introducción 2 Orígenes

Más detalles

Tema 4: Viendo en 3D

Tema 4: Viendo en 3D J. Ribelles SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I Contenido Introducción 1 Introducción 2 3 Proyección Paralela Proyección Perspectiva 4 5 6

Más detalles

GPU - Procesadores de vértices

GPU - Procesadores de vértices GPU - Procesadores de vértices Sistemas Gráficos 66.71 UBA 2014 Sistemas Gráficos 66.71 (UBA) GPU - Procesadores de vértices 2014 1 / 28 Índice 1 Arquitectura de la GPU Vertex Shaders Actividad 1 Actividad

Más detalles

Tema 2: Modelado. J.Ribelles. SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I

Tema 2: Modelado. J.Ribelles. SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I J. Ribelles SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I Contenido Introducción 1 Introducción 2 3 Introducción Se denomina modelo al conjunto de datos

Más detalles

Tema 1 Introducción. David Vallejo Fernández. Curso 2007/2008. Escuela Superior de Informática

Tema 1 Introducción. David Vallejo Fernández. Curso 2007/2008. Escuela Superior de Informática Tema 1 Introducción David Vallejo Fernández Curso 2007/2008 Escuela Superior de Informática Índice de contenidos 1.Computer Graphics. 2.Principales aplicaciones. 3.APIs gráficas. 4.. 5.Resumen. 2 1 Computer

Más detalles

Laboratorio 2: Viewports e Interacción con el Mouse (en 2D) Seleccionar un área de la figura para hacer zoom.

Laboratorio 2: Viewports e Interacción con el Mouse (en 2D) Seleccionar un área de la figura para hacer zoom. Laboratorio 2: Viewports e Interacción con el Mouse (en 2D) Seleccionar un área de la figura para hacer zoom. Introducción Los vértices sufren transformaciones para pasar del mundo a la pantalla. Estas

Más detalles

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E)

FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E) APRENDERAPROGRAMAR.COM FUNCIONES JAVASCRIPT. CONCEPTO. PARÁMETROS O ARGUMENTOS Y TIPOS. PASO POR VALOR. RETURN. EJEMPLOS. (CU01122E) Sección: Cursos Categoría: Tutorial básico del programador web: JavaScript

Más detalles

Introducción a la programación en OpenGL

Introducción a la programación en OpenGL Introducción a la programación en OpenGL Qué es OpenGL? Es una interfaz para la generación de gráficos (Graphics rendering API) Imágenes de alta calidad generadas a partir de primitivas geométricas. Independiente

Más detalles

GRAPHICS PIPELINE. Computación Gráfica

GRAPHICS PIPELINE. Computación Gráfica GRAPHICS PIPELINE Computación Gráfica Rendering Proceso de generar una imagen 2D a partir de un modelo 3D Offline vs. Real-time Rendering Exactitud sobre rapidez. Películas, diseño de productos, aplicaciones

Más detalles

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos.

GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. 1 Programación II, Guía 2 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II GUIA 2: Repaso sobre uso de C#. Funciones, métodos y arreglos. Objetivos Utilizar la sintaxis de las funciones

Más detalles

Introducción a la programación en OpenGL

Introducción a la programación en OpenGL Introducción a la programación en OpenGL Primera aplicación gráfica Primera aplicación gráfica MUNDO CÁMARA Primera aplicación gráfica MUNDO CÁMARA OBJETOS Primera aplicación gráfica ENTRADA: - Posición

Más detalles

C =[x 1,y 1,x 2,y 2,...,x n,y n ]

C =[x 1,y 1,x 2,y 2,...,x n,y n ] Práctica 1 Realizar un programa que presente una nube de puntos en 2D utilizando los comandos de OpenGL vistos en clase. Los puntos deben variar aleatoriamente en posición, tamaño y color. Realizar un

Más detalles

Viewports e Interacción con el Mouse CG 2014.

Viewports e Interacción con el Mouse CG 2014. Viewports e Interacción con el Mouse CG 2014. Introducción Los vértices sufren transformaciones para pasar del mundo a la pantalla. Estas transformaciones, las especificamos mediante matrices. Ventana

Más detalles

C =[x 1,y 1,x 2,y 2,...,x n,y n ]

C =[x 1,y 1,x 2,y 2,...,x n,y n ] Práctica 1 Realizar un programa que presente una nube de puntos en 2D utilizando los comandos de OpenGL vistos en clase. Los puntos deben variar aleatoriamente al menos en posición y color. Realizar un

Más detalles

Visualización y Realismo: Problemas Capítulo 2

Visualización y Realismo: Problemas Capítulo 2 Visualización y Realismo: Problemas Capítulo 2 Carlos Ureña Almagro Curso 2011-12 1 Problema 2.1 Calcula los coeficientes de la ecuación implícita de la recta que pasa por los puntos p 0 y p 1 Y p 0 p

Más detalles

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO

NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO PACK FORMATIVO EN DESARROLLO DE APLICACIONES CON TECNOLOGÍA WEB NÚMERO DE HORAS: 160H PROGRAMACIÓN WEB EN EL ENTORNO CLIENTE OBJETIVO - Identificar la estructura de una página web conociendo los lenguajes

Más detalles

Requisitos. Conceptos de graficación en 3D:

Requisitos. Conceptos de graficación en 3D: Requisitos Conceptos de graficación en 3D: 1. Cámara virtual. 2. Iluminación. 3. Representación de cuerpos en 3D (modelado). 4. Materiales. 5. Interacción de la luz con los materiales. 6. Transformaciones

Más detalles

Computación Gráfica = CG = Computer Graphics

Computación Gráfica = CG = Computer Graphics Computación Gráfica = CG = Computer Graphics Porqué computación gráfica? Para qué sirve? Cómo se utiliza? Cuáles son las principales áreas? Necesidad contemporanea Visualizar/Analizar lo imposible Una

Más detalles

Planificaciones Sistemas Gráficos. Docente responsable: ABBATE HORACIO ANTONIO. 1 de 5

Planificaciones Sistemas Gráficos. Docente responsable: ABBATE HORACIO ANTONIO. 1 de 5 Planificaciones 6671 - Sistemas Gráficos Docente responsable: ABBATE HORACIO ANTONIO 1 de 5 OBJETIVOS El desarrollo alcanzado por la industria de hardware informático es tal, que en la actualidad aún las

Más detalles

Librerías JavaScript Processing.js

Librerías JavaScript Processing.js Librerías JavaScript Processing.js Programación Multimedia. G.I.M. Francisco Grimaldo, Inmaculada Coma 1 Índice Librerías JavaScript Processing.js vs Three.js Processing & Processing.js Plantillas de uso

Más detalles

20480 Programación en HTML5 con JavaScript y CSS3

20480 Programación en HTML5 con JavaScript y CSS3 20480B 20480 Programación en HTML5 con JavaScript y CSS3 Fabricante: Microsoft Grupo: Desarrollo Subgrupo: Microsoft Visual Studio 2012 Formación: Presencial Horas: 25 Se requieren los siguientes requisitos

Más detalles

Tema 6: Aplicación de Texturas 2D

Tema 6: Aplicación de Texturas 2D J. Ribelles SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I Contenido Introducción 1 Introducción 2 3 4 Introducción Introducción El uso de texturas para

Más detalles

ELEMENTOS HARDWARE DEL ORDENADOR. Tarjeta gráfica

ELEMENTOS HARDWARE DEL ORDENADOR. Tarjeta gráfica ELEMENTOS HARDWARE DEL ORDENADOR Tarjeta gráfica Qué es? Tarjeta Gráfica 1. Interpreta los datos que le llegan del procesador, ordenándolos y calculando el valor de cada píxel, lo almacena en la memoria

Más detalles

Computación Gráfica I CI4321

Computación Gráfica I CI4321 Computación Gráfica I CI4321 Teoría Prof. Víctor Theoktisto (vtheok @ usb.ve) consulta (Lunes 11:30-12:30) Laboratorio Prof. Alexander Baranya(abaranya @ ldc.usb.ve) Contenido del curso http://ldc.usb.ve/~vtheok/cursos/ci4321/sd11

Más detalles

Arreglos de vértices

Arreglos de vértices Arreglos de vértices En lugar de que se especifiquen datos individuales del vértice en el modo inmediato (entre los pares glbegin() y glend()), es posible almacenar datos en un conjunto de arreglos incluyendo

Más detalles

Introducción a JSON JUAN CARLOS CONDE RAMÍREZ WEB-TECHNOLOGIES

Introducción a JSON JUAN CARLOS CONDE RAMÍREZ WEB-TECHNOLOGIES Introducción a JSON JUAN CARLOS CONDE RAMÍREZ WEB-TECHNOLOGIES Objetivos Conocer el origen, la utilidad y las bases sintácticas que dieron lugar a JSON. Entender las diferencias de notación entre XML y

Más detalles

Tema 9: Texturas Avanzadas

Tema 9: Texturas Avanzadas J. Ribelles SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I Contenido 1 2 3 4 5 6 La principal diferencia con lo visto hasta el momento en la asignatura

Más detalles

Introducción a la programación en OpenGL

Introducción a la programación en OpenGL Introducción a la programación en OpenGL Qué es OpenGL? Es una interfaz para la generación de gráficos (Graphics rendering API) Imágenes de alta calidad generadas a partir de primitivas geométricas. Independiente

Más detalles

El pipeline de visualización es el conjunto de

El pipeline de visualización es el conjunto de Sistemas de Visualización Pipeline de visualización 3D Definición del modelo geométrico Transformaciones geométricas Transformaciones de visualización Volumen de visualización Proyecciones Pipeline de

Más detalles

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ACATLÁN HORAS SEMANA

UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ACATLÁN HORAS SEMANA UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE ESTUDIOS SUPERIORES ACATLÁN PLAN DE ESTUDIOS DE LA LICENCIATURA EN MATEMÁTICAS APLICADAS Y COMPUTACIÓN PROGRAMA DE ASIGNATURA SEMESTRE: 7 (SÉPTIMO) Graficación

Más detalles

Curso HTML 5 y CSS 3. HTML5 general. Parte 1-Introducción. Perfil. Objetivos. Temario

Curso HTML 5 y CSS 3. HTML5 general. Parte 1-Introducción. Perfil. Objetivos. Temario Curso HTML 5 y CSS 3 Duración: 25 horas teórico-prácticas Perfil Objetivos Temario Programadores, Diseñadores Web y maquetadores. Profesionales con experiencia almenos de 1 año con el lenguaje html en

Más detalles

Historia de graficación

Historia de graficación Historia de graficación Elaborado por: Ing. Apolinar Baltazar Alejandro Ing. Ascencio Camacho Nancy Anahí Ing. Bermúdez Gil Iris Ing. García Rivera Alberto Ing. Garduño Ayala Juan Carlos Ing. Martínez

Más detalles

Guía docente de la asignatura

Guía docente de la asignatura Guía docente de la asignatura Asignatura Materia PROGRAMACIÓN DE APLICACIONES GRÁFICAS COMPUTACIÓN Módulo TECNOLOGÍAS ESPECIFICAS Titulación GRADO EN INGENIERÍA INFORMÁTICA Plan 545 46949 Periodo de impartición

Más detalles

API: REST o RESTful WEB-SERVICES

API: REST o RESTful WEB-SERVICES API: REST o RESTful JUAN CARLOS CONDE RAMÍREZ WEB-SERVICES API: Qué? y Por qué? Si estás construyendo apps o sitios Web, es probable que ya hayas oído hablar de APIs REST o incluso ya hasta las hayas utilizado,

Más detalles

Guía docente de la asignatura

Guía docente de la asignatura Guía docente de la asignatura Asignatura Materia Módulo Titulación PROGRAMACIÓN DE APLICACIONES GRÁFICAS En MAYÚSCULAS, ver memoria del grado (vacío) GRADO EN INGENIERÍA INFORMÁTICA (463) Plan 463 45221

Más detalles

4.1 Conceptos Básicos de Matlab. Matlab es creado por The MathWorks, el cual es un idioma de alto rendimiento

4.1 Conceptos Básicos de Matlab. Matlab es creado por The MathWorks, el cual es un idioma de alto rendimiento MATLAB CAPÍTULO 4 Realización Activa en 4.1 Conceptos Básicos de es creado por The MathWorks, el cual es un idioma de alto rendimiento para la informática técnica. Integra cómputo, visualización, y programación

Más detalles

Tema 3: Transformaciones Geométricas

Tema 3: Transformaciones Geométricas J. Ribelles SIE020: Síntesis de Imagen y Animación Institute of New Imaging Technologies, Universitat Jaume I Contenido Introducción 1 Introducción 2 Traslación Escalado Rotación 3 4 5 6 Introducción Por

Más detalles

Prof. Alexandra La Cruz ld

Prof. Alexandra La Cruz ld Computación Gráfica I CI4321 Teoría Prof. Alexandra La Cruz (alacruz @ ld dc.usb.ve) alexandra.lacruz @ gmail.com consulta (Lunes 11:30-12:30) Laboratorio Prof. VictorTheoktisto (vtheok @ usb.ve) Preparador

Más detalles

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez

Introducción a Java. Dr. (c) Noé Alejandro Castro Sánchez Introducción a Java Dr. (c) Noé Alejandro Castro Sánchez Programas Java Applets Pueden correr en navegadores Web Agregan funcionalidad a páginas Web Se llega a restringir su funcionalidad (e. g., no pueden:

Más detalles

Three.js-ESP Documentation. Versión latest

Three.js-ESP Documentation. Versión latest Three.js-ESP Documentation Versión latest 08 de marzo de 2017 Índice general 1. Presentación 3 2. Preparando el terreno 5 3. Conceptos básicos 7 4. Creando una escena 9 5. Añadiendo objetos 13 6. Movimiento

Más detalles

Guía Introductoria. 1 Sistemas Expertos e Inteligencia Artificial / Guía I / Ciclo / Ing. Herson Serrano. Introducción. Objetivos Específicos

Guía Introductoria. 1 Sistemas Expertos e Inteligencia Artificial / Guía I / Ciclo / Ing. Herson Serrano. Introducción. Objetivos Específicos 1 Sistemas Expertos e Inteligencia Artificial / Guía I / Ciclo 01 2018 / Ing. Herson Serrano Guía Introductoria Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Sistemas Expertos e Inteligencia

Más detalles

APLICACIONES MÓVILES NATIVAS. Sesión 6: Programación móvil en java y android

APLICACIONES MÓVILES NATIVAS. Sesión 6: Programación móvil en java y android APLICACIONES MÓVILES NATIVAS Sesión 6: Programación móvil en java y android Contextualización Actualmente, los medios de programación son diferentes a lo que eran hace 10 años, estos es por la evolución

Más detalles

El pipeline gráfico Figura 3.1

El pipeline gráfico Figura 3.1 El pipeline gráfico Para llevar a cabo una representación virtual de un ambiente tridimensional, se realiza un modelado del escenario. Dicho modelo incluye la representación geométrica de los objetos presentes,

Más detalles

E.T.S. ARQUITECTURA SEVILLA HISTORIA II CURSO 2017/18 GRUPO 2.06 DAMIAN FLORES LORITE SALOME MOYA RIVERO CARMEN FERNANDEZ MUÑOZ

E.T.S. ARQUITECTURA SEVILLA HISTORIA II CURSO 2017/18 GRUPO 2.06 DAMIAN FLORES LORITE SALOME MOYA RIVERO CARMEN FERNANDEZ MUÑOZ E.T.S. ARQUITECTURA SEVILLA HISTORIA II CURSO 2017/18 GRUPO 2.06 DAMIAN FLORES LORITE SALOME MOYA RIVERO CARMEN FERNANDEZ MUÑOZ INDICE - QUE ES AUTOCAD? QUE ES RHINOCEROS? - VENTAJAS DE AUTOCAD -VENTAJAS

Más detalles

Modelación de objetos 3D Parte I: Mallas de polígonos y triangulaciones

Modelación de objetos 3D Parte I: Mallas de polígonos y triangulaciones Modelación de objetos 3D Parte I: Mallas de polígonos y triangulaciones Contenido Motivación Polígonos simples 3D Almacenamiento de mallas de polígonos OpenGl y mallas de polígonos Triangulaciones Triangulaciones

Más detalles

3 Eficiencia con polígonos

3 Eficiencia con polígonos INGENIERÍA INFORMÁTICA 3 Eficiencia con polígonos Introducción Técnicas de aceleración Nivel de detalle Hardware gráfico Prof. Miguel Chover Introducción Representación poligonal Los triángulos mejoran

Más detalles

Clases y Objetos en C++

Clases y Objetos en C++ Informática II Clases y Objetos en C++ Introducción Las variables de los tipos fundamentales de datos no son suficientes para modelar adecuadamente objetos del mundo real. alto, ancho y longitud para representar

Más detalles

Planificaciones Sistemas Gráficos. Docente responsable: ABBATE HORACIO ANTONIO. 1 de 6

Planificaciones Sistemas Gráficos. Docente responsable: ABBATE HORACIO ANTONIO. 1 de 6 Planificaciones 8643 - Sistemas Gráficos Docente responsable: ABBATE HORACIO ANTONIO 1 de 6 OBJETIVOS El desarrollo alcanzado por la industria de hardware informático es tal, que en la actualidad aún las

Más detalles

GUIA 1: Repaso sobre uso de C#. Funciones, procedimientos y arreglos.

GUIA 1: Repaso sobre uso de C#. Funciones, procedimientos y arreglos. 1 POO, Guía 1 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación Orientada a Objetos GUIA 1: Repaso sobre uso de C#. Funciones, procedimientos y arreglos. Competencia Desarrolla sistemas

Más detalles

OpenGL 1. Visualización 3D. Cristina Cañero

OpenGL 1. Visualización 3D. Cristina Cañero OpenGL 1. Visualización 3D Cristina Cañero Introducción OpenGL es una librería de funciones, y se puede llamar desde C. Es transparente al hardware de gráficos disponible. Tres librerías: OpenGL GLU GLUT

Más detalles

Lenguaje de Programación: C++ GLUT

Lenguaje de Programación: C++ GLUT UG Lenguaje de Programación: C++ GLUT Universidad de Guanajuato Noviembre 2010 GLUT Se trata de una librería diseñada para facilitar el manejo de ventanas y eventos en aplicaciones que pretenden mostrar

Más detalles

Programación Orientada a Objetos en C++

Programación Orientada a Objetos en C++ Unidad I Programación Orientada a Objetos en C++ Programación Orientada a Objetos en C++ Programación I - 0416202 Contenido Esta lección abarca los siguientes temas: Estructura y declaración de una clase

Más detalles

Vertex Arrays (VAs) Vertex Buffer Objects (VBOs), Vertex Array Objects (VAOs) C. Andujar, A. Vinacua Nov 2015

Vertex Arrays (VAs) Vertex Buffer Objects (VBOs), Vertex Array Objects (VAOs) C. Andujar, A. Vinacua Nov 2015 Vertex Arrays (VAs) Vertex Buffer Objects (VBOs), Vertex Array Objects (VAOs) C. Andujar, A. Vinacua Nov 2015 Formes de pintar geometria Mode immediat (glbegin,glend) Compatibility Usant Vertex Arrays

Más detalles

TEMA 2.3 ETAPA DE GEOMETRÍA E IMPLEMENTACIÓN HARDWARE

TEMA 2.3 ETAPA DE GEOMETRÍA E IMPLEMENTACIÓN HARDWARE TEMA 2.3 ETAPA DE GEOMETRÍA E IMPLEMENTACIÓN HARDWARE Curso 2013 / 14 Procesadores Gráficos y Aplicaciones en Tiempo Real Profesores: David Miraut y Óscar D. Robles c GMRV 2005-2014 Febrero 2014 1 / David

Más detalles

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos

Descripción. Objetivos de Aprendizaje. Estructura y Contenidos Descripción El programa de aplicaciones híbridas tiene un enfoque de programación para dispositivos móviles que combina los puntos fuertes de la programación nativa y el desarrollo de aplicaciones web

Más detalles

Programación. Test Autoevaluación Tema 3

Programación. Test Autoevaluación Tema 3 Programación Test Autoevaluación Tema 3 Autores: M. Paz Sesmero Lorente Paula de Toledo Heras Fco. Javier Ordoñez Morales Juan Gómez Romero José A. Iglesias Martínez José Luis Mira Peidro SOLUCIONES 1.

Más detalles

7 Efectos. avanzados. Múltiples pasos de dibujo Algoritmos de varias pasadas Texturas múltiples Ejemplos de texturas múltiples. Prof.

7 Efectos. avanzados. Múltiples pasos de dibujo Algoritmos de varias pasadas Texturas múltiples Ejemplos de texturas múltiples. Prof. INGENIERÍA INFORMÁTICA 7 Efectos avanzados Múltiples pasos de dibujo Algoritmos de varias pasadas Texturas múltiples Ejemplos de texturas múltiples Prof. Miguel Chover Múltiples pasos de dibujo Dibujar

Más detalles

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE

CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE CURSO : ESTRUCTURA DE DATOS DOCENTE : ING. JUAN ZEVALLOS VALLE 1 Estructura de Datos 1. Logica de Programación 2. Uso de Algoritmos usando Lenguaje Java 3. Ingreso de datos 4. Sentencias de Control 1.

Más detalles

MALLA CURRICULAR JÓVENES PROGRAMADORES

MALLA CURRICULAR JÓVENES PROGRAMADORES MALLA CURRICULAR JÓVENES PROGRAMADORES DESCRIPCIÓN DE LOS MÓDULOS NIVEL 0 MÓDULO INTRODUCTORIO (MIA) 8 años. Introduce al estudiante en el mundo de la programación mediante el lenguaje Scratch. Se requiere

Más detalles

Proyecciones en OpenGL

Proyecciones en OpenGL Proyecciones en OpenGL Una vez definida una escena en coordenadas del mundo, tenemos que tomar la foto. Para esto, tenemos que hacer dos cosas: colocar la cámara en el mundo (o sea, en la escena) y definir

Más detalles

Introducción a c++ Introducción a la programación EIS Informática III

Introducción a c++ Introducción a la programación EIS Informática III Introducción a c++ Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. Pueden usarse para crear programas

Más detalles

Tema: Clases y Objetos en C#. Parte II.

Tema: Clases y Objetos en C#. Parte II. Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y

Más detalles

Introducción a la programación

Introducción a la programación Introducción a la programación PROGRAMACION I Grado en Matematicas Informática Programación I - 2015/2016 Introducción 1 Introducción a la programación Computador: aparato electrónico capaz de interpretar

Más detalles

SINTAXIS DEL PROGRAMA

SINTAXIS DEL PROGRAMA SINTAXIS DEL PROGRAMA ÓRDENES O INSTRUCCIONES: Son los elementos estructurales del programa. Todas las instrucciones deben finalizar con ; Ejemplo: point (50,100); COMENTARIOS EN EL CÓDIGO: Son usados

Más detalles

Introducción a Android. [Tema 2]

Introducción a Android. [Tema 2] Introducción a Android [Tema 2] 1. Android 1 / 24 2 / 24 Android Android es un sistema operativo diseñado principalmente para teléfonos inteligentes (Smatphones); fue creado inicialmente por Android Inc.

Más detalles

Programación Avanzada con PHP Duración: 40 horas Código: DAW-106

Programación Avanzada con PHP Duración: 40 horas Código: DAW-106 Programación Avanzada con PHP Duración: 40 horas Código: DAW-106 Descripción: El curso está diseñado para que desarrolladores Web y otros programadores avanzados puedan construir Portales dinámicos utilizando

Más detalles

Tipos Recursivos de Datos

Tipos Recursivos de Datos 1/1 Tipos Recursivos de Datos Josefina Sierra Santibáñez 27 de noviembre de 2016 2/1 Introducción La recursividad no sólo se puede aplicar a la definición de procedimientos (i.e. funciones o acciones),

Más detalles

Presentación del Curso Presencial. Programación en Java Nivel Básico

Presentación del Curso Presencial. Programación en Java Nivel Básico Presentación del Curso Presencial Programación en Java Nivel Básico Tabla de contenido Presentación del curso... 3 Objetivos de aprendizaje... 6 Contenidos del curso... 7 Competencias previas... 9 Recursos...

Más detalles

Tema: Funciones, Procedimientos y Recursividad en C#.

Tema: Funciones, Procedimientos y Recursividad en C#. 2 Programación I Programación I. Guía 6 3 Facultad: Ingeniería Escuela: Ingeniería en Computación Asignatura: Programación I Tema: Funciones, Procedimientos y Recursividad en C#. Objetivos Utilizar la

Más detalles

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional

CAPÍTULO IV: 4.1 Introducción a la. Programación Funcional CAPÍTULO IV: Programación Funcional 4.1 Introducción a la Programación Funcional 1 Programación Funcional Paradigma diferente a los imperativos, que se aleja de la máquina de von Neumann Basado en funciones

Más detalles

Fundamentos de programación JAVA

Fundamentos de programación JAVA Pág. N. 1 Fundamentos de programación JAVA Familia: Editorial: Autor: Computación e informática Macro Ricardo Walter Marcelo Villalobos ISBN: 978-612-304-238-7 N. de páginas: 296 Edición: 2. a 2014 Medida:

Más detalles

PROG AVZ TARJETAS GRÁFICAS. Texturas procedurales

PROG AVZ TARJETAS GRÁFICAS. Texturas procedurales PROG AVZ TARJETAS GRÁFICAS Texturas procedurales TEXTURAS PROCEDURALES. CREACIÓN. Las texturas procedurales se generan mediante algoritmos matemáticos: programas a partir de los que se construye una imagen

Más detalles

Mallas poligonales y curvas cuádricas en OpenGL

Mallas poligonales y curvas cuádricas en OpenGL Mallas poligonales y curvas cuádricas en OpenGL Introducción Las aplicaciones opengl están construidas sobre un loop principal que se verá más adelante en las clases de opengl. El loop principal es donde

Más detalles

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples

abril de 2017 Desarrollo de aplicaciones en Java Tipos de datos primitivos Tipos de datos Elementos de aplicaciones simples Desarrollo de aplicaciones en Java Generación de código fuente Compilación Ejecución Elementos de aplicaciones simples EII147-01-02 Introducción a las tecnologías de información Escuela de Ingeniería Industrial

Más detalles

2.4. Unidades de Aprendizaje. Unidad de aprendizaje: Desarrollo de páginas web estáticas. Número 1. Propósito de la unidad

2.4. Unidades de Aprendizaje. Unidad de aprendizaje: Desarrollo de páginas web estáticas. Número 1. Propósito de la unidad 2.4. Unidades de Aprendizaje Unidad de aprendizaje: Desarrollo de páginas web estáticas. Número 1 Propósito de la unidad Desarrollará páginas web con contenido estático siguiendo la metodología de diseño

Más detalles