hacer efecto diluir

Started by fulgorelizz, February 06, 2013, 05:43:53 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

fulgorelizz

 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
Compiling code -- generating exe...

KeoH

homme .. asi a bote pronto sin ver el codigo ni idea xDDD

fulgorelizz

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
Compiling code -- generating exe...

alex

#3
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.

fulgorelizz

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
Compiling code -- generating exe...

alex

#5
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.

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

fulgorelizz

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)
Compiling code -- generating exe...

fulgorelizz

 :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
Compiling code -- generating exe...

fulgorelizz

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)
Compiling code -- generating exe...

SplinterGU

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.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

fulgorelizz

 :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
Compiling code -- generating exe...