Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: simulatorone on January 16, 2010, 03:58:01 AM

Title: Problema del color transparente al añadirlos al fpg16bits
Post by: simulatorone on January 16, 2010, 03:58:01 AM
Hola!

Estoy pasando graficos de 32bit(algunos son de 24) y otros del altiguo 8bits con paletas.
A un FPG de 16bits compatible con Fenix/Bennu, usando el FPG EDIT 2009(bulid 0.12).
Es para la consola Wiz, em modo 16bits.ok?

El problema y duda es que no se como me aplicara el negro transparente...
Que graficos recomiendan importar?? PNG con canal alpha(32bits), TGA...

Uso el photoshop Cs2 y el IfranView, para editar y conversar graficos.

Es que el FPG Edit me confunde, y no se cual es el fondo transparente real que Bennu me interpretará en el juego.
Si no voy probando... pero me gustaria saber, que formato se recomienda para añadir graficos, con color transparente negro o con canal aplha, y que calidad de colores y formato.

Teng graficos de 32bits png con su canal alpha y otros graficos antiguos de 8 bits con paleta.

Ayuda!
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: Windgate on January 16, 2010, 12:26:58 PM
Yo te recomiendo usar el método de mi tutorial, los abres con Paint.NET (O similar), seleccionas el color de fondo con la varita mágica (Magic wand) y le das a la tecla Supr para convertir ese color en transparente. Al meterlos en un FPG de 16 bits lo tendrás correcto.

Otra opción menos recomendable es usar el Paint de Windows y el cubo de pintura con el color negro (0,0,0). En 16 bits se comporta como el transparente.

¿Te sirve así?

En 32 bits uso Gimp, y en la pestaña colores uso Color a Alpha, para convertir cierto color a transparente. Por ejemplo en un cielo con nubes, si haces esto último eliminas el cielo azul y dejas sólo las nubes, en 32 bits, muy lindo resultado :P
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: Drumpi on January 16, 2010, 10:34:35 PM
Yo trabajo con el paint y uso el negro absoluto como transparente, y un color cercano al negro como negro (0,0,5).
Pero lo más aconsejable y que funciona muy bien en FPGEdit (antiguo) es usar PNG con canal alpha.

Si no, es muy fácil hacer un código que cargue un FPG, ponga un fondo de un color, y vaya mostrando imágenes de ese FPG para ver si están bien las transparencias.
Yo tuve ese mismo problema y acabé por crearme una utilidad que me intercambiaba colores de forma masiva con varios formatos de imágenes, que recuerde ahora bmp, y map, y creo que unas cuantas de la image.dll, pero no recuerdo la efectividad. Sé que lo usé para crear las animaciones de ¡AH!, ya que a partir de un GIF obtenía las imágenes con un color de fondo diferente al negro.
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: Futu-block on January 17, 2010, 09:45:40 AM
y la compatibilidad a la hora de pasarlo a wiz??

o con poner ''320, 240, 16'' ya nos corrije solo ???
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: Windgate on January 17, 2010, 12:04:21 PM
Si usas fpgs de 16 en Wiz funcionará igual, pero si usas fpgs de 32 bits ahora mismo no sabría decirte... En Wiz hará lo mismo que en PC si pones set_mode ( 320 , 240 , 16 ), eso seguro.
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: SplinterGU on January 17, 2010, 05:22:26 PM
nop, no se pueden usar graficos de mayor resolucion que la resolucion destino... eso aplica para todo y ya lo dije muchas veces... estaria bueno poner estos tips en alguna seccion de la wiki...
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: simulatorone on January 17, 2010, 06:57:08 PM
OK,
Ya lo pille. en parte hice pruebas :) todo bien!

en modo 16bits, se usa el color 100% negro RGB(0,0,0) y eso seria el transparente.
y en modo 32bits, usando el canalaplha con png.

ok, yo esk uso el photshop y puedo hacer cualquier cosa y formato.

PEro megustaria saber que valor RGB minimo seria al 100%negro o el 99%negro.
No quiero que se me note casi nada, si es posible.

Tu Drumpi dices de 0,0,5 por ejemplo, puede ser 0,0,1??


Pues si cargas un fpg de 32bits en modo 16bits NO te lo cargará nada, de echo no te da error ninguno.

Y si usamos el modo de 32bits y usamos graficos de 32,16 y 8 bits, si que lo carga perfectamente :)

