Ir al contenido

publicidad
publicidad

Foto

Luz en 2D [XNA]


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
7 respuestas en este tema

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#1

Escrito 26 enero 2010 - 21:20

Buenas, veréis, he realizado el siguiente efecto usando GDI+ "puro y duro" en .NET:

http://www.youtube.com/watch?v=EGqtRx7RDow
(perdonad por la calidad de la grabación, pero la máquina virtual no daba para más)

Al usar el GDI+ juego con la matriz ColorMatrix para aplicar distintos grados de color a cada una de los "tiles".
Queda un poco (un poco bastante :| ) cutre, ya que la "luz" depende del ancho de los tiles. Cuanto más ancho, peor es el "degradado".

Amén de que ejecutando dicho código la CPU se me pone al 93% de uso y oigo como el ventilador del PC "despega" :D

La cuestión es que quiero empezar a "migrar" a XNA de una vez por todas y empezar a hacer algo en 2D.

El tema es que ya sé "pintar" un mapa (infinito) a base de "tiles" en XNA y más o menos sé lo básico.

Lo que no "sé hacer" es esto:

http://www.youtube.com/watch?v=h-NqrUeiflQ

Cómo véis, aquí el efecto está mucho mas "currado" y no dependes del ancho de los tiles que dibujes para aplicar la "luz".

Hacer esto para mi ya sería la "re-pera":

http://www.youtube.com/watch?v=6AwJb0lz5nk

Y esto ya ni digamos:

http://www.youtube.com/watch?v=ut0SqBeAy1Q

Ahora que Ziggyware parece que ha "muerto", ¿alguien sabe donde puedo encontrar como hacer esos efectos explicados de forma fácil?

Saludos.

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#2

Escrito 26 enero 2010 - 22:23

El segundo video supongo que es un sprite superpuesto al fondo que es todo negro salvo por el centro donde han puesto un punto en canal alpha.

Vamos, como si en el gimp haces una imagen, la pones todo negro y borras en el centro haciendo que quede transparente.

El tercer video es un fondo en 3d -o 2d, o un plano en 3d que simula ser 2d- al que han aplicado un shader de bump mapping a la textura y la luz es una autentica luz en 3d, al menos como lo describo se puede conseguir lo mismo.

El cuarto es el que si que no se como hacerlo.

Supongo que es jugando con la gamma de los sprites del fondo y la "luz" no es mas que otro sprite con efecto de luz. Es lo mas posible analizando eso. Vamos, que desde la "luz" -puntero- sale un vector hacia cada sprite. Si el vector llega sin problemas altera segun el modulo de este la cantidad de gamma añadida o quitada al sprite.

Creo...

Un saludo.

  • Ollydbg

  • Valefor

  • vida restante: 100%
  • Registrado: 05 sep 2008
  • Mensajes: 6.259
#3

Escrito 27 enero 2010 - 20:29

Ante todo gracias por las molestias en contestar, Ellolo17.

Si bien es cierto que saber que técnica se ha usado para hacer estos efectos puede ser interesante, mi pregunta iba más enfocada a cómo hacerlos y eso incluye "algo" de código fuente o por lo menos "bibliografía" para hacerlo.

Preguntaré al Sr. G**gle si acaso, ya que este foro parece más un cuasi-monólogo de "¿Dónde me apunto para desarrollar videojuegos?" o "¿Qué estudios necesito para ser desarrollador de videojuegos?". Por favor, que nadie se tome a mal este último comentario. Todos hemos tenido 17 años y creíamos que éramos los reyes del mambo :)

Saludos.

  • deviax

  • Methuselah

  • vida restante: 100%
  • Registrado: 23 mar 2005
  • Mensajes: 182
#4

Escrito 28 enero 2010 - 00:50

Hola Ollydbg,

Me gustaría poder ayudarte con este tema pero la verdad es que nunca me he metido en él..., y vaya si me han dejado a mí también los dientes largos esos vídeos!!.

