Autor Tema: Cambiar colores de una imagen  (Leído 140 veces)

Gabysantof

  • Newbie
  • *
  • Mensajes: 6
  • Karma: 0
Cambiar colores de una imagen
« en: Noviembre 23, 2018, 08:58:27 pm »
Hola. Buenos dias. Mi nombre es Gabriel. Soy de Argentina. Hace poco tiempo comence a desarrollar en bennu. Estoy haciendo un juego de naves. Qusiera saber si se puede cambiar el color de las naves q tengo cargadas en mi archivo fpg de manera de poder contar con mas enemigos que parezcan diferentes pero usando los mismos sprites. Se entiende la idea? Muchas gracias!!!!

darío

  • Sr. Member
  • ****
  • Mensajes: 454
  • Karma: 48
Re:Cambiar colores de una imagen
« Respuesta #1 en: Noviembre 25, 2018, 11:17:39 am »
Si tu archivo FPG es de 8 bits, puedes cambiar los colores de la paleta desde BennuGD usando color_set:

http://wiki.bennugd.org/index.php?title=Pal_set
Si lo que quieres es tener varios FPG con distintas paletas, Smart FPG Editor también te permite hacer esas modificationes (video: https://www.youtube.com/watch?v=Flv-RiA-7DM)

https://bitbucket.org/dacucar/smart-fpg-editor/src/master/
My sites:
Smart Fpg Editor - Painless FPG Edition for Bennu and PixTudio
fenixlib - .NET support for manipulating PixTudio, Bennu and Div graphic formats

panreyes

  • Administrator
  • *****
  • Mensajes: 2183
  • Karma: 74
    • panreyes.com
Re:Cambiar colores de una imagen
« Respuesta #2 en: Noviembre 25, 2018, 10:00:26 pm »
Si trabajas en 16 o 32 bits, puedes usar rgb_scale y esta función:
Código: [Seleccionar]
Function colorea_fpg(file, float r, float g, float b);
Private
new_file;
i;
Begin
new_file=fpg_new();
from i=1 to 999;
if(map_exists(file,i))
fpg_add(new_file,i,file,i);
rgbscale(new_file,i,r,g,b);
end
end
return new_file;
End

Gabysantof

  • Newbie
  • *
  • Mensajes: 6
  • Karma: 0
Re:Cambiar colores de una imagen
« Respuesta #3 en: Noviembre 26, 2018, 02:32:31 am »
Muchas gracias! estoy tratando de usar la función... pero algo debo estar haciendo mal, estoy tratando de hacer una prueba dibujando la misma imagen, una vez sin "colorear" y luego "coloreada", pero se me muestra exactamente igual. Dejo el código
Para esta prueba estoy usando un fpg de 1 sola imagen de 32bits. Lo dejo adjunto!
Muchísimas gracias por la ayuda!

IMPORT "mod_say";
IMPORT "mod_debug";
IMPORT "mod_map";
IMPORT "mod_effects";
IMPORT "mod_proc";
IMPORT "mod_grproc";
IMPORT "mod_map";
IMPORT "mod_key";
IMPORT "mod_video";
IMPORT "mod_screen";

global
 

fichero;
fichero2;
end;
process main()
begin
 

  set_mode(1024,768,32);                      
  Set_fps(55,1);
 
  fichero = load_fpg("main.fpg");
  fichero2= colorea_fpg(fichero,0.3,0.59,0.11);
 
  graficar(fichero,100,100);   
  graficar(fichero2,300,300);   
  loop
    frame;   
  end 
 
end;


process graficar(paramfichero,x,y)
begin
FILE = paramFichero;
graph = 1;
loop   
   frame;
end
end

function colorea_fpg(file, float r, float g, float b);
private
   new_file;
   i;
begin
   new_file=fpg_new();
   from i=1 to 999;
      if(map_exists(file,i))
         fpg_add(new_file,i,file,i);
         rgbscale(new_file,i,r,g,b);
      end
   end
   return new_file;
end

panreyes

  • Administrator
  • *****
  • Mensajes: 2183
  • Karma: 74
    • panreyes.com
Re:Cambiar colores de una imagen
« Respuesta #4 en: Noviembre 26, 2018, 10:19:59 am »
Creo que tendrás que poner la función antes que la llamada a la función para que te funcionen bien los floats :)

Gabysantof

  • Newbie
  • *
  • Mensajes: 6
  • Karma: 0
Re:Cambiar colores de una imagen
« Respuesta #5 en: Noviembre 29, 2018, 01:53:34 pm »
Finalmente lo hice funcionar. No funciona con imágenes de 32 bits de profundidad. Lo pase a 16 y funcionó ok!