Hola coleguitas,
he estado haciendo unas pequeñas pruebas con el FPG Edit 2009 y me he construido un FPG de 32 bits con 3 imágenes de test que incorporan diversos colores y grados de transparencia, para probarlo a fondo vamos xD
He construido un videojuego muy muy sencillo, que simplemente invoca unos procesos (proceso.prg) que hacen uso de esos gráficos, pero no consigo que se vea nada en pantalla ???
En cambio si hago un put_screen con los gráficos sí que los veo sin problema alguno.
Aquí el link de descarga: http://www.mediafire.com/?nwzmhjhyu2t (http://www.mediafire.com/?nwzmhjhyu2t)
La verdad, llevo un rato pensando y no sé cuál puede ser el problema, el código es lo más sencillo del universo, y el FPG está bien construido y se me abre correctamente... Espero que sea uno de esos estúpidos errores estúpidos >:(
Grasias de antebraso!
EDIT: Con flags=128; consigo ver los procesos, pero ese flag ignora la información de transparencia, por lo que es como si estuviese mostrando gráficos en 16 bit
deben tener el canal alpha a 0
hay que revisar el fpgedit que hace con el canal alpha cuando no existe, deberia ponerlo al 100% (255)...
puede que no sea esto, pero por lo que contas, parece que si.
¿Te refieres al PNG original o al MAP dentro del FPG?
Desde el código he tocado la variable alpha, y ya veo que no se trata de eso. En el "juego" sólo veo los gráficos con alpha=255; y siempre tiene que estar con flags=128; pero evidentemente no se aprecia nada de las transparencias por culpa del flags.
la variable alpha, no cambia el alpha del grafico, asi que si el alpha del grafico esta a 0, podes tocar toda tu vida la variable alpha que no va a aparecer el grafico... en teoria asi deberia ser.
128 es NOCOLORKEY... claro, es eso, el alpha de los pixel del grafico estan a 0.
umn, revisaré el código de fpgedit por si es un fallo, pero de antemano no creo que sea.
Si no recuerdo mal si creas un fpg32 e insertas una imagen de menos profundidad , es decir de 24 u 8 bits, inserto el canal alfa a 255 excepto para el negro que pongo un 0.
Si insertas una imagen de 32 bits el canal alfa no se ve alterado, es el que hubieras hecho con el editor de imágenes.
Estoy mirando el ejemplo tuyo pero necesitaría las imágenes fuente para analizarlas.
¿Las tienes por ahí?
supongo que si es un error de codificación, en el editor que hice los gráficos no se ven, así que de bennu no es, si los codifico a 8 bits se ven muy bien. el tercero es la palabra testing, el segundo background con círculos de colores, pero en 32 bits el gráfico es completamente transparente.
Con esos resultados entonces creo que ya se lo que pasó.
Windgate Insertó una imagen de 24 bits en un fpg de 32 bits con el programa fpgedit v2009 b09 y éste no trataba el canal alpha por eso no se ve.
claro, cuando se insertan mapas sin canal alpha y se pretende generar un mapa de 32 bits, hay que forzar el canal alpha a 255, salvo para el color 0... yo tuve que hacer lo mismo en el codigo de bennu al cargar un png o lo que sea sin canal alpha.
saludos.
Estaba usando la b06, y acabo de localizar el enlace para la b09, pero no el de al b11...
¿Dónde guardas tus cositas DCelso? xD
Espero ansioso el Lunes, me la pasas por privado o por donde sea pofavo... ::)
Está en el post de fpgedit 2009, el primer mensaje.
Te dejo aqui el enlace de la b11 http://www.mediafire.com/download.php?zwnmjqnz5mw
Con respecto a la b12 no hay mucha diferencia así que prueba a hacer el fpg32 con e´sta versión a ver si va, de todas formas si puedes pasarme las imágenes que usas para poder hacer pruebas mejor que mejor.
http://www.mediafire.com/?zmjlgft3ym2
Aquí tienes las imágenes originales. No controlo si son de 24 o 32 bits ???
Estoy un poco pez todavía en estos asuntos, pero bueno, aprenderé xD
No te las he podido pasar antes porque Mediafire estaba un poco tonto, pero ya funciona bien.
Ahora pruebo a componer un fpg con la b11 a ver qué sucede, con la b9 no he tenido éxito...
FUNCIONAAAAAAAAAAA, FUNCIOOOOOOOOONAAAAAAAA!!!
Con la b11 perfectamente, es todo un placer, lástima que Mediafire se ha vuelto a poner tonto y no me deja subirlo... En cuanto me deje os lo dejo disponible, es vello por dentro ;D
Y AQUÍ LO TENÉIS!!! http://www.mediafire.com/?om92yyhdmnp (http://www.mediafire.com/?om92yyhdmnp)
Me alegra que fuera eso :), me asusté por un momento por haber dejado una última versión fpgedit inútil :D.
He visto ya tus imágenes, y son de 32 bits. Yo para comprobarlo uso el xnview, es como el acdsee pero gratuito, al cargar una imagen en la barra de estado te pone dimensiones y densidad de color.
De todas formas si las imágenes las haces con gimp y las guardas en png sólo hay dos formatos posibles a guardar en modo RGB de color. Si en el menú capa - transparencias - te sale la opción de añadir al canal alfa quiere decir que aún no tiene el canal alfa la imagen y si guardas el png en este estado se grabará una imagen de 24 bits RGB. Si das a añadir canal alfa ya cambiarías la imagen y se guardaría en 32 bits RGB.
Estoy muy muy contento con el funcionamiento de los gráficos en 32 bits, y por fin he comprendido esas cosas tan extrañas de los 24 y 32 bits con su canal alpha de por medio.
He localizado varias imágenes en 32 bits para realizar pruebas, pero desgraciadamente no son imágenes que puedan servir en absoluto para hacer un videojuego.
He intentado buscar en Google Imágenes con las palabras clave: 32 bit png fire alpha y cosas similares
Mi idea era empezar con algo sencillito como una animación de fuego en 32 bits, o un relámpago... Pero no encuentro nada. Lo que sí tengo son unos gráficos en 16 bits de relámpagos y fuego con el fondo negro. ¿Existe alguna forma de convertir ese negro en el canal alpha de forma que el relámpago quede como un gráfico de 32 bits o sería demasiado complicado?
¿O alguno de vosotros conoce algún sitio donde encontrar recursos gráficos de 32 bits que puedan servir para hacer un videojuego? ???
EDIT: Me autorespondo parcialmente, he conseguido con Gimp convertir el negro en canal alpha, en mi blog os explico fácilmente cómo puede hacerse: http://trinitformacion.blogspot.com/2009/07/generar-graficos-en-32-bits-partir-de.html (http://trinitformacion.blogspot.com/2009/07/generar-graficos-en-32-bits-partir-de.html)
También os dejo las capturas del antes y el después:
Antes:
(http://3.bp.blogspot.com/__SNyA7iqBq0/SlsYU-8KhQI/AAAAAAAAAVs/dCrMG6M9YgE/s400/Fuego.jpg)
Después:
(http://4.bp.blogspot.com/__SNyA7iqBq0/SlsYVMrOmqI/AAAAAAAAAV0/LhqwCYpBz5M/s400/Fuego.png)
Quote from: Windgate on July 13, 2009, 11:09:38 AM
¿Existe alguna forma de convertir ese negro en el canal alpha de forma que el relámpago quede como un gráfico de 32 bits o sería demasiado complicado?
A ver, esa conversión la hace actualmente fpgedit.
Bastaría con crear un fpg32bits, meter la imagen png de 24 bits dentro, exportarla a tga o bmp y abrirla con gimp para retocar y/o guardar en formato png.
También puedes usar gimp para ello.
Abres la imagen png de 24 bits, te vas al menú canales - transparencias y das a añadir al canal alfa.
Ahora con la herramienta de selección por color seleccionas el negro y se seleccionan todos los píxeles negros de la imagen.
Ahora tocas la tecla "supr" o te vas a "editar - eliminar" y verás que se convierte en transparente.
Ahora puedes retocar o añadir efectos y guardar. El formato guardado será ya en 32 bits.
Trucos:
puedes jugar con la tolerancia de las herramientas. La tolerancia es un valor entre 0 y 100 que indica a gimp qué colores cercanos y parecidos interpretar además del seleccionado. Pruébalo y verás los efectos, por ejemplo para seleccionar con la varita mágica si pones tolerancias bajas verás que va seleccionando también colores cercanos parecidos al seleccionado.
Cuando usas la herramienta borrador con tolerancias pasa algo parecido verás que no se borra del todo lo seleccionado sino que "va difuminando los colores" En realidad lo que pasa es que pone el canal alfa de lo que vas borrando a colores cercanos a 0 por eso se medio ven :D.
Hay herramientas de difuminado como la gota o el dedo que sirven para borronear por lo que puedes también usar tolerancia para acercar colores entre píxeles.
Con estas herramientas, imaginación y muchas, muchas pruebas conseguirás resultados muy buenos
También puedes aplicar los distintos tipos de filtros que lleva gimp para ver resultados, el enfocar y desenfocar también dan buenos resultados en imágenes de 32 bits.
Nota: El mayor problema que te puedes encontrar luego a usar los gráficos de 32 bits en tus juegos, es el comentado ya en varias ocasiones. Puede que algunos los píxeles que aparentemente en tu imagen se ven transparentes causen colisiones, esto es debido al efecto que alguna vez hemos llamado "cristal". Un cristal no se ve pero colisiona, pasa lo mismo con los píxeles transparentes.
A ver si puedo explicarlo con pocas palabras. El transparente en un pixel se produce al llevar su componente alfa al valor 0, pero recordemos que sigue teniendo información en sus componentes RGB, así que tanto el verde con alpha 0 como el amarillo con alfa 0 no se verán en la imagen, pero son colores distintos, por decirlo de alguna forma, uno es el verde transparente total y otro es el amarillo transparente total aunque no se vean ninguno de los dos.
SplinterGU ha programado Bennu para que el único color transparente total que no de colisiones sea el negro transparente total, osea componentes RGB negras y alfa 0. que su representación interna en 32 bits es un 0 absoluto. R = 0, G = 0, B = 0, Alpha = 0.
Volviendo a gimp. Cuando borramos un píxel con gimp lo que hace es tocar su componente alfa hasta ponerla a 0, pero no toca su componente de color RGB, esto implica que si verdaderamente una sección o región de tu imagen quieres que no produzca colisión deberás pintarla de negro y una vez pintada de negro seleccionarla y borrarla. Consiguiendo así que su componente de color RGB sea negro y su canal alpha sea 0.
Un truco para ver qué colores hay detrás del canal alpha de una imagen y así revelar qué regiones transparentes van a producir colisiones es abrir la imagen en xnview y en el menú view desactivar la opción "use alfa channel" Así verás la imagen sin el canal alfa y verás las regiones transparentes en el color de su componente RGB.
Otros problemas menor que me he encontrado es que algunos programas visores de imágenes cuando ven que todos los valores alfa de todos píxeles es 0 interpretan que no puede ser una imagen totalmente transparente y desprecian ese valor mostrando la imagen con sus valores ocultos.
Quote from: Windgate on July 13, 2009, 11:09:38 AM
¿O alguno de vosotros conoce algún sitio donde encontrar recursos gráficos de 32 bits que puedan servir para hacer un videojuego?
No creo que haya muchas, e incluso que existan, esto no es muy normal a la hora de programar en 2d, está muy verde el tema.
Podrías crearlos a través de modelos 3d ( estos recursos si que puedes encontrarlos en la red, :D) al que le aplices efecto de luces y/o texturas y exportando un snapshot de la vista a imagen. Puedes usar blender para ello.
Has llegado tarde DCelso, ya había encontrado al forma de añadir un canal alpha con Gimp. En cualquier caso tu explicación servirá de ayuda para otros noobs como yo xD
Excelente idea lo de usar Blender para generar sprites a partir de modelos 3D de terceros, de hecho recientemente un alumno uso un visor de modelos de World of Warcraft para generar un FPG con un pícaro no muerto andando, incluso el scroll del juego era una captura de Durotar.
Lástima que por aquél entonces no conocíamos los 32 bits y los bordes del pícaro no muerto se veían negros... Si recupero el trabajo me ocuparé de migrarlo a 32 bits.
Gracias por todo DCelso!
Anda, muchas gracias, Windgate, por el truco de cambiar un color a escala de transparencia, porque llevaba tiempo buscándolo. Ahora sólo hay que encontrarlo tambien para el potochof, pero vamos, teniendo ambos programas, como que da lo mismo XD.