Estamos aqui discutiendo como hacer un proceso sombra...
De esto hable hace un tiempo pero no consigo encontrar el post, sorry.
Bueno, la idea es poder aplicar una sombra a cualquier proceso (imagen o animacion), por ejemplo a un personaje, un arbol o un arbusto.
La cuestión es que hemos pensado en hacer un clon del proceso y aplicarle efectos.
La cuestión es que el proceso original será 32bits, la sombra en 16bits...para eso tenemos un codigo de Prg que lo hace.
Ahora se plantea el problema aplicarle el angulo y lo chungo, ponerla en negro y luego el alpha.
¿Se puede hacer y que rinda bien?
Es que otra opción es hacer fpgs a 8 bits y ya esta, pero no es lo mismo...
Un saludo!
Para lo de ponerla en negro y el alfa podeis usar la mod_effects.
Yo para mi karaoke creé una rutina que hace una sombra de 32 bits en la que el alfa va aumentando, igual os vale pra algo:
http://code.google.com/p/bennugd-karaoke/source/browse/trunk/inc/misc.inc#353
Aunque claro, mis reflejos no eran dinámicos...
para la forma del clon podeis probar a hacer un size_y=10 y size_x=110 por ejemplo xD a ver q sale xD
Hola PeterPollito, yo hice una sombra que aplico a todos los procesos que se muevan (por el momento) por ejemplo, personajes y enemigos. Te paso el codigo:
[/code]
// este proceso lo que hace es agregarse a todo proceso que se mueva, por ejemplo prota
// para luego generar a partir del graph del padre (el que lo llama) una sombra que
// lo sigue a todos lados, porque eso es lo que las sombras hacen ¿no? XD
// el único parámetro que necesita es el archivo del proceso que lo invoca
Process Sombra(file)
Private
int x_objetivo;
int y_objetivo;
int ancho_mapa,alto_mapa;
End
Begin
region=0;
ctype=c_scroll;
z=father.z+1;
alpha=120;
Repeat
graph=map_clone(file,father.graph);
ancho_mapa=map_info(file,graph,g_width);
alto_mapa=map_info(file,graph,g_height);
For(x_objetivo=0;x_objetivo <= ancho_mapa;x_objetivo++)
For(y_objetivo=0;y_objetivo <= alto_mapa;y_objetivo++)
If(Map_get_pixel(file,graph,x_objetivo,y_objetivo) <> rgba(0,0,0,0))
Map_put_pixel(file,graph,x_objetivo,y_objetivo,rgba(1,1,1,255));
End
End
End
angle=father.angle;
x=father.x-5;
y=father.y;
Frame;
Until(not(exists(father)))
End
Lo que hice en una version mas avanzada del programa (que tengo en la netbook!!) es: que a la x del proceso se le resta una cantidad distinta, segun de donde venga el sol hipotetico del escenario, entonces, se hace un switch, y se define una variable cuando se lo llama al proceso, con una constante que sea: mañana - tarde - noche. Segun cada constante se le va a indicar cuanto restar de x o de y, etc. Y tambien hice un par de cosas para convertir el angulo a valores entre 0 y 360, el viernes si puedo te lo subo, obvio, si es que te interesa! saludos!
El ángulo, quieres decir hacer que se incline ¿no? eso me temo que tendrías que copiar el mapa línea por línea. Lo de Alpha está claro.
Lo de ponerlo en color negro, no se si RGBSCALE puede servirte para lo que necesitas, he experimentado demasiado poco con ella para decirte si te vale o no.
Yo también pensaba que rgbscale podía ser la solución, pero creo que no va en 32 bits...igual no la he usado bien y metí la pata en algo, pero probe a 16 y ahi si funcionaba.
si va en 32 bits... (en la ultima version)
Genial! ;D
Pero acabo de probar otra vez bajando los últimos binarios para windows y no va, quizá los de la última versión aun no estan compilados para Windows?
(La versión que bajé dice RC27(r270), no se si es realmente la última)
es esa, y si estan...
pone el ejemplo que decis no te funciona.
Aqui va, son dos prgs practicamente idénticos, la única diferencia es que uno hace el set_mode en 32 bits y carga un fpg de 32 bits, y el otro lo hace todo en 16.
Le hago un rgbscale (Oscurecer a la mitad) al gráfico del ratón y en 16 funciona, pero en 32 no...
(He probado por curiosidad, a hacer el rgbscale en modo 32 bits pero con un gráfico en 16...modifica la imágen, pero de forma incorrecta, los colores salen como corruptos)
pues a mi me funciona perfecto...
voy a probar con la version windows, pero la version linux va de perlas.
en windows no funciona, voy a regenerar, quizas empaquete los binarios viejos... diablos!
edit: es correcto, empaquetado erroneo... diablos!
(http://www.everydaynodaysoff.com/wp-content/uploads/2009/12/HomerFacePalm.jpg)
subiendo binarios correctos... habia armado el paquete con los binarios viejos... incluso creo que la version anterior tampoco era nueva, era anterior a la anterior...
ninguna de las release con crosscompiler salieron... :(
gracias momia, por avisar del fallo.
Me alegro de haber ayudado :)
probalo y decime como funciona.
Bueno, ya le conte a splinter por messenger y me olvidé de este hilo, pero para el que le interesé saberlo, ahora ya funciona de lujo también en windows :P
weeeeeeeeeeeeeeeeeeeeee
La sombra dinamica va como queremos pero al aplicarle
el blur ninguna de las opciones difumina el objeto hacia afuera, solo
hacia adentro y nos gustaria difuminar los bordes de sierra.
Splinter, ¿Se puede añadir esa opcion sin mucho dolor de cabeza
para hacerlo o costaria mucho?
Un saludo
imagino que hablas de 32 bits...
el tema es que estas funciones fueron pensadas para 16 bits, donde no hay alpha... por ende no se puede difumar un alfa que no existe...
y con filter?
igual lo agrego a pendientes, ahora mismo estoy con el manejador de errores para atrapar division por cero, segment violation y todos los errores de este estilo que se puedan atrapar.
Quote from: SplinterGU on December 02, 2011, 01:44:37 PMy con filter?
Como funciona? Aun no esta documentado en la wiki...
terminado. cerramos hilo
me alegro...
Queda muy bien. Gracias a todos por la colaboración especialmente a Splinter por su ayuda y su paciencia. Karma++
de nada, un placer...