Ayuda sobre los graficos PNG.

Temas relacionados con la programación y la actualización audiovisual
User avatar
kelesisv
Usuario avanzado
Posts: 80
Joined: Thu Apr 28, 2005 3:09 pm

Ayuda sobre los graficos PNG.

Postby kelesisv » Sat Jun 25, 2005 9:02 pm

Bien resulta que estoy haciendo un remake de pippols.

Tengo definidos a los personajes en el Paint y utilizo de fondo un color verde, y los paso FireWorks MX 2004. La pregunta es que como se define ese color verde para que se completamente transparente. ??? el formato es PNG.

Y también como se hacen distintos tonos de niveles de transparencia ???, esto lo quiero aplicar a los fantasmas del bosque.

Estoy teniendo un quebradero de cabeza con este programa (es que no se utilizarlo).
User avatar
benway
Usuario avanzado
Posts: 172
Joined: Sun Apr 03, 2005 1:22 pm
Location: Madrid

Postby benway » Sat Jun 25, 2005 9:59 pm

¿Qué lenguaje de programación usas? Te lo digo pq yo solo sé (y muy poco por cierto :cry: ) de C++ y Allegro, pero... En Allegro (y creo que en otros sistemas tb) el color transparente es el Magenta (R:255 G:0 B:255).

Para lo de los distintos niveles de transparencia, tienes que usar el canal Alpha, en modo 32 bits (rgba). Cuando defines un color en este modo, le das 4 valores: Rojo, Verde, Azul y Alpha (o transparencia). Los gráficos los haces con cualquier programa que soporte esto del canal Alpha, y luego los grabas en BMP, PNG o el formato nativo del programa (P.Ej. PSD en el photoshop).

Léete este otro post y sus respuestas, que se habla de esto del canal alpha y la transparencia...
http://remakeszone.com/foro/viewtopic.php?t=321

No se si te habré servido de ayuda :oops: no es un tema que controle demasiado :(
Un saludo.Image - Image
User avatar
kelesisv
Usuario avanzado
Posts: 80
Joined: Thu Apr 28, 2005 3:09 pm

Postby kelesisv » Sat Jun 25, 2005 11:14 pm

Lo de canal alpha ya si que lo entiendo.

El lenguaje que estoy usando es c++ con SDL (soy un novato en esto). Aunque el motor del juego aun no lo empezado, pero lo que estoy haciendo son mini aplicaciones para ver como hacer las transparencias y movimientos, lo el color transparente es el Magenta (R:255 G:0 B:255) no lo sabia pero lo ya lo probare cuando llegue a casa.

La verdad que esto de la programación es un mundo muy grande hay tantas librerías y cosas que uno ya se pierde.

¿Donde puedo encontrar buena información de Allegro? ¿Es más fácil que las SDL?
User avatar
na_th_an
Usuario avanzado
Posts: 66
Joined: Wed Mar 10, 2004 2:01 pm
Location: Sevilla
Contact:

Postby na_th_an » Sun Jun 26, 2005 3:55 am

Allegro es doscientas veces más fácil de manejar que SDL, a mi ver. Creo que leyendo el tutorial Allegro Vivace (que está un poco desfasado ya, pero que sirve) en quince minutos tendrás tu primera pelotita botando por la pantalla. Además, es una biblioteca que tiene una curva de aprendizaje realmente genial: tras la pequeña debacle de empezar (como todas las cosas), todo empieza a venir solo y en un mes estás programando bonitos efectos raster para tu juego :)

http://www.allegro.cc es el sitio de la comunidad de programadores de Allegro. En google puedes encontrar muchos tutoriales, además.
La misión ha fracasado:
Has perdido tus efectivos.
User avatar
pauvictor
Usuario habitual
Posts: 13
Joined: Sat Oct 30, 2004 8:53 am
Location: Valencia

Postby pauvictor » Sun Jun 26, 2005 8:49 am

Hola.

No se si Allegro es mas facil que SDL, pero yo de SDL se un pelin... no mucho pero lo suficiente para aclararte lo del color key (transparencia).

En SDL puedes usar como transparente el color que quieras... una vez tienes la superficie cargada en memoria le aplicas la funcion

int SDL_SetColorKey(SDL_Surface *surface, Uint32 flag, Uint32 key);

En esa funcion deberias poner como superficie la superficie de la que quieres obtener la transparencia, de flag SDL_RLEACCEL para conseguir aceleracion en la aplicacion del efecto y mejorar los FPS del juego, y en el key va el color que usaras como transparente.

Para obtener un color como un Uint32 debes usar la funcion :

SDL_MapRGB(SDL_PixelFormat *fmt, Uint8 r, Uint8 g, Uint8 b);

Como parametros de la funcion tienes el pixel format que debe ser el de la pantalla o la imagen (deberias hacer que fueran el mismo para acelerar el blit)
Por ejemplo el formato de la pantalla si tienes una variable screen que es un puntero a la superficie, seria:

screen->format

Luego los colores se ponen en RGB entre 0 y 255.

Para aplicarle el canal alpha a esta misma imagen, lo tienes facil. Basta con meterle el valor de 8 bits de alpha a la superficie mediante la funcion:

int SDL_SetAlpha(SDL_Surface *surface, Uint32 flags, Uint8 alpha);

Para las combinaciones de flags, que deberias hacerles pruebas, tienes una tabla en la documentacion de SDL.

http://www.libsdl.org/cgi/docwiki.cgi/SDL_5fSetAlpha

La documentacion de SDL esta muy bien hecha, eso si SDL es muy engorroso... y más si no tienes mucho dominio de C.

Si tienes dudas puedo tratar de resolver alguna.... pero no soy ningun experto.

Bye.
User avatar
kelesisv
Usuario avanzado
Posts: 80
Joined: Thu Apr 28, 2005 3:09 pm

Postby kelesisv » Sun Jun 26, 2005 7:49 pm

Gracias por la documentación de allegro y las de SDL.

Bueno ya os comentaré como va saliendo la cosa.

Gracias a todos por ayudarme os tendré en cuenta.
User avatar
Popolon
Usuario avanzado
Posts: 474
Joined: Tue May 13, 2003 2:31 pm
Location: Lloret de Mar
Contact:

Postby Popolon » Sun Jun 26, 2005 11:55 pm

En principio, en SDL, si la imagen la tienes guardada en PNG o BMP a 32bits y con el canal alpha definido, la transparencia tiene que aparecer sin que hagas nada.

Yo tuve algún problema, y resultó que el problema era que no sabía generar el canal alpha correctamente con el photoshop. Asegurate de que las imagenes tienen el canal alpha bien generado!
User avatar
kelesisv
Usuario avanzado
Posts: 80
Joined: Thu Apr 28, 2005 3:09 pm

Postby kelesisv » Mon Jun 27, 2005 7:38 am

Entonces es más fácil.

Empiezo sobre base con un .bmp y ocupa bastante, entonces lo paso a .png al donde genero el color alpha (me ha costado bastante descubrirlo).

Pero como se guarda un PNG a 32 bits. Creo que lo guarda por defecto.

Hay alguna forma de reducir los .png un poco para que ocupen menos y que no pierdan los 32 bits.
User avatar
na_th_an
Usuario avanzado
Posts: 66
Joined: Wed Mar 10, 2004 2:01 pm
Location: Sevilla
Contact:

Postby na_th_an » Mon Jun 27, 2005 11:43 am

No. Si ocupan lo que ocupan es porque la compresión LZW no da para más.
La misión ha fracasado:
Has perdido tus efectivos.

Return to “Desarrollo”

Who is online

Users browsing this forum: No registered users and 2 guests