computación gráfica - codecompiling.net · geometría descriptiva / computacional trigonometría...

46
1 Computación Gráfica (Algunos Fundamentos) Universidad de los Andes Demián Gutierrez Octubre 2011

Upload: duongdien

Post on 21-Sep-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

1

Computación Gráfica(Algunos Fundamentos)

Universidad de los AndesDemián Gutierrez

Octubre 2011

Page 2: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

2

¿Qué es?

Es una rama de la ciencia de computación que estudia al conjunto de técnicas que permiten la

representación tridimensional* de los objetos de la vida real en el computador

*No solo de objetos tridimensionales, y no sólo de objetos de la vida real

Page 3: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

3

¿Qué es?

¿Que arquitecturas de hardware y software debo tener?

¿Cómo dibujo gráficos 2D?¿Líneas? ¿Curvas? ¿Polígonos? ¿Aliasing?

¿Cómo relleno un polígono?

¿Cómo represento y dibujo modelos 3D en dispositivos de despliegue 2D?

¿Cómo despliego modelos 3D que sean realistas?¿Iluminación? ¿Texturas? ¿Sombreado?

¿Suavizado?

Page 4: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

4

¿Aplicaciones?

Juegos de Computadora / Video (Weee!!!)

Aplicaciones Científicas

Aplicaciones y Software para Ingeniería

Arte (cine, entre otros)

Muchos más...

Educación y Entrenamiento

Page 5: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

5

¿Aplicaciones?

Page 6: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

6

¿Aplicaciones?

Page 7: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

7

¿Aplicaciones?

Page 8: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

8

¿Aplicaciones?

Page 9: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

9

¿Aplicaciones?

Page 10: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

10

Soporte Conceptual / Fundamentos

Geometría Descriptiva / Computacional

Trigonometría

Álgebra Matricial / Álgebra Lineal

Métodos de interpolación

Manejo de patrones de colores

Estructuras de Datos

Arquitectura de Computadores

Page 11: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

11

Componentes de un Sist. Gráfico

¿Cuál es la naturaleza de este

dispositivo?

Page 12: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

12

¿qué es un gráfico?

¿qué tipos de gráficos existen?

¿naturaleza de un gráfico?

Page 13: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

13

¿Cómo se representa una imagen?

Page 14: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

14

¿Cómo se representa una imagen?

Una imágen/gráfico se representa con

un conjunto de puntos donde cada

punto tiene un valor (color)

o una intensidad (por ejemplo, en el caso de escalas de

grises)

Page 15: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

15

¿Cómo se representa una imagen?

muchos millones(4.294.967.296)

de colores

muchos(65.536)colores

(256)colores

(4)colores

(8)colores

(16)colores

Page 16: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

16

¿Cómo se representa una imagen?

de izquierda a derecha:2 tonos

16 tonos grises256 tonos grises

Page 17: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

17

¿Vectorial vs Raster?

Ra

ster

Vec

tor

Page 18: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

18

¿Vectorial vs Raster?

Page 19: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

19

¿Vectorial vs Raster?¿Cómo dibujar?

Page 20: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

20

¿en qué dispositivosse despliegan los gráficos?

Page 21: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

21

Tecnologías de Salida(cómo se dibuja una imágen)

Page 22: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

22

Tecnologías de Salida

Page 23: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

23

Tecnologías de Salida

LCD

Plasma

LED

Page 24: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

24

Tecnologías de Salida

Kindle iPad

aunque con esto no nos vamos a meter...

Page 25: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

25

¿algunas arquitecturas?

Page 26: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

26

Arquitecturas

Bus del Sistema

CPUMemoria

delSistema

Controladorde

Video

OtrosDispositivos

de E/S

OtrosDispositivos

de E/S

Page 27: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

27

Arquitecturas

Bus del Sistema

CPUControlador

deVideo

OtrosDispositivos

de E/S

Memoriadel

Sistema

FrameBuffer

Page 28: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

28

Arquitecturas

Bus del Sistema

CPU

Controladorde

Video

OtrosDispositivos

de E/S

Memoriadel

Sistema

Procesadorde

Video

Memoriadel

Procesadorde Video

FrameBuffer

Page 29: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

29

Arquitectura / Framebuffer

Controladorde

Video

FrameBuffer

0x00004001

0x00004002

0x00004000

0x00004003

...

valor pixel-1

valor pixel-3

valor pixel-2

valor pixel-4

...

0x0000FFFF valor pixel-n

memoria

p1

p2

p3

p1024

p1025

p1026

p1027

p2048

p2049

p2050

p2051

p3072

p---

p---

p---

pn

...

...

...

...

800

1024

Page 30: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

30

¿Qué es?

El Frame Buffer en el fondo se puede ver como un “mapa de bits”

Controladorde

Video

FrameBuffer

¿mapa de bits?

Page 31: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

31

¿Cómo se representa una imagen?

(4)colores

(8)colores

(16)colores

RGB

|0000...|0000...|0000...|R G B

RGBA

|0000...|0000...|0000...|0000...|R G B A

Page 32: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

32

Arquitectura / Framebuffer

p1

p2

p3

p1024

p1025

p1026

p1027

p2048

p2049

p2050

p2051

p3072

p---

p---

p---

pn

...

...

...

...

800

1024

8 bits por pixel:256 colores

16 bits por pixel65536 colores

24 bits por pixel16 millones de colores

32 bits por pixel4.294.967.296 colores

Esto es más de lo que el ojo humano puede diferenciar

Page 33: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

33

Arquitectura / Framebuffer

por ejemplo:

8 bits por pixel:

|00|000|000|R G B

¿Por qué hay más verde y azul que rojo?

Page 34: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

34

bien, pero...hasta ahora sólo hemoshablado de gráficos 2D...

¿qué sucede con el 3D?

¿cómo se definen gráficos 3D?¿cómo se representan en 2D?

Page 35: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

35

¿cómo se definen gráficos 3D?¿cómo se representan en 2D?

...¿se acuerdan de sistemas de

representación?

Page 36: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

36

Objetos y observadores

Page 37: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

37

Transformando al Observador en una Cámara

Page 38: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

38

Transformando al Observador en una Cámara

Escena3D

Cámara /Observador(localizada

en el espacio 3D)

Resultado2D

Proyección

Page 39: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

39

Añadiendo I luminación.. .

La luz añade complejidades adicionales: sombra, reflejos, colores, etc

Page 40: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

40

Añadiendo I luminación.. .

¿Cómo se calculan los colores, las sombras, etc?

Page 41: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

41

Soporte Conceptual / Fundamentos

OpenGL

DirectX / Direct3D

Tecnologías que definen APIs que permiten dibujar primitivas (puntos, líneas, polígonos, curvas,

texturas, iluminación, etc) y realizar un conjunto de operaciones gráficas

Page 42: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

42

Soporte Conceptual / Fundamentos

¿¿??

OpenGL Direct3D

API API

¿?Bindings(Ej. JOGL)

Frameworks(C/C++)

(Scene Graphs)(Ej. Ogre)

Frameworks(Java / Otros)

(Scene Graphs)(Ej. Java3D,

JMonkeyEng, etc)

Aplicación

Page 43: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

43

Soporte Conceptual / Fundamentos

Controladorde

Video

Procesadorde

Video(“acelerado”)

Memoriadel

Procesadorde Video

FrameBuffer

OpenGL Direct3D

API API

Operaciones y primitivas gráficas implementadas en

el Hardware

Page 44: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

44

Soporte Conceptual / Fundamentos

Controladorde

Video

Procesadorde

Video

Memoriadel

Procesadorde Video

FrameBuffer

OpenGL Direct3D

API API

Operaciones y primitivas gráficas implementadas en

Software(mucho más lento

que el anterior)Implementación en “Software”

Page 45: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

45

...ver transparencias delProf. Domingo...

Page 46: Computación Gráfica - codecompiling.net · Geometría Descriptiva / Computacional Trigonometría Álgebra Matricial / Álgebra Lineal Métodos de interpolación Manejo de patrones

46

Gracias

¡Gracias!