Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





evitar el corte en la figura por nearplane,y tamaño de perso

Iniciado por xeex, 29 de Mayo de 2007, 10:59:14 PM

« anterior - próximo »

xeex

Hola, primero agradecer a todos por este gran sitio, un foro de programacion grafica en español siempre es super util, GRACIAS.

Tengo otra duda si me puedeen ayudar porfavor.

Los screenshots estan con comentarios en ingles ,era un post que deje en gamedev, pero es super entendible:
mi problema es el siguiente, cuando me acerco a una figura me pasa que el near plane corta a esta pero lo hace,segun yo, demasiado lejos de la pantalla deberia cortar la figura mas cerca ya que lo tengo setado en 1(el near plane).
Me dieron como consejo que lo disminuyera(el near plane) pero como lo voy a disminuir mas si ya esta en 1.0 y si lo bajo la perspectiva se desfigura?
aki estan las figuras

los comentarios dicen:"puedo evitar esto"  "para que se vea asi"

http://img514.imageshack.us/img514/1188/82402901wj3.jpg

Bueno esa es una pregunta tengo otra:
parecera raro pero alguien me puede decir cual es la escala que se usa en opengl en los juegos. Me explico: cuando juego, por ejemplo quake2, de que tamaño es el personaje que veo es acaso de 100 altura? de 10?
de 1?????. con que tamaño se trabaja generalmente.
Planeo usar modelos 3d pero no que cual es el tamaño adecuado para una persona?

de antemano muchas gracias.
by..tes....

tamat

Por un stratos menos tenso

senior wapo

Las unidades son las que tu quieras. Yo uso las del doom1 original (el de 1993) que son aproximadamente 32 unidades = 1 metro, 1 unidad=3 cm.

Lo bueno que tiene es que puedo representar puntos y distancias con enteros en vez de floats con bastante precisión (3 cm).

Lo de que te recorte los poligonos solo lo evitas colocando los objetos más lejos, me temo.

xeex

tamat no te entendi.
Me quieres deecir que si puedo decrecentar mas de 1.0 a 0.1 o a 0.01?
eso me dices verdad?

lo que pasa es que si le pongo 0.1 por ejmeplo la perspectiva se me deforma totalmente.

Si has juagado un shooter por ejemplo quake2, si pones el comando fov 180 por ejemplo, es comparable a ponerle 0.1 a near plane.

gracias por responder

xeex

GRACIAS senior wapo
asi que 32uni=1 metro chaaaaa!!! yo creia que hacer algo de 20 ya era gigantesco  :D .

Ok, me quedo entonces con esa escala.

gracias

tamat

Algo no me cuadra, yo uso near de 0.01 y se ve de puta madre, el near no afecta a la proyeccion, afecta al culling cuando hace render y a la precision en el ZBuffer, pero no a la proyección. Puedes hacer la prueba en cualquier programa 3D.
Por un stratos menos tenso

Buffon

Cita de: "tamat"Algo no me cuadra, yo uso near de 0.01 y se ve de puta madre, el near no afecta a la proyeccion, afecta al culling cuando hace render y a la precision en el ZBuffer, pero no a la proyección. Puedes hacer la prueba en cualquier programa 3D.

precisamente se deforma por la precisión del Zbuffer.

[Vil]

yo siempre he tocao el near plane sin problemas para acercarlo bastante a la camara...
para mi 10 unidades = 1 metro. Tampoco me informé mucho antes de usar otra escala.

tamat

Cita de: "Buffon"
Cita de: "tamat"Algo no me cuadra, yo uso near de 0.01 y se ve de puta madre, el near no afecta a la proyeccion, afecta al culling cuando hace render y a la precision en el ZBuffer, pero no a la proyección. Puedes hacer la prueba en cualquier programa 3D.

precisamente se deforma por la precisión del Zbuffer.

No, perder precision en el zbuffer lo que produce son artefactos cuando dos planos estan muy cercanos (el clasico parpadeo entre dos poligonos en la lejania). Pero la proyeccion sigue siendo exactamente la misma.
Por un stratos menos tenso

