Sigo diciendo que te confundes.
Jimmyhoo escribió:es muy cierto que todo lo que vemos es a fin de cuentas 2d, pero retomando el caso de duke nukem e incluyendo a doom, estos si son en 3d(internamente claro), manejan objetos poligonales con vertices que son los mismos escenarios con paredes y demas partes
El mundo de estos juegos es 2D, todo es plano, no hay coordenada Z, no hay tercera dimensión.
Duke está mucho más elaborado que Doom y se acerca mucho más a la sensación que ofrecería un juego en 3D real, como es la posibilidad de situar diferentes pisos uno encima de otro, pero toda esta elaboración de más no es otra cosa que diferentes trucos para acercarse a esa tercera dimensión. En el fondo los dos juegos funcionan igual.
Jimmyhoo escribió:si como quieres ser mas especifico en los conceptos entonces podemos apegarnos a la definicion y a lo que tu te refieres es 2.5D y a lo que yo me refiero es Billboards aunque propiamente son lo mismo y se manejan como sinonimos aunque 2.5D ya no se usa debido a su dificultad de programacion frente al billboard que se considera su sucesor
pero todo esto solo aplica a los personajes no al escenario de duke nukem el cual si es 3d
Sí, a efectos prácticos el sprite y el billboard podrían verse como la misma cosa y en un juego moderno ambos términos podrían usarse para referirse a lo mismo, aunque de forma tradicional el sprite es propio del 2D y por tanto, al contrario que el billboard, no va buscando el enfoque de la cámara, simplemente se dibuja donde se le indica y ya está.
Estos juegos usan sprites del primer tipo, no billboards. Lo único que hacen al dibujarlos es tener en cuenta la distancia entre la cámara y el objeto para determinar el escalado de tamaño y si delante de él hay alguna otra cosa que no permita dibujarlo por completo. No hacen absolutamente nada más.
No hay diferencia, por ejemplo, entre dibujar un Imp del Doom y dibujar a Bowser en la batalla final del Mario World. Ambos pueden escalarse y ambos pueden dibujarse en cualquier punto siguiendo un orden de preferencia respecto a otros sprites.
El escenario no es 3D, simplemente simula ser 3D al pasar a dibujarse. Internamente todo se opera en 2D. El mundo se dibuja mediante raytracing, con lo que (no se si hace falta que explique de que va, pero bueno), teniendo en cuenta el ángulo de visión de la cámara, se empiezan a lanzar rayos, líneas, hacia adelante, sólo en horizontal, no existe la vertical (no hay 3D).
Cuando uno de estos rayos encuentra la pared tenemos un valor que determina cuánto de lejos esta ese sector de pared. El rayo que se ha lanzado al lado del primero determinará cuánto de lejos estará el sector de pared contiguo, y así sucesivamente.
Una pared, a no ser que esté muy lejos y apenas se dibuje, recibirá varios rayos, estará formada por varios sectores.
Supongamos que estamos mirando una pared en perspectiva. Internamente tendremos la posición de la cámara y una línea en diagonal que marca una pared a la que enfoca la cámara. El juego también guarda la altura del suelo y techo de la habitación en la que se encuentra la pared.
Al lanzarse los rayos contra esta diagonal se tendrán las distancias de cada uno de sus puntos a la cámara. Seguidamente se determina, operando con la altura de la habitación y la distancia obtenida, la altura de cada uno de estos puntos, que se convertirán en sectores de pared. De esta manera, cuanta más distancia exista hacia el punto, menos altura se dibujará, y viceversa.
Dibujados todos los sectores de pared con el tamaño calculado lo que se obtiene es una pared en perspectiva, con uno de los extremos más próximo a la cámara, con todos los sectores intermedios alejándose progresivamente hasta llegar al extremo opuesto totalmente alejado. Sería el dibujado en 3D de la línea diagonal en 2D que se tenía al principio.
Seguramente mirando algún tutorial de raytracing con imágenes se vea más claro que toda esta parrafada.
Jimmyhoo escribió:los personajes son a fin de cuentas sprites, pero como dije estan sobre dos poligonos(que forman un cuadro) esto se maneja asi en los ambientes 3d para lograr que el sprite siempre se vea en direccion a la camara, un sprite internamente maneja coordenadas 2d, si metemos un sprite en un ambiente 3d, este se quedara estatico en unas coordenadas, ademas de que estaria dibujandose como un cuadro
para lograr que un personaje en un sprite(un dibujo pues) este en un mundo 3d, este se incluye como textura en un cuadro formado por 2 poligonos(2 triangulos) o como es la definicion orignal que es la que prefieres, en cuadro con un sprite delimitado por coordenadas 3d en base a un vertice que controla su posicion, este cuadro siempre tendra una orientacion hacia la camara(se le debe programar eso) y a ciertos tonos del sprite se les aplica el alpha chanel que no es otra cosa que transparencias para que se vea unicamente al personaje y no un cuandro con el personaje dibujado encima
esto es tambiene en otros juegos como quake 2, 3 half-life etc pero ya no como 2.5D sino como billboards, pero es mas comodo el termino y 2.5D propiamente ya no se usa, asi que los spirtes de la misma forma se ponen encima de 2 poligonos que volten siempre hacia la camara y con una trasnpaencia aplicada
En esos juegos un billboard típico serían los brillos y destellos de luz, planos mirando siempre a la cámara.
Los marcadores de vida, munición y demás, en cambio, podrían perfectamente estar hechos de dos maneras. Una es siendo billboards como los otros sólo que dibujados en último lugar. Otra es, teniendo la imagen final en memoria, coger los gráficos de los marcadores y combinarlos tal cual (como si tuvieras una imagen en un programa de dibujo y comenzaras a pintar encima).
De las dos maneras se obtiene el mismo resultado, pero de hacerlo con un billboard primero tendría que haberse calculado que la normal del plano del marcador apuntara a la cámara, mientras que de la segunda manera no hace falta hacer nada especial.
En el Doom y el Duke no es tan sencillo porque los sprites no se dejan para el final, no se dibujan encima de todo, pero la forma con la que se les trabaja es la misma, no se tiene en cuenta la cámara para nada salvo, como ya he dicho antes, para establecer el tamaño.
Jimmyhoo escribió:una forma de ver esto es por ejemplo con un PS2 y el juego final fantasy tactics, si pones el juego con las mejoras a las texturas(en las opciones del PS2), el PS2 querra agregar a los sprites de los personajes una tonalidad o hara una interferencia con el alpha chanel al no tener los mismos tonos por ese cambio que le dio, haciendo que los personajes(que son sprites) se vean como dibujos encima de papeles transparentes
No he tocado mucho la PSX, pero siendo una consola pensada para rendir en 3D imagino que la mayoría (¿todos?) los juegos, aún siendo totalmente 2D, no usan sprites 'clásicos', sinó billboards, sprites 3D, sprites modernos o como les llamemos (vamos, una textura pegada a un plano).
Pero vaya, esto ni idea, sólo lo supongo.