Te dejo este enlace al foro de XNA donde alguien preguntaba sobre efectos de luces y le contestan con tres enlaces (en uno de ellos puedes descargar un proyecto del que sin haber visto código, por la ejecución puede que te interese).

Sobre lo que te ha dicho Ellolo17, estoy de acuerdo con lo que te ha comentado. Todos esos vídeos pueden haberse hecho simulando las 2D sobre 3D tal y como explica él, pero quiero pensar que si ponen como título que es en 2D se refieren a 2D puras y no a una simulación...

Ya por otro lado, no se como habrás implementado las luces en la prueba que has colgado, pero viendo lo que tienes yo lo que intentaría sería aplicar la luz en lugar de al centro del tile, a una de las esquinas; y luego a la hora de seleccionar la intensidad de la luz en la siguiente tile, calcularla en base a las esquina de las tiles contiguas.., no sé si podrás hacer algo similar o si esto es muy complejo, pero es lo que me viene a la cabeza desde el completo desconocimiento O:).

Ánimo y cuelga tus progresos si sigues profundizando con estas técnicas, que a mí por lo menos me ha despertado la curiosidad!.

Un saludo

#5

Escrito 28 enero 2010 - 14:30

Creo que esto te puede interesar:

http://blogs.msdn.co...lights-out.aspx

Este enlace, junto los 3 que aparecen en el foro de XNA, creo que pudes tener tu solucion.

Ademas decirte que los videos que ha spuesto, no son solo 2D: son sprites 2D con elementos 3D para calcular las luces, no hay forma de hacerlo solo con 2D (quizas el 2º video si, pero el 3º y el 4º tienen 3D seguro).


Un saludo

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#6

Escrito 28 enero 2010 - 16:57

Na, Rantamplan, el 4º se puede hacer solo en 2d pero con varios sprites y tocando el canal gamma de fondo o poniendo encima la version "iluminada" de ese sprite y hacer que sea mas o menos visible segun la distancia del puntero a ese punto, no es solo una imagen en 2d como los anteriores. Aunque es muchisimo mas facil hacerlo en 3d que solo en 2d si es el caso XD

Aunque coincido en que el tercero es un plano al que le han puesto una textura 2d y luego ademas han añadido un shader.

Un saludo.

#7

Escrito 28 enero 2010 - 19:07

Caga lacasitos chaval. He estado investigando un poco ya que me parece muy dificil que el efecto del 4º video se pueda realizar solo usando 2D (sobre todo por la iluminacion de las columnas y las sombras proyectadas).

Resulta que ese video es de un ejemplo hecho con una libreria 2D para C++ llamada "GameSpace Lib" (enlace: http://www.asantee.net/gamespace/ ) y ese ejemplo esta explicado en un powerpoint (en portugues, pero se entiende bastante bien) aqui: http://www.asantee.n...pace/#tutoriais


Resulta que lo que hacen es hacer un mapa de normales para representar el relieve del sprite, y luego aplicando un shader para iluminarlo.

Imagen Enviada

Vamos, que son tecnicas demasiado rebuscadas en 2D pudiendo hacerlo más facil en 3D como en este ejemplo: http://www.catalinzi...m/?page_id=313.


Un saludo

PD: La imagen no funciona, alguien sabe poner imagenes?

  • Ellolo17

  • Zodiark

  • vida restante: 100%
  • Registrado: 16 nov 2006
  • Mensajes: 6.208
#8

Escrito 28 enero 2010 - 21:55

No es que no funcionen las imagenes, es que no tienes aun 100 mensajes :P

Tranquilo, aqui estoy yo para solucionarlo. Dame 5 minutos y listo ;)

EDIT::::::::::::
Listo. Y te he corregido el link a la pagina que te cogia el ")" del final ;)

Un saludo.

PD: ¿Ves como eran sprites? Aunque con las 3d eso se hace menos laborioso y queda mas resulton, sobre todo por poder mover las camaras para ver mejor ciertas cosas. Aunque se pierde el encanto de los sprites.


Este tema ha sido archivado. Esto significa que no puedes responder en este tema.
publicidad
publicidad