senior wapo

Tener el near plane cercano es malo porque puedes desbordar la precisión en bits de un float en poligonos largos y perpendiculares a la cámara y otros casos. Me refiero durante las transformaciones y el cliping, que se acumulan resultados de multiplicaciones y demás antes de almacenar el resultado final.

En general es bueno que sea mayor o igual a 1, y no hace daño que sea de 3, como usa el editor del quake. Yo pongo 1 o 3 según me da ese día.

Con doubles no hay problema pero los APIs suelen usar floats. De todas formas normalmente no te va  a dar problemas y la gente ya está acostumbrada a que las cosas demasiado cercanas no se vean bien.

Buffon

Cita de: "tamat"
Cita de: "Buffon"
Cita de: "tamat"Algo no me cuadra, yo uso near de 0.01 y se ve de puta madre, el near no afecta a la proyeccion, afecta al culling cuando hace render y a la precision en el ZBuffer, pero no a la proyección. Puedes hacer la prueba en cualquier programa 3D.

precisamente se deforma por la precisión del Zbuffer.

No, perder precision en el zbuffer lo que produce son artefactos cuando dos planos estan muy cercanos (el clasico parpadeo entre dos poligonos en la lejania). Pero la proyeccion sigue siendo exactamente la misma.

lee a senior wapo.

poner en znear en 0.1 y el zfar en 50 por ejemplo, y tu tarjeta gráfica soporta MAX_PLANES planos de corte,

cada plano tendrá una profuncidad de 0.1 + (50-0.1)/MAX_PLANES respecto a la cámara.

Este problema se incrementa si pones un znear muy pequeño (0.01) y un zfar muy lejano, dado que los planos están muy alejados entre sí para hacer bien el cálculo, se puede desbordar el buffer, luego para buscar que elemento está más cercano para un pixel, se toma un conjunto de elementos y no sólo un plano transformado como debería ocurrir, lo que puede causar.

Además esta diferencia es más notable sobre el znear, dado que necesita un plano más abierto que sobre el zfar, que la visibilidad no necesita tal nivel de detalle y puede hacer que te comas una esquina de un cubo y se achate, se calcule mal su normal, o incluso se dibuje un punto que ni siquiera era la esquina del cubo.

Te lo digo que a los chavales les ha pasado un montón de veces haciendo ciertas prácticas que requieren de una cámara móvil e introduciendote en el elemento.

tamat

Bueno, pero el problema de desbordar el Z Buffer no es el problema de proyeccion erronea que comenta él. Él dice que la proyeccion de toda la escena le cambia si cambia el near (pone como ejemplo el cambiar el fov) y yo digo que eso no es normal, que el near no afecta a la proyeccion.

Para ejemplo una imagen que acabo de hacer:

Por un stratos menos tenso

marcode

Yo creo que lo mejor es modificar la z del vector de traslación de la matriz de proyección. Sería algo así.


void EstablecerDistanciaDeFrustum(float dist)
{
   float Matriz[16];
   ObtenerMatrizProyeccion(Matriz);
   Matriz[14] = dist;
   EstablecerMatrizProyeccion(Matriz);
}


Esto se puede modificar en el momento que se quiera antes de dibujar algo, y con las debidas precauciones se puede dibujar diferentes objetos con diferentes distancias. El valor podría oscilar sobre 0.1 y 10 (negativo si es OpenGL).
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]

ethernet

tamat me gustan las imágenes, usas lightmaps no?

lo de cambiar la matriz de proyección en función del objeto puede salir un churro de cuidado...

marcode

Cita de: "ethernet"lo de cambiar la matriz de proyección en función del objeto puede salir un churro de cuidado...

Si no se sabe lo que se hace... desde luego.
size=9]afortunadamente siempre ha habido alguien dispuesto a reinventar la rueda, de lo contrario seguiríamos usando un disco de piedra con un agujero.[/size]






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.