Bennu Game Development

Foros en Español => Mesa de Ayuda => Topic started by: fulgorelizz on February 06, 2013, 05:43:53 PM

Title: hacer efecto diluir
Post by: fulgorelizz on February 06, 2013, 05:43:53 PM
 8) hola hola!! soy yo nuevamente, esta vez con una duda, intenté hacer un efecto diluir o desaparicion de una imagen pixel por pixel, use map_clone, lo asigne a graph del proceso y excelente, lo puedo visualizar en pantalla pero cuando intento modificarlo con map_put_pixel no veo cambios xD ni del pixeles mas oscuros ni mas claros , inclusive usando un solo color no logré hacer la imagen monocromatica, estoy trabajando a 32bits!! será por eso?? alguien que me explique! la verdad ni idea xD  ;D
Title: Re:hacer efecto diluir
Post by: KeoH on February 06, 2013, 06:35:28 PM
homme .. asi a bote pronto sin ver el codigo ni idea xDDD
Title: Re:hacer efecto diluir
Post by: fulgorelizz on February 06, 2013, 08:25:34 PM
Quote from: KeoH on February 06, 2013, 06:35:28 PM
homme .. asi a bote pronto sin ver el codigo ni idea xDDD

bueh!! veamos si recuerdo un poco la logica del codigo ... tomando en cuenta que en 32bits map_get_pixel me retorna valores <0 en donde -1 es negro, ahi voy


process desintegrar(file,graph,x,y)
private
int newgraph,minx,miny,maxx,maxy,ancho,alto,pixx,pixy;
begin

newgraph=map_clone(file,graph);//capturo el grafico que en el momento tenga el proceso padre
ancho=graphic_info(file,newgraph,g_width);
alto=graphic_info(file,newgraph,g_height);
minx=x-(ancho/2);//conocer lado derecho del grafico
maxx=x+(ancho/2);//lado derecho de la imagen
miny=y-(alto/2);//conocer superior del grafico
maxy=y+(alto/2);//lado inferior de la imagen

for(pixx=minx;pixx<maxx;pixx++)

for(pixy=miny;pixy<maxy;pixy++)

if(abs(map_get_pixel(file,newgraph,pixx,pixy))>0) //si el valor absoluto mayor a cero
map_put_pixel(file,newgraph,pixx,pixy,-1);//pongo un punto negro
end //fin if

frame;//
end //fin for pixy
frame;//
end //fin for pixx

end//fin inicio


si no mas recuerdo asi es el codigo, claro fue una prueba a ver si lo lograba y en base a eso inventar nuevos efectos pixelados!! pero nah xD
Title: Re:hacer efecto diluir
Post by: alex on February 06, 2013, 09:35:59 PM
una cosa, si no te has equivocado en los bucles ni en calcular los valores con alto y ancho y eso... puedes probar en vez de a poner menos uno o a calcular de esa manera, con rgba() o rgb()

Asi sabes si el fallo no essta en el menos uno... ahora pruebo a razonar tus operaciones, que estoy verde en mates xD

pd: ademas, no le veo sentido, porque a ti te puede funcionar el codigo como tu quieres xD, pero a otro no.
Title: Re:hacer efecto diluir
Post by: fulgorelizz on February 06, 2013, 09:47:37 PM
Quote from: alex on February 06, 2013, 09:35:59 PM
una cosa, si no te has equivocado en los bucles ni en calcular los valores con alto y ancho y eso... puedes probar en vez de a poner menos uno o a calcular de esa manera, con rgba() o rgb()

Asi sabes si el fallo no essta en el menos uno... ahora pruebo a razonar tus operaciones, que estoy verde en mates xD

pd: ademas, no le veo sentido, porque a ti te puede funcionar el codigo como tu quieres xD, pero a otro no.

niceee!! de hecho acabo de consultar la wiki , y sale que tambien puedes colocarte el parametro depth  para saber si la operacion es a 32bits o 16 *o* hare pruebas con esa funcion!! si me sale algo bueno lo traigo para aca con esa funcion put pixel pueden hacerse muchisimas cosas, efectos de agua etc!! thank you!!  8) :P
Title: Re:hacer efecto diluir
Post by: alex on February 06, 2013, 09:57:23 PM
seria algo como:
......
if( not( map_get_pixel(file,newgraph,pixx,pixy) == rgba(0,0,0,255) ) //si el valor absoluto mayor a cero
map_put_pixel(file,newgraph,pixx,pixy,rgba(0,0,0,255));//pongo un punto negro
end //fin if
.......


rgba() 1 valor de rojo, 2 valor de verde, 3 valor de azul, 4 valor de alfa (transparente==0, opaco==255). Todos de 0 a 255 el valor.
La funcion no se como va o si no existe en 16 bits. Solo he hecho pruebas con ella en 32 bits xD.

PD: te he puesto un igual a negro, porque lo que calculo es si eso no es verdad... Mas negro que el negro no hay nah xD.
Title: Re:hacer efecto diluir
Post by: SplinterGU on February 06, 2013, 09:59:17 PM
nop, en 32bits debes asignar el valor a una variable usigned int... -1 es todo blanco, 0 es transparente, 1 o 2 o 3 es negro...  (en realidad es transparente, ya que esos valores tienen alpha a 0)

si quieres ir diluyendo un grafico de 32bits, toca su alpha.
Title: Re:hacer efecto diluir
Post by: fulgorelizz on February 06, 2013, 10:34:33 PM
mmmmm!!! bueno lo de los numero negativos lo note en estos dias que estaba usando el codigo de gravedad ,use mapas de durezas con pisos en color rgba 255,0,0 guardadis en bmp 24bits porque el de 32bits el fpg me sale en blanco jejeje asi que use el bmp en 24bits, y cuando estaba haciendo la lectura de colores map_get_pixel me arrojaba -65536 en el caso del rojo 255,0,0 . acabo de hacer la prueba con la gravedad usando rgba y la prueba fue fallida!! haciendo la prueba sobre la gravedad, aun no hago la prueba sobre el grafico de desintegracion!!  8)
Title: Re:hacer efecto diluir
Post by: fulgorelizz on February 07, 2013, 11:59:38 AM
 :o pensando creo que he dado en el punto, estoy trabajando con scroll, y estoy colocando los pixeles en puntos relativos a la posicion del objeto en el scroll, por lo que supongo ahora que jamas escribira pixelees sobre la imagen, si es map_put_pixel, el pixel 1 siempre sera 1 sin importar donde este el grafico dentro del scroll, siendo su pincel de ancho el que obtengamos por graphic_info sin sumarle o restarle otra variable, ya que x y estan siendo controlados por ctype=c_scroll, entonces si mi grafico es ancho 100 alto 100 por ejemplo, al hacer calculos basados en la x controlada por c_scroll jamas pintare dentro del mapa temporal creado con map_clone!!...  ::) probare!! creo que estoy en lo correcto!!  ;D
Title: Re:hacer efecto diluir
Post by: fulgorelizz on February 07, 2013, 04:16:02 PM
he conseguido pintar exitosamente sobre el mapa temporal a 32bits, creo que podre hacer algo interesante :D luego les paso un codigo!! me reciente teoria fue acertada!! ... las coordenadas x,y de la funcion map_put_pixel van orientadas a los pixeles del mapa, es decir de 0 al ancho y de 0 al alto sin importar si se dibuja en scroll o screen  8)
Title: Re:hacer efecto diluir
Post by: SplinterGU on February 07, 2013, 04:26:11 PM
por eso se llama "map_*", disculpa que no te respondi antes, pero recien ahora con tu ultimo comentario entendi que querias decir... tu respuesta #8 no entendi nada que querias decir.
Title: Re:hacer efecto diluir
Post by: fulgorelizz on February 07, 2013, 04:31:23 PM
 :o jeje siip!! se me hizo confuso explicarme, pero a la final lo logre!!  ;D me estoy fumando ya una idea, esto me tiene contento!! ... luego voy por lo del scroll que comente en el otro hilo xD