Pero si cargais un png de 32bits, en modo de 16 bits, creo que lo tienes que pasarlo a un New_MAP de 16bits y hacer un map_put o un comando similar para converir esos 32bits del png a 16bits de forma automatica...

es asi?

o no es necesario hacer esa conversion? si estamos en modo 16bits y cargarmos un png de 32.
pregunto.


y es por curiosidad :)


PD: y el fpg editor 2009, ya me sivre, aun que no me muestra el color transparente correctamente como se veria en bennu. y eso me confunde y no puedo fiarme de el.
Cual fpg editor recomiendan usar?? y donde lo puedo descargar?
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: SplinterGU on January 17, 2010, 07:41:53 PM
cuidado, rgb(0,0,0) no es transparente... 0 es transparente.

no, no se puede hacer un put de un grafico de 32 en uno de 16... repito... "nop, no se pueden usar graficos de mayor resolucion que la resolucion destino... eso aplica para todo y ya lo dije muchas veces... estaria bueno poner estos tips en alguna seccion de la wiki..."

si estas en 16 podes cargar graficos de 32, pero no los vas a ver...

el alpha solo te hara el color transparente, pero ese grafico tendra colision en las zonas transparentes si no son 0.
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: simulatorone on January 17, 2010, 09:48:02 PM
pues yo en mi juego esta en modo 16bits
y me deja cargar un png de 32 bits ,no los veré, vale... pero si puedo pasarlo a 16bits por comandos

los variables BO son locales y estan a 0.

FUNCTION CARGAR_MAPA_FX(NUMERO_DE_FX,STRING ARCHIVO_MAP,INT ANCHO_NUM_DE_FX,TOP_GRAFICOS);
BEGIN
GRAPH=LOAD_PNG(ARCHIVO_MAP);
REPEAT
IF(GRAFICOS_FX_MAP[NUMERO_DE_FX].GRAFICO[BO]);UNLOAD_MAP(0,GRAFICOS_FX_MAP[NUMERO_DE_FX].GRAFICO[BO]);END
GRAFICOS_FX_MAP[NUMERO_DE_FX].GRAFICO[BO]=NEW_MAP(192/2,192/2,CALIDAD_GRAFICA_BITS);
map_block_copy(0,GRAFICOS_FX_MAP[NUMERO_DE_FX].GRAFICO[BO],0,0,GRAPH,(192/2)*BO,(192/2)*BO[1],192/2,192/2,128);
BO++;
BO[2]++;
IF(BO[2]=>ANCHO_NUM_DE_FX);
BO[1]++;
BO[2]=0;
END
UNTIL(BO=>TOP_GRAFICOS);
GRAFICOS_FX_MAP[NUMERO_DE_FX].TOP_GRAFICOS=TOP_GRAFICOS;
UNLOAD_MAP(0,GRAPH);
END
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: Futu-block on January 18, 2010, 09:15:32 AM
y hay alguna opción en el fpg editor para que te los pase a 16bits ????
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: panreyes on January 18, 2010, 11:40:31 AM
Es cierto, se "pueden" cargar PNGs de 32 bits en 16 bits, pero tiene más historia detrás xD

Luego, eso de que las partes 100% negras (0,0,0) del gráfico en 16 bits son transparentes es relativo. Eso ocurre al meter los gráficos con el FPG Edit xD

Por eso yo tengo un método alternativo en el que sólo y únicamente cuenta el canal alpha.
Si le pegas un vistazo a cualquiera de mis proyectos verás como se generan los, fpgs desde los pngs, en el momento de compilar.
Title: Re: Problema del color transparente al añadirlos al fpg16bits
Post by: Drumpi on January 18, 2010, 02:25:43 PM
Simulatorone, ten cuidado, porque como dicen, un alpha de 0 en un pixel no significa que sea transparente, no se ve, pero hace collision, no es lo mismo.

Y no, no puedes usar un rgb=(0,0,1) como valor no-transparente, porque al hacer la conversión a 16 bits se pierde resolución. Es decir, rgb usa 3 valores entre 0 y 255, que se representan como 3 bytes (8bits cada uno), sin embargo, la representación 16 bits en Bennu usa 5 bits para el rojo, 6 para el verde y 5 para el azul. esa diferencia de bytes hace que se "redondeen" los valores a lo más cercano representable por Bennu, por eso digo de usar rgb=(0,0,5).
Puede que sea más, puede que sea menos, no se el valor exacto, pero prefiero usar el azul porque es la componente más oscura de las tres, y esa diferencia apenas se nota.