PDF de programación - sesión 4 - Gráficos 3D - Arquitectura General

Imágen de pdf sesión 4 - Gráficos 3D - Arquitectura General

sesión 4 - Gráficos 3D - Arquitectura Generalgráfica de visualizaciones

Actualizado el 4 de Marzo del 2020 (Publicado el 14 de Enero del 2017)
564 visualizaciones desde el 14 de Enero del 2017
3,6 MB
25 paginas
Creado hace 15a (16/11/2005)
[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Índice de Contenidos :.

Introducción :: 1
Tipos de Datos Fundamentales :: 1.1
El Mapeado de Texturas :: 1.2
El Pileline 3D Genérico :: 2
Clipping y Culling :: 2.1
Detección de Oclusiones :: 2.2
Análisis de Nivel de Detalle :: 2.3
Transformación e Iluminación :: 2.4
GameEngine: Un tipo FPS :: 3
Jerarquías y Animación Básica :: 3.1
Gestión Dinámica de Objetos :: 3.2

«No es lo mismo tener la mente abierta
que un agujero en la cabeza». Proverbio

Sesión 4 :: Transp. 2 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Introducción :.

● Podemos ver a la tarea de representación 3D como una
secuencia de operaciones realizadas sobre una geometría de
entrada → Pipeline de varios Segmentos.

Geometría
Original

i

i

n
ó
c
a
n
m
r
e
t
e
D

l

i

e
b
s
V

i

e
c

i

i
f
r
e
p
u
S

i

i

n
ó
c
a
n
m
r
e
t
e
D

i

n
ó
c
u
o
s
e
R

l

i

n
ó
c
a
m
r
o
f
s
n
a
r
T

i

n
ó
c
a
n
m
u

i

l
I

i

n
ó
c
a
z
i
r
e
t
s
a
R

Represen-
tación en
Pantalla

● Después de un conjunto de pasos se representa la geometría
que "sobrevive".

Sesión 4 :: Transp. 3 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Tipos de Datos Fundamentales :.

● Vértices: Representados
mediante sus coordenadas
X,Y,Z (habitualmente float).
● Caras: Triángulos que
representan el modelo 3D.

Triángulo 1, Vértice 1
Triángulo 1, Vértice 2
Triángulo 1, Vértice 3
Triángulo 2, Vértice 1
Triángulo 2, Vértice 2
Triángulo 2, Vértice 3
...
Triángulo N-1, Vértice 1
Triángulo N-1, Vértice 2
Triángulo N-1, Vértice 3

Gestión Clásica

Gestión Indexada

Almacenamiento de un cubo (6 caras)

Gestión Clásica

12(trig.) x 3(vért) x 3(coord) x 4(B/float) = 432 bytes

Gestión Indexada

8(vértices) x 3(coord) x 4(Bytes/float) = 96 bytes
36(short int) x 2(Bytes/short) = 72 bytes
168 bytes Total

Sesión 4 :: Transp. 4 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Cuando no Importa Perder Calidad... :.

● Cuantización (Quantization): Mantenemos los datos comprimidos
en memoria y descomprimimos cuando los usemos. Es una técnica
con pérdida de información.
● Almacenamiento de valores con menor precisión.
● Tratamos de hacer conversiones «salvajes». De float a unsigned
short (16 bits típicamente) o unsigned bytes (8 bits).
Vcomprimido = TamTipoComp * ((Voriginal-Min)/(Max-Min))
Precisión = (Max-Min)/TamTipoComp
Vdescompr = Precisión*Vcomprimido + Min

Ejemplo: Altura de un individuo codificación en 1 byte.
Vcomprimido = 255 * ((X-0)/(2.20-0))
Precisión = 2.20/255 = 0,0086 metros
X = 0,0086*Vcomprimido

Si X=1.82...
Vcomprimido = 255 * (1.82/2.20) = 211
X = 0,0086*211 = 1,8146

Sesión 4 :: Transp. 5 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Mapeado de Texturas :.

● Las texturas se asignan a nivel de caras, por lo que cada triángulo
tiene un mapa de texturas individual que lo cubre totalmente.
● Un vértice puede tener asociadas varias texturas.
● La representación final del modelo puede resultar de la aplicación
de varios niveles de texturas.
● Asignación de coordenadas 2D (UV) a cada vértice del triángulo.

(u1, v1)

(u2, v2)

(u3, v3)

(u2, v2)

(u3, v3)

(u1, v1)

Imagen

Sesión 4 :: Transp. 6 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Mapeado de Texturas :.

● Debido a
cuestiones de
optimización,
las texturas
suelen ser
cuadradas y
con tamaño 2n
● La creación
de este tipo
de texturas no
es sencilla.
● Blender no
facilita
demasiado
este aspecto.

Sesión 4 :: Transp. 7 

Ver OREj/OREj.pdf

Documentación del formato

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Una Pipeline 3D Genérica :.

● Hemos visto cómo representar los tipos de datos... ¿Cómo
los renderizamos de forma eficiente?... Podemos ver la
Pipeline formada por 4 etapas.

.

Geometría
Original

.

l

m
r
e
t
e
D

f
r
e
p
u
S

e
b
s
V

i

i

.

m
r
e
t
e
D

l

n
c
u
o
s
e
R

.
f
s
n
a
r
T

.

m
u

l
I

r
e
t
s
a
R

Represen-
tación en
Pantalla

Recorte (Clipping)
Eliminación por Orientación (Culling)
Test de Oclusión

● La combinación de estos procesos consiguen una alta tasa
de frames por segundo en gráficos para tiempo real.

Sesión 4 :: Transp. 8 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Recorte: Clipping :.

● Eliminación de la geometría no usada dentro de un volumen
de recorte. Debe realizarse tan pronto como sea posible.
● Según el Engine y el tipo de juego podrá ser más o menos
efectivo (en general, bueno con niveles grandes, RPGs, FPSs,
RTSs...)
● Recorte de Triángulos: Analizamos triángulos
individualmente. Las aceleradoras modernas lo incorporan.
No obstante, no da buen rendimiento...
● Recorte de Objetos: Disponemos de una representación
homogénea del volumen del objeto.
● Esferas como Límite: Muy rápido, pero problemas...
● Cajas como Límites (Bounding Boxes): Más costoso
computacionalmente...

Sesión 4 :: Transp. 9 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Eliminación por Orientación: Culling :.

● Elimina la geometría dependiendo de la orientación. Parte
de la base en que los objetos están bien construidos (B-rep
correctas).

B-rep

No B-rep

No B-rep

● Suele implementarse menos que el clipping debido a:
● El beneficio es del 50%, mientras que clipping elimina
hasta el 80% de la geometría.
● Es complicado implementarlo.

Sesión 4 :: Transp. 10 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Test de Oclusión :.

● Dependiendo del punto de vista, puede ocurrir que un
objeto no permita que otro, situado detrás, se vea.

Objeto
Oculto

● Algunos juegos se diseñan aprovechando esta técnica de
optimización para que, en todo momento, haya el mismo nº
de polígonos aproximadamente... Como en los FPS.
● Implementado en Hw en tarjetas modernas (GeForce3...)

Sesión 4 :: Transp. 11 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Determinación de la Resolución :.

● Clipping, Culling y Test de Oclusión determinan qué vamos
a ver, mientras que la Determinación de la Resolución decide
cómo lo vamos a ver.
● Los objetos más cercanos y grandes aparecerán con mayor
número de polígonos que los lejanos y pequeños...
● Políticas Discretas: Disponemos de una tabla con los
modelos en varias resoluciones.
● Políticas Contínuas: Se
basan en eliminar aristas
que no aportan mucha
información. La técnica se
denomina Edge Collapse.

Sesión 4 :: Transp. 12 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Transformación e Iluminación :.

● En la etapa de Transformación se realizan las
transformaciones geométricas en el flujo de datos de
entrada.
● Típicamente rotación, escalado y traslación realizadas
mediante composición de matrices 4x4. Finalmente, las
coordenadas 3D se convierten en 2D mediante matrices de
proyección.
● En la etapa de iluminación aplicamos las características de
las superficies y modos de sombreado con las luces que
haya en la escena.
● Técnicas orientadas a vértices; no se pueden implementar
en Hw operaciones de RayTracing o Radiosidad.

Sesión 4 :: Transp. 13 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Rasterización :.

● Proceso en el que la geometría se convierte en un conjunto
de píxeles, que se envían al monitor. Todo en Hw.
● Importante la forma de enviar las primitivas a la GPU...
¡Agrupar todo lo que se pueda!

glbegin(GL_TRIANGLES);
glColor3f(1,1,1);
glVertex3f(1,0,0);
glVertex3f(0,-1,0);
glVertex3f(-1,0,0);
glEnd();

● OpenGL: Uso de vertex arrays.
● DirectX: Vertex buffers.
Paquetes de datos que sólo requieren una
llamada para enviar toda la estructura al Hw.
Acelera mucho los cálculos.

● Como el cuello de botella es el Bus, ¿por qué no enviar la
geometría sólo una vez y no en cada frame? → Técnicas del
lado del Servidor (Server-side techniques).

Sesión 4 :: Transp. 14 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Un Ejemplo en Primera Persona :.

Paso01.blend

Ver objetos/habitacion.blend

● Vamos a crear el prototipo de un juego en primera persona.
Importamos el escenario del fichero habitacion.blend.
● Borramos el cubo por
defecto de Blender y
añadimos a la escena los
objetos "Bases", "Habitacion
Global", "Paneles" y
"Plataformas".
● Situamos la cámara en el
interior del escenario, tal
como se muestra en la figura
de la derecha.

Escenario de ejemplo (4ª Sesión)

Sesión 4 :: Transp. 15 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Situando al Jugador :.

Paso02.blend

● Añadimos un objeto Empty a la escena [Barra Espaciadora]
Add/Empty, justo debajo de la cámara, que servirá como
jugador (Le cambiamos el nombre a "Jugador"). En el menú
de Game Engine lo definimos como Actor, con propiedades
dinámicas Dynamic, para que se tenga en cuenta sus
colisiones.
● El tamaño de la
Bounding Sphere
(en Size) lo
ponemos
aproximadamente
en 1 (Volumen de
cálculo de
colisiones físicas).

Sesión 4 :: Transp. 16 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Jerarquías para moverse :.
● Añadimos (Append) a la escena el objeto "arma", que se
encuentra en el fichero "armas.blend".

Paso03.blend

Ver objetos/armas.blend

Escopeta y Bala...

● Con ayuda de las
tres vistas, situamos
la pistola tal y como se muestra en la figura.
● Definimos la siguiente jerarquía:
● arma es un objeto hijo de jugador.
● Camara es un objeto hijo de arma.
● Para hacer un objeto A hijo de un objeto B,
primero seleccionamos A (siempre el hijo
primero) y manteniendo pulsada [Mayúsculas],
seleccionamos B. Hecho esto, pulsamos P y
pinchamos en Make Parent.

Sesión 4 :: Transp. 17 

[Contenido] 1. Introducción :: 2. Pipeline 3D :: 3. Ejem. GameEngine

Moviéndonos por el entorno... :.

Paso04.blend

● Al objeto Jugador, le añadimos los controles para poder
ava
  • Links de descarga
http://lwp-l.com/pdf1262

Comentarios de: sesión 4 - Gráficos 3D - Arquitectura General (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad