Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Como darle perspectiva al mapa (PREGUNTA)

Iniciado por avalontm, 26 de Enero de 2013, 08:27:30 PM

« anterior - próximo »

avalontm

quisiera saber como podria darle una perspectiva halgo similar ha esta imagen´

me refiero solo al mapa, no a las casas o contrucciones que se ven. :P





[EX3]

Eso de las capturas es 3D puro, lo más parecido para hacerlo en 2D seria implementado el modo7 como lo hacia la Super Nintendo, pero tampoco es posible con lo que ofrece dx_lib32.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Manu343726

Lo más rápido que se me ocurre es que dibujes el mapa en forma de trapecio, pero eso implica que para cada tile calcules la "deformación" y uses DRAW_VertexMap().

La deformación es bastante sencilla de calcular, no te líes a hacer proyecciones 3D ni cosas por el estilo. Lo más sencillo es que te hagas una regla de tres en plan "cuanto más arriba (entiendendo arriba como más cercano al borde superior de la ventana, menor coordenada y, vamos) más pequeño"

Ajustando el factor de deformación, podrás poner el mapa de manera que parezca que la cámara mira más o menos en picado. (Si todo esta bien, si la cámara mira perpendicular al suelo, debería salir un tilemap ortogonal normal y corriente).

Otra cosa es que tus personajes, edificios, etc se ajusten a dicha perspectiva. Si no me equivoco, para las coordenadas de dibujo aplicas la misma "transformación de perspectiva" y debería salir, pero que ya el dibujo esté bien es más problema del grafista....

[EX3]

Cita de: Manu343726 en 27 de Enero de 2013, 05:15:47 PM
Lo más rápido que se me ocurre es que dibujes el mapa en forma de trapecio, pero eso implica que para cada tile calcules la "deformación" y uses DRAW_VertexMap().
El problema segun esta implementada la funcion DRAW_VertexMap() es que no se puede realizar la correccion de coordenadas de textura, que es por lo que no se podria simular modo7 con dx_lib32. Puedes dibujar una figura con vertices libres y aplicarle textura, pero segun las coordenadas del quad resultante un poligono se dibujara deformado respecto al otro, partiendo el sprite en diagonal.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Manu343726

Pero siempre que use diferentes texturas para cada tile (no usa un sprite enorme y lo parte en cachos para aplicarlo al tilemap) no debería funcionar correctamente?

A no ser que la deformación sea muy grande, debería funcionar....

Esta tarde hago una prueba y os subo una foto

[EX3]

No se, de lo que pude probar en su momento, la deformación es muy notable por leve que sea, pero igualmente probar a ver que tal queda.

Desde luego el efecto sera algo como esto:


Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Manu343726

Ya, pero con lo que estaba pensando, los tiles deberían tener forma de rectángulos o trapezoides, de manera que no debería haber tanto desplazamiento del centro de la textura, vamos que no sale tan amorfa.

Ya me he picado XD. Si tengo tiempo un día de estos lo pruebo.

avalontm

muchisimas gracias por sus respuestas, pero entre tanto ver sus respuestas esta en 50% de posibilidades de poder hacer halgo similar.

:P

saludos!

Darago_malaga

Porque no creas el mapa de forma normal en un rectángulo en memoria y luego lo deformas en trapecio? Como si tumbaras la imagen.

[EX3]

Cita de: Darago_malaga en 29 de Enero de 2013, 09:55:23 PM
Porque no creas el mapa de forma normal en un rectángulo en memoria y luego lo deformas en trapecio? Como si tumbaras la imagen.
Seguiría pasando el problema que comentamos de la deformación de coordenadas de textura entre ambos polígonos del quad. Esto es un fallo de la propia librería ya que en su día cuando escribí la función DRAW_VertexMap() no contemplaba este problema (espero que Manu343726 lo tenga en cuenta en su port :P)

Salu2...

José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Manu343726

Claro, eso de tumbar es lo que tenía yo en mente. Pero sigo sin ver donde esta el problema. Mientras el quad no sea muy amorfo, no debería quedar muy mal no?

Sobre lo de tenerlo en cuenta....Si, lo puedo tener en cuenta, pero ahora mismo no se cómo solucionarlo XD. Un quad son dos triángulos, y si el quad es muy amorfo los triángulos también lo serán no? De manera que cuando se interpola la textura a través de los triángulos, no le queda otra, la estirará.

[EX3]

A ver si por tumbarlo os estais refiriendo a proyectarlo en 3D y rotandolo en su eje X :P Os recuerdo que dx_lib32 trabaja en ortogonal (2D tradicional), de ahi la deformacion de textura ya que el quad tienes que deformarlo por sus vertices para dar la sensacion de estar tumbado.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt

Darago_malaga

Y no se podria usar un quad de 4 triangulos. Imaginate un cuadrado y una x en su interior. Serian 5 puntos en total.

Igual es una tonteria.

[EX3]

Cita de: Darago_malaga en 31 de Enero de 2013, 12:59:53 AM
Y no se podria usar un quad de 4 triangulos. Imaginate un cuadrado y una x en su interior. Serian 5 puntos en total.
El problema es que la libreria no ofrece ninguna funcion que permita pintar triangulos texturizados.

Desde luego la unica manera "sencilla" de abatir un quad y que la textura no se deforme, salvo en la perspectiva que tome, es utilizando proyeccion 3D, y no ortogonal como usa dx_lib32, y rotarlo en su eje X (su eje horizontal). La verdad que por que en su momento lo veia demasiado complicado, pero si no si que me hubiera gustado realizar una implementacion de modo7 en dx_lib32.

Salu2...
José Miguel Sánchez Fernández
.NET Developer | Game Programmer | Unity Developer

Blog | Game Portfolio | LinkedIn | Twitter | Itch.io | Gamejolt






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.