Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Redondeo de vértices al pixel más cercano

Iniciado por fiero, 23 de Noviembre de 2002, 03:25:31 PM

« anterior - próximo »

fiero

                                hola, a ver si me explico
¿habeis visto como en los juegos de playstation one los triángulos fructuan un pixel arriba o abajo al mover la camara? Es decir, si la posición Y del vértice de un triángulo, al pasarlo de 3D al sistema de pantalla 2D, dá y=10.9, el vértice se dibuja en la fila 10 de la pantalla. Si al mover la cámara, el mismo vértice al pasarlo a coordenadas de pantalla dá y=11.1, el vértice se dibuja en el pixel 11 de la pantalla.

Un ligero movimiento de cámara, hace que el triángulo se renderice 1 pixel arriba o abajo. Esto aplicado a toda la escena hace que los triangulos bailen, produciendose un efecto muy feo.

He pensado en "redondear" los valores de los vértices 2D antes de renderizar el triángulo, cambiando la textura de cada vértice por la que tendria si el vértice estuviera la posición exacta del pixel.

¿Cómo se soluciona esto en los motores software? ¿Cómo se llama a este efecto en inglés? (como no sé nombrar esta cosa, tampoco he leido nada del tema)

saludos                                
www.videopanoramas.com Videopanoramas 3D player

ALBSIM

                                Creo que te refieres al problema del "aliasing". Para solucionarlo, busca en la red por "antialiasing"                                

fiero

                                Gracias por contestar.
Bueno, no sé si se podria meter este problema dentro del aliasing. La verdad es que tengo implementados 2 tipos de antialiasing, uno renderizando 2x2 pisels por pixel y otro 4x4 pixeles. Si utilizo el antialiasing el problema disminuye (o se hace inapreciable), ya que en vez de vibrar los triangulos 1 pixel arriba o abajo, vibran 1/4 de pixel (en el caso de antialiasing 4x4) y eso no se nota. Lo que pasa es que el antialiasing por soft es muy costoso y no se puede usar siempre.

Me he fijado que en las aceleradoras 3D no se aprecian estos movimientos de triángulos aunque tengan desactivado el efecto antialiasing , así que harán otra cosa.

De todas formas me has dado una idea, voy a buscar por ahí "antialiasing de vértices" o algo así, a ver si existe...

un saludo                                
www.videopanoramas.com Videopanoramas 3D player

Ithaqua

                                En las aceleradoras sí que se da, solo que cuando se trabaja con modos de alta resolución la cosa se nota bastante menos.                                
thaqua^Stravaganza
http://ithaqua.stravaganza.org

mac^threepixels

                                Se llama subpixel (o subtexel para las texturas) y solo tienes que hacer lo que tu mismo decias, desplazar las coordenadas de textura desde el vertice hasta el punto de sampleo

Por ej

|
|
|  
|*
|__

Donde * es a donde 'redondeas' el vertice, tendras que interpolar las coordenadas de textura de los 3 vertices para saber cuanto valen en *.

Para las posiciones igual, si usas un DDA para rasterizar el triangulo, tendras que anyadirle al DDA los offsets que usas para redondear                                
----------------------------------
mac^threepixels
http://www.threepixels.org

fiero

                                ahá, gracias por las respuestas. Voy a intentar hacer el redondeo, a ver si no me consume demasiada cpu...

un saludo                                
www.videopanoramas.com Videopanoramas 3D player






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.