Efectos visuales

Started by Yawin, January 18, 2011, 06:31:07 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Yawin

Bueno, gracias a que estoy haciendo una demo, estoy empezando a cojerle práctica a todo lo que son efectos visuales, cosenos, senos (ojalá que fuesen físicos), etc...

Por eso, abro este post para ir poniendoos animaciones y efectos que haga. Si vosotros habéis hecho alguna ponedla.

Empiezo enseñándoos lo último que he hecho. Espirales.


Mover el proceso en una trayectoria espiral:

process espiral()
private
float fi,ro;
float py=3.1416; //Número Pi
int eq=0; //La X alrededor de la cual quieres que trace la espiral.
int yi=0;  //La Y alrededor quieres que trace la espiral.
int tipo; //Tipo 0 hace que la espiral se vaya haciendo más grande y tipo 1 hace que la espiral se vaya haciendo más pequeña. Si no se pone límite, cuando fi sea negativo irá haciendose más grande.
end
begin
file=fpgs[0];
graph=1;

fi=1000000; //Este es el ángulo. Cuanto más alejado de 0 (tanto por arriba como por abajo), más lejos del centro.

loop
ro=(fi*py)/180000; //Calculamos Ro (Que es la distancia entre el centro de la espiral y el punto)

x=ro*cos(fi)+eq; //Como ro*cos(fi) saca la x teniendo el centro de la espiral en el origen de coordenadas, sumamos eq al resultado para que se pinte según el centro de espiral que hemos decidido
y=ro*sin(fi)+yi; //Lo mismo que el anterior

if(x<-10 || x>650 || y<-1 || y>650)
break;
end

frame(10);

if(tipo==0)
fi+=incre;
else
fi-=incre;
end
end
end



Pintar una espiral con Map_put_pixel:

process espiral()
private
float fi,ro;
float py=3.1416;
int eq=0;
int yi=0;
int map;
end
begin
map = new_map(640,480,16);
map_clear(0,map,rgb(0,0,0));

fi=1000000; //Este es el ángulo. Cuanto más alejado de 0 (tanto por arriba como por abajo), más lejos del centro.

loop
ro=(fi*py)/180000; //Calculamos Ro (Que es la distancia entre el centro de la espiral y el punto)

x=ro*cos(fi)+eq; //Como ro*cos(fi) saca la x teniendo el centro de la espiral en el origen de coordenadas, sumamos eq al resultado para que se pinte según el centro de espiral que hemos decidido
y=ro*sin(fi)+yi; //Lo mismo que el anterior

pixels(x,y,map,rgb(255,0,0));
if(x<-10 || x>650 || y<-1 || y>650 || fi==0)
break;
end

// Puts the map in the center of the screen
put(0,map,320,240);

frame(10);

if(tipo==0)
fi+=incre;
else
fi-=incre;
end
end
end

process pixels(x,y,int map,int color)
private
int i;
end
begin

map_put_pixel(0,map,x,y,color);
for(i=0;i<120;i++)
frame;
end
map_put_pixel(0,map,x,y,rgb(0,0,0));

end


Espero que os resulten útiles o, al menos, interesantes.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Fede

Je, je. Karma.

Me los quedo para la colección.  ;D

Me rio porque me da la impresión de que bennu no estaba pensado para esto. Así que no sé como andará de potencia matemática.

Y porque la nueva hornada utilizamos bennu para cualquier cosa.  :D

¡Al ataqueeeeerrrrrrr! (Famoso humorista español, Chiquito de la calzada).  ;D
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Yawin

Pues debería, al fin y al cabo, mítico videojuego en el que el texto de inicio entra con un efecto de espiral...

jajaja
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Fede

Jua, jua. Si es el que pienso, si, pero despacito.  ;D
Si quieres ser sabio, aprende a interrogar razonablemente, a escuchar con atención, a responder serenamente y a callar cuando no tengas nada que decir.

Yawin

Nah, el efecto de la trayectoria va rapido, el de pintar es el que igual no va tan rapido como gustaría
xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

josebita

Yawin, ¿por qué no subes alguno de estos ejemplos a la página de map_put_pixel de la wiki? Me imagino que será útil.

Yawin

Porque no se escribir en wikis. Prefiero dejaros a vosotros ese trabajo xD
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Yawin

#7
¡Juer, tengo esto más abandonao que yo que se!


Bueno, os traigo un nuevo efecto recien salido de mi horno. Lo más posible es que se le puedan mejorar los fps, pero lo hice ayer a las 3 de la mañana y no estaba el horno para bollos xDD


Demonstruación:
http://www.youtube.com/watch?v=6u4Isy86ZMI


Códigos, códigos, códigos:
function presentacion()
   public
      int i,j,iy,eq,aux;
   end
   begin
     
      fade(0,0,0,100);
      while(fading)
         frame;
      end
      screen_put(fpgs,1);
      fade(100,100,100,1);
      while(fading)
         frame;
      end
      for(i=0;i<120;i++)
         frame;
      end
      fade(0,0,0,1);
      while(fading)
         frame;
      end
      clear_screen();
      fade(100,100,100,64);
     
      eq=100;
      iy=195;
     
      set_fps(120,1);
      mostrar=true;
      for(i=0;i<81;i++)
         for(j=0;j<487;j++)
            if(map_get_pixel(fpgs,2,j,i)==map_get_pixel(fpgs,3,0,0))
               switch(rand(1,4))
                  case 1:
                     aux=rand(0,480);
                     punto(-1,aux,eq,iy);
                  end
                  case 2:
                     aux=rand(0,640);
                     punto(aux,-1,eq,iy);
                  end
                  case 3:
                     aux=rand(0,480);
                     punto(641,aux,eq,iy);
                  end
                  case 4:
                     aux=rand(0,640);
                     punto(aux,481,eq,iy);
                  end
               end
            end
            eq++;
         end
         eq=100;
         iy++;
      end
      for(i=0;i<340;i++)
         frame;
      end
      mostrar=false;
      set_fps(60,1);
   end
   
process punto(int x, int y, int eq, int iy)
   private
      int aux,i;
   end
   begin
      graph=new_map(1,1,32);
      map_put_pixel(0,graph,0,0,map_get_pixel(fpgs,3,0,0));
     
      repeat
         if(x<eq)
            x++;
         end
         if(eq<x)
            x--;
         end
         if(y<iy)
            y++;
         end
         if(iy<y)
            y--;
         end
         
         frame;
         
         for(i=0;i<rand(1,3);i++)
            if(x<eq)
               x++;
            end
            if(eq<x)
               x--;
            end
         end
         for(i=0;i<rand(0,3);i++)
            if(y<iy)
               y++;
            end
            if(iy<y)
               y--;
            end
         end
      until(mostrar!=true)
   end



La idea es, nuestro juego llama a la función "presentación". Cuando esta acaba, hace un let_me_alone() y a otra cosa mariposa.
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

FreeYourMind

Muy guapo, pero un pelin lento, que PC tienes ?

Yawin

Mi ordenador es una mierda así de grande: <-------------------------------------------------------------------->
xDD Ya he dichoq ue se podría mejorar. En cuanto pueda os pondré un nuevo efecto. Forma parte de una dmeo que estoy haciendo. Esta:
http://www.youtube.com/watch?v=3m4Z-CBNgWs
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

SplinterGU

hace las particulas mas grandes... 2x2 o 4x4.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

Yawin

Esque entonces el logo no queda tan nítido. Ya lo había pensado
Sigue el desarrollo de mi motor RPG: https://www.youtube.com/watch?v=TbsDq3RHU7g

process main()
       begin
           loop
               pedo();
               frame;
            end
       end

Prg

vi el video de youtube. Me encantó. Cuando tenga un poco de tiempo libre me estudiaré el efecto. Saludos y karma++
en humos puedes mover la camara con los cursores. es necesario para los niveles a partir del dos :)

SplinterGU

Quote from: Yawin on November 13, 2011, 05:04:04 PM
Esque entonces el logo no queda tan nítido. Ya lo había pensado

si puede quedar nitido, fijate que yo puse un efecto que componia una pantalla completa moviendo bloques de pixels por toda la pantalla, o sea, 4x4, pero no 1 pixel, sino 4x4 pixels de la imagen...

es mas, lo puse como libreria .dcl... busca dcl en el foro, no hay mucho de eso.
Download Lastest BennuGD Release: http://www.bennugd.org/node/2

SplinterGU

pues no lo encuentro ni yo... pero la idea es que cada pixel sea en realidad un bloque de pixels
Download Lastest BennuGD Release: http://www.bennugd.org/node/2