visualización computacional de datos i

Post on 14-Jan-2016

44 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Visualización Computacional de Datos I. Graficando objetos 3D en el monitor. Nvert n 1 , x 1 , y 1 , z 1 n 2 , x 2 , y 2 , z 2 ……………. Npol n 1 , n 2 , n 3 n 1 , n 2 , n 3 ……………. Rotación. General. 0 0 0 1. x y z 1. x' y' z' 1. r 11 r 21 r 31 0. r 12 r 22 r 32 0. - PowerPoint PPT Presentation

TRANSCRIPT

Visualización Computacional de Visualización Computacional de Datos I Datos I

Visualización Computacional de Visualización Computacional de Datos I Datos I

Graficando objetos 3D en el monitor

Nvertn1, x1, y1, z1

n2, x2, y2, z2

……………

Npoln1, n2, n3

n1, n2, n3

……………

RotaciónRotación

General

x'

y'

z'

1

=

x

y

z

1

r12

r22

r32

0

0

0

0

1

r11

r21

r31

0

r13

r23

r33

0

V’ = RR . V

Proyección en perspectivaProyección en perspectiva

Proyección en perspectivaProyección en perspectiva

x'

y'

z'

w’

=

x

y

z

1

0

1

0

0

0

0

0

0

1

0

0

0

0

0

1

1/d

V’ = P. RP. R . V

VisibilidadVisibilidad

Como decidimos que se debe ver?

Ray CastingRay Casting

Tirar un rayo y pintar solo el poligono más cercano

Algoritmo del pintorAlgoritmo del pintor

12

5

4

3

6

7

Algoritmo del pintorAlgoritmo del pintor

No siempre funciona!!!

A

B

C

Ray CastingRay Casting

Pseudocódigo:

Para cada píxel hacer:

Construir un rayo desde el ojo

Para cada objeto en la escena hacer:Calcular intersección con el rayo

Retornar en la primera intersecció (objeto + cercano)

Z bufferZ buffer

Ademas del frame buffer (R, G, B)

Almacenar la distancia a la cámara (z-buffer)

Pixel es pintado solo si el nuevo z es más alto que el valor en el z-buffer value

Z-buffer pseudo codeZ-buffer pseudo code

For every triangle

Compute Projection, color at vertices

Setup line equations

Compute bbox, clip bbox to screen limits

For all pixels in bbox

Increment line equations

Compute curentZ

Increment currentColor

If all line equations>0 //pixel [x,y] in triangle

If currentZ<zBuffer[x,y] //pixel is visible

Framebuffer[x,y]=currentColorzBuffer[x,y]=currentZ

Funciona en todos los casos!Funciona en todos los casos!

A

B

C